diff options
author | Henrik Kinnunen <fluxgen at fluxbox dot org> | 2011-02-23 06:38:45 (GMT) |
---|---|---|
committer | Henrik Kinnunen <fluxgen at fluxbox dot org> | 2011-02-23 06:38:45 (GMT) |
commit | bb3f955e0f4959dc66bee8c27e3b15b399c6a845 (patch) | |
tree | 48717774bad99ec26dc5e88011bf7c9f65c1995c | |
parent | bf9fb893daa0963694fee27cea60021dcf364f24 (diff) | |
download | fluxbox_pavel-bb3f955e0f4959dc66bee8c27e3b15b399c6a845.zip fluxbox_pavel-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.cc | 7 |
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 | ||
177 | bool WinClient::acceptsFocus() const { | 176 | bool WinClient::acceptsFocus() const { |