Diffusion Krita 0f1a20d37035

Port KisBrushOp to use "mutated" and "uniquely concurrent" jobs

Authored by dkazakov on Oct 9 2017, 5:35 PM.

Description

Port KisBrushOp to use "mutated" and "uniquely concurrent" jobs

Now all the threading in KisBrushOp is done using strokes framework only,
therefore we can throttle CPU in a correct way.

The patch also includes:

  1. KisStrokeStrategy::balancingRatioOverride() can now override the global preferred queues balancing ratio. Basically, when the paintop supports async updates we set updates higher priority over brush jobs.
  1. KisPainter::runnableStrokeJobsInterface() now must hold a pointer to the currently preferred jobs execution engines.

    TODO: implement a fake default execution engine, tight now all the unittests will crash as soon as they try to paint with a paintop
  1. KisBrush::threadingAllowed() now tells if the brush is allowed to use internals multithreading with QtConcurrent. It is forbidden for the asynchronous paintops, because it saturates CPU cores with extra threads.

Details

Committed
dkazakovOct 9 2017, 5:35 PM
Parents
R37:fa8ba8220afd: Refactor addMutableJob() into addMutableJobs()
Branches
Unknown
Tags
Unknown