https://bugs.kde.org/show_bug.cgi?id=384441
Martin Flöser <mgraess...@kde.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Latest Commit| |https://commits.kde.org/kwi | |n/e0f95fd913b6e7c9106ca153c | |0dd1e3d46c9e297 Resolution|--- |FIXED --- Comment #2 from Martin Flöser <mgraess...@kde.org> --- Git commit e0f95fd913b6e7c9106ca153c0dd1e3d46c9e297 by Martin Flöser. Committed on 07/09/2017 at 17:06. Pushed by graesslin into branch 'master'. Delay syncing internal window geometry to end of cycle Summary: The syncing of the window geometry to the internal geometry can unfortunately cause a freeze in very special conditions: 1. create QML component 2. a Plasma::Dialog gets created 3. It creates the DialogShadows 4. This triggers QGlobalStatic creation which locks a non-recursive mutex 5. The creation of DialogShadows creates a Registry and triggers a roundtrip on the Wayland server 6. KWin processes all Wayland events 7. This triggers the creation of a ShellClient 8. The ShellClient has a PlasmaShellSurface which requested a position 9. The new geometry does not match the geometry of the Plasma::Dialog 10. ShellClient syncs the geometry to the Plasma::Dialog 11. Plasma::Dialog updates the theme because window geometry changed 12. This accesses the DialogShadows... which is still in the non recursive mutex and we have a freeze. By delaying the sync to the end of cycle we jump out of this deadly sequence. Test Plan: The freeze doesn't hit any more. It's possible that some test cases need adjustments. Reviewers: #kwin, #plasma Subscribers: plasma-devel, kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D7712 M +3 -3 autotests/integration/internal_window.cpp M +2 -1 shell_client.cpp https://commits.kde.org/kwin/e0f95fd913b6e7c9106ca153c0dd1e3d46c9e297 -- You are receiving this mail because: You are watching all bug changes.