[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kwin] /: Emit Workspace::deletedRemoved for every Deleted still around when terminating Workspace
From:       Martin_Gräßlin <mgraesslin () kde ! org>
Date:       2016-08-19 7:18:59
Message-ID: E1bae4x-0001lP-Om () code ! kde ! org
[Download RAW message or body]

Git commit 2ab8a7b80acdd6861730baa209fa9f2bec808691 by Martin Gräßlin.
Committed on 19/08/2016 at 07:15.
Pushed by graesslin into branch 'master'.

Emit Workspace::deletedRemoved for every Deleted still around when terminating Workspace

For the exit-with-session option in kwin_wayland there is a chance that
the window which triggered termination is currently a Deleted. The
Wayland shutdown sequence terminates Workspace before the Compositor
which results in that Deleted's Scene::Window surviving the shutdown
process and thus the Shadow not being removed from the cache. This
makes KWin assert very late in the shutdown process when the decoration
shadow cache gets destroyed.

M  +5    -0    workspace.cpp

http://commits.kde.org/kwin/2ab8a7b80acdd6861730baa209fa9f2bec808691

diff --git a/workspace.cpp b/workspace.cpp
index c62d073..2cc43a5 100644
--- a/workspace.cpp
+++ b/workspace.cpp
@@ -470,6 +470,11 @@ Workspace::~Workspace()
         (*it)->release(ReleaseReason::KWinShutsDown);
     xcb_delete_property(connection(), rootWindow(), atoms->kwin_running);
 
+    for (auto it = deleted.begin(); it != deleted.end();) {
+        emit deletedRemoved(*it);
+        it = deleted.erase(it);
+    }
+
     delete RuleBook::self();
     kwinApp()->config()->sync();
 

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic