aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Kinnunen <fluxgen at fluxbox dot org>2011-02-23 06:38:45 (GMT)
committerHenrik Kinnunen <fluxgen at fluxbox dot org>2011-02-23 06:38:45 (GMT)
commitbb3f955e0f4959dc66bee8c27e3b15b399c6a845 (patch)
tree48717774bad99ec26dc5e88011bf7c9f65c1995c
parentbf9fb893daa0963694fee27cea60021dcf364f24 (diff)
downloadfluxbox-bb3f955e0f4959dc66bee8c27e3b15b399c6a845.zip
fluxbox-bb3f955e0f4959dc66bee8c27e3b15b399c6a845.tar.bz2
Fixed possible crash issue when getting an unmap before a focus in event.
The issue was caused by a client that got an unmap notify and had a FocusIn event directly after in the event queue. The focus in event was handled by Fluxbox::revertFocus before the WinClient.cc removed itself from the search window list.
-rw-r--r--src/WinClient.cc7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/WinClient.cc b/src/WinClient.cc
index 33d9fb4..4ef37ae 100644
--- a/src/WinClient.cc
+++ b/src/WinClient.cc
@@ -129,6 +129,9 @@ WinClient::~WinClient() {
129 fbdbg<<__FILE__<<"(~"<<__FUNCTION__<<")[this="<<this<<"]"<<endl; 129 fbdbg<<__FILE__<<"(~"<<__FUNCTION__<<")[this="<<this<<"]"<<endl;
130 130
131 FbTk::EventManager::instance()->remove(window()); 131 FbTk::EventManager::instance()->remove(window());
132 Fluxbox *fluxbox = Fluxbox::instance();
133 if (window())
134 fluxbox->removeWindowSearch(window());
132 135
133 clearStrut(); 136 clearStrut();
134 137
@@ -160,8 +163,6 @@ WinClient::~WinClient() {
160 removeTransientFromWaitingList(); 163 removeTransientFromWaitingList();
161 s_transient_wait.erase(window()); 164 s_transient_wait.erase(window());
162 165
163 Fluxbox *fluxbox = Fluxbox::instance();
164
165 if (window_group != 0) { 166 if (window_group != 0) {
166 fluxbox->removeGroupSearch(window_group); 167 fluxbox->removeGroupSearch(window_group);
167 window_group = 0; 168 window_group = 0;
@@ -170,8 +171,6 @@ WinClient::~WinClient() {
170 if (m_mwm_hint != 0) 171 if (m_mwm_hint != 0)
171 XFree(m_mwm_hint); 172 XFree(m_mwm_hint);
172 173
173 if (window())
174 fluxbox->removeWindowSearch(window());
175} 174}
176 175
177bool WinClient::acceptsFocus() const { 176bool WinClient::acceptsFocus() const {