https://bugs.kde.org/show_bug.cgi?id=450957

Dmitry Kazakov <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
      Latest Commit|                            |https://invent.kde.org/grap
                   |                            |hics/krita/commit/2e9c60d35
                   |                            |aa02e0e4d5881ddbd6b64c94d76
                   |                            |2a35
         Resolution|---                         |FIXED

--- Comment #8 from Dmitry Kazakov <[email protected]> ---
Git commit 2e9c60d35aa02e0e4d5881ddbd6b64c94d762a35 by Dmitry Kazakov.
Committed on 10/03/2022 at 16:09.
Pushed by dkazakov into branch 'master'.

Fix threading issues in the scheduler when manipulating layers

After several iterations of changes to KisNode::changeRect() definition,
KisBaseRectsWalker::changeRect() now means **not** the rect of the canvas
that is changed by the walker on any layer, but only a rect that will be
changed in the end of the merge operation. It means that two merge
operations may still overlap on the intermediate layers if the layer
stack has nodes with weird change/needRect(). And that can cause
breakage of the tile manager's invariants, because two threads would
write into overlapping areas.

This patch fixes it in a suboptimal approach. Now the scheduler just checks
if accessRect of the walkers intersect. That means that the scheduler
now also blocks walkers with overlapping **read** rects, which are totally
legal.

M  +7    -2    libs/image/kis_updater_context.cpp

https://invent.kde.org/graphics/krita/commit/2e9c60d35aa02e0e4d5881ddbd6b64c94d762a35

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to