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

Dmitry Kazakov <dimul...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|CONFIRMED                   |RESOLVED
         Resolution|---                         |FIXED
      Latest Commit|                            |https://invent.kde.org/grap
                   |                            |hics/krita/commit/f3128cdb8
                   |                            |c6e50f92b5dc7599c4118c3660f
                   |                            |ced0

--- Comment #33 from Dmitry Kazakov <dimul...@gmail.com> ---
Git commit f3128cdb8c6e50f92b5dc7599c4118c3660fced0 by Dmitry Kazakov.
Committed on 19/11/2021 at 11:59.
Pushed by dkazakov into branch 'master'.

Fix random memory corruptions when manipulating layers too quickly

It turned out, when the user switches visibility of a layer,
the event loop can be entered recursively (due to KisBusyWaitBroker),
it could lead to memory corruptions due to the broken pointers
to KisNodeDummy stored in QModelIndex objects.

The problem is fixed by forcefully syncing the node manipulation
signals to non-recursive event processing using a new
KisSynchronizedConnection class. See documentation in it for details.

M  +1    -0    libs/global/CMakeLists.txt
A  +71   -0    libs/global/KisMpl.h     [License: GPL(v2.0+)]
A  +71   -0    libs/global/KisSynchronizedConnection.cpp     [License:
GPL(v2.0+)]
A  +214  -0    libs/global/KisSynchronizedConnection.h     [License:
GPL(v2.0+)]
M  +73   -1    libs/ui/KisApplication.cpp
M  +17   -12   libs/ui/flake/kis_dummies_facade_base.cpp
M  +0    -4    libs/ui/flake/kis_dummies_facade_base.h
M  +5    -1    libs/ui/kis_node_manager.cpp

https://invent.kde.org/graphics/krita/commit/f3128cdb8c6e50f92b5dc7599c4118c3660fced0

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

Reply via email to