Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDabRenderingJobRunner Class Reference

#include <KisDabRenderingJob.h>

+ Inheritance diagram for KisDabRenderingJobRunner:

Public Member Functions

 KisDabRenderingJobRunner (KisDabRenderingJobSP job, KisDabRenderingQueue *parentQueue, KisRunnableStrokeJobsInterface *runnableJobsInterface)
 
void run () override
 
 ~KisDabRenderingJobRunner ()
 

Static Public Member Functions

static int executeOneJob (KisDabRenderingJob *job, KisDabCacheUtils::DabRenderingResources *resources, KisDabRenderingQueue *parentQueue)
 

Private Attributes

KisDabRenderingJobSP m_job
 
KisDabRenderingQueuem_parentQueue = 0
 
KisRunnableStrokeJobsInterfacem_runnableJobsInterface = 0
 

Detailed Description

Definition at line 58 of file KisDabRenderingJob.h.

Constructor & Destructor Documentation

◆ KisDabRenderingJobRunner()

KisDabRenderingJobRunner::KisDabRenderingJobRunner ( KisDabRenderingJobSP job,
KisDabRenderingQueue * parentQueue,
KisRunnableStrokeJobsInterface * runnableJobsInterface )

Definition at line 67 of file KisDabRenderingJob.cpp.

70 : m_job(job),
71 m_parentQueue(parentQueue),
72 m_runnableJobsInterface(runnableJobsInterface)
73{
74}
KisRunnableStrokeJobsInterface * m_runnableJobsInterface
KisDabRenderingQueue * m_parentQueue
KisDabRenderingJobSP m_job

◆ ~KisDabRenderingJobRunner()

KisDabRenderingJobRunner::~KisDabRenderingJobRunner ( )

Definition at line 76 of file KisDabRenderingJob.cpp.

77{
78}

Member Function Documentation

◆ executeOneJob()

int KisDabRenderingJobRunner::executeOneJob ( KisDabRenderingJob * job,
KisDabCacheUtils::DabRenderingResources * resources,
KisDabRenderingQueue * parentQueue )
static

Definition at line 80 of file KisDabRenderingJob.cpp.

83{
84 using namespace KisDabCacheUtils;
85
88
89 QElapsedTimer executionTime;
90 executionTime.start();
91
92 resources->syncResourcesToSeqNo(job->seqNo, job->generationInfo.info);
93
94 if (job->type == KisDabRenderingJob::Dab) {
95 // TODO: thing about better interface for the reverse queue link
96 job->originalDevice = parentQueue->fetchCachedPaintDevice();
97
98 generateDab(job->generationInfo, resources, &job->originalDevice);
99 }
100
101 // by now the original device should be already prepared
103
104 if (job->type == KisDabRenderingJob::Dab ||
106
108 // TODO: cache postprocessed device
109
110 if (!job->postprocessedDevice ||
112
113 job->postprocessedDevice = parentQueue->fetchCachedPaintDevice();
115 } else {
117 }
118
120 job->generationInfo.dstDabRect.topLeft(),
121 job->generationInfo.info,
122 resources);
123 } else {
125 }
126 }
127
128 return executionTime.nsecsElapsed() / 1000;
129}
KisFixedPaintDeviceSP postprocessedDevice
KisFixedPaintDeviceSP originalDevice
KisDabCacheUtils::DabGenerationInfo generationInfo
KisFixedPaintDeviceSP fetchCachedPaintDevice()
const KoColorSpace * colorSpace() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
void postProcessDab(KisFixedPaintDeviceSP dab, const QPoint &dabTopLeft, const KisPaintInformation &info, DabRenderingResources *resources)
void generateDab(const DabGenerationInfo &di, DabRenderingResources *resources, KisFixedPaintDeviceSP *dab, bool forceNormalizedRGBAImageStamp)
virtual void syncResourcesToSeqNo(int seqNo, const KisPaintInformation &info)

References KisFixedPaintDevice::colorSpace(), KisDabRenderingJob::Dab, KisDabCacheUtils::DabGenerationInfo::dstDabRect, KisDabRenderingQueue::fetchCachedPaintDevice(), KisDabRenderingJob::generationInfo, KisDabCacheUtils::DabGenerationInfo::info, KIS_SAFE_ASSERT_RECOVER_NOOP, KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, KisDabCacheUtils::DabGenerationInfo::needsPostprocessing, KisDabRenderingJob::originalDevice, KisDabRenderingJob::Postprocess, KisDabRenderingJob::postprocessedDevice, KisDabRenderingJob::seqNo, KisDabCacheUtils::DabRenderingResources::syncResourcesToSeqNo(), and KisDabRenderingJob::type.

◆ run()

void KisDabRenderingJobRunner::run ( )
override

Definition at line 131 of file KisDabRenderingJob.cpp.

132{
133 int executionTime = 0;
134
136
137 executionTime = executeOneJob(m_job.data(), resources, m_parentQueue);
139
140 while (!jobs.isEmpty()) {
142
143 // start all-but-the-first jobs asynchronously
144 for (int i = 1; i < jobs.size(); i++) {
145 dataList.append(new FreehandStrokeRunnableJobDataWithUpdate(
148 }
149
151
152
153 // execute the first job in the current thread
154 KisDabRenderingJobSP job = jobs.first();
155 executionTime = executeOneJob(job.data(), resources, m_parentQueue);
156 jobs = m_parentQueue->notifyJobFinished(job->seqNo, executionTime);
157 }
158
160}
static int executeOneJob(KisDabRenderingJob *job, KisDabCacheUtils::DabRenderingResources *resources, KisDabRenderingQueue *parentQueue)
KisDabRenderingJobRunner(KisDabRenderingJobSP job, KisDabRenderingQueue *parentQueue, KisRunnableStrokeJobsInterface *runnableJobsInterface)
KisDabCacheUtils::DabRenderingResources * fetchResourcesFromCache()
QList< KisDabRenderingJobSP > notifyJobFinished(int seqNo, int usecsTime=-1)
void putResourcesToCache(KisDabCacheUtils::DabRenderingResources *resources)
virtual void addRunnableJobs(const QVector< KisRunnableStrokeJobDataBase * > &list)=0

References KisRunnableStrokeJobsInterface::addRunnableJobs(), KisStrokeJobData::CONCURRENT, executeOneJob(), KisDabRenderingQueue::fetchResourcesFromCache(), KisDabRenderingJobRunner(), m_job, m_parentQueue, m_runnableJobsInterface, KisDabRenderingQueue::notifyJobFinished(), and KisDabRenderingQueue::putResourcesToCache().

Member Data Documentation

◆ m_job

KisDabRenderingJobSP KisDabRenderingJobRunner::m_job
private

Definition at line 71 of file KisDabRenderingJob.h.

◆ m_parentQueue

KisDabRenderingQueue* KisDabRenderingJobRunner::m_parentQueue = 0
private

Definition at line 72 of file KisDabRenderingJob.h.

◆ m_runnableJobsInterface

KisRunnableStrokeJobsInterface* KisDabRenderingJobRunner::m_runnableJobsInterface = 0
private

Definition at line 73 of file KisDabRenderingJob.h.


The documentation for this class was generated from the following files: