12#include <boost/none.hpp>
47 m_d->idleWatcher.setTrackedImage(image);
53 m_d->idleWatcher.triggerCountdownNoDelay();
65 !
m_d->tasks.isEmpty() ?
66 m_d->tasks.last().id + 1 : 0;
68 m_d->tasks.append({newId, factory});
77 auto it = std::remove_if(
m_d->tasks.begin(),
m_d->tasks.end(),
80 m_d->tasks.erase(it,
m_d->tasks.end());
84 auto it = std::remove(
m_d->queue.begin(),
m_d->queue.end(),
id);
85 m_d->queue.erase(it,
m_d->queue.end());
93 auto it = std::find_if(
m_d->tasks.begin(),
m_d->tasks.end(),
98 auto it = std::find(
m_d->queue.begin(),
m_d->queue.end(),
id);
99 if (it ==
m_d->queue.end()) {
100 m_d->queue.enqueue(
id);
103 m_d->idleWatcher.triggerCountdownNoDelay();
115 m_d->queue.reserve(
m_d->tasks.size());
116 std::transform(
m_d->tasks.begin(),
m_d->tasks.end(),
117 std::back_inserter(
m_d->queue),
118 std::mem_fn(&TaskStruct::id));
126 if (
m_d->currentTaskCookie) {
127 m_d->idleWatcher.restartCountdown();
131 if (
m_d->queue.isEmpty())
return;
133 const int newTaskId =
m_d->queue.dequeue();
135 auto it = std::find_if(
m_d->tasks.begin(),
m_d->tasks.end(),
150 if (
m_d->queue.isEmpty()) {
153 if (
m_d->idleWatcher.isIdle()) {
155 }
else if (!
m_d->idleWatcher.isCounting()) {
156 m_d->idleWatcher.restartCountdown();
std::function< KisIdleTaskStrokeStrategy *(KisImageSP image)> KisIdleTaskStrokeStrategyFactory
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QWeakPointer< boost::none_t > idleTaskCookie()
int addIdleTask(KisIdleTaskStrokeStrategyFactory factory)
void triggerIdleTask(int id)
void slotImageIsModified()
void setImage(KisImageSP image)
QScopedPointer< Private > m_d
TaskGuard addIdleTaskWithGuard(KisIdleTaskStrokeStrategyFactory factory)
Registers the factory for the idle task.
void removeIdleTask(int id)
void slotTaskIsCompleted()
KisStrokeId startStroke(KisStrokeStrategy *strokeStrategy) override
void endStroke(KisStrokeId id) override
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
auto mem_equal_to(MemTypeNoRef Class::*ptr, MemType &&value)
mem_equal_to is an unary functor that compares a member of the object to a given value
QVector< TaskStruct > tasks
KisIdleWatcher idleWatcher
QWeakPointer< boost::none_t > currentTaskCookie