7#ifndef __KIS_UPDATE_SCHEDULER_H
8#define __KIS_UPDATE_SCHEDULER_H
11#include "kritaimage_export.h"
38 void setThreadsLimit(
int value);
43 int threadsLimit()
const;
63 void immediateLockForReadOnly();
70 void unlock(
bool resetLodLevels =
true);
100 bool tryBarrierLock();
126 void unblockUpdates();
128 void updateProjection(
KisNodeSP node,
const QVector<QRect> &rects,
const QRect &cropRect, KisProjectionUpdateFlags flags);
129 void fullRefreshAsync(
KisNodeSP root,
const QVector<QRect>& rects,
const QRect &cropRect, KisProjectionUpdateFlags flags);
132 void updateProjection(
KisNodeSP node,
const QRect &rc,
const QRect &cropRect);
135 void fullRefreshAsync(
KisNodeSP root,
const QRect &rc,
const QRect &cropRect);
139 bool hasUpdatesRunning()
const;
164 void explicitRegenerateLevelOfDetail();
185 void setPurgeRedoStateCallback(
const std::function<
void()> &callback);
195 void setPostSyncLod0GUIPlaneRequestForResumeCallback(
const std::function<
void()> &callback);
212 bool tryCancelCurrentStrokeAsync();
216 bool wrapAroundModeSupported()
const;
217 int currentLevelOfDetail()
const;
219 void continueUpdate(
const QRect &
rect);
220 void doSomeUsefulWork();
221 void spareThreadAppeared();
226 void connectSignals();
227 void processQueues();
233 void updateSettings();
236 friend class UpdatesBlockTester;
237 bool haveUpdatesRunning();
238 void tryProcessUpdatesQueue();
239 void wakeUpWaitingThreads();
241 void progressUpdate();
float value(const T *src, size_t ch)
virtual KisStrokeId startStroke(KisStrokeStrategy *strokeStrategy)=0
virtual void endStroke(KisStrokeId id)=0
virtual void addJob(KisStrokeId id, KisStrokeJobData *data)=0
virtual bool cancelStroke(KisStrokeId id)=0
std::function< std::pair< KisSuspendResumePair, KisSuspendResumePair >()> KisSuspendResumeStrategyPairFactory
std::function< KisLodSyncPair(bool)> KisLodSyncStrokeStrategyFactory