Skip to content
  • Dmitry Kazakov's avatar
    Port KisBrushOp to use "mutated" and "uniquely concurrent" jobs · 0f1a20d3
    Dmitry Kazakov authored
    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.
    
    2) 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
    
    3) 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.
    0f1a20d3