diff options
author | mathias <mathias> | 2004-11-20 18:12:51 (GMT) |
---|---|---|
committer | mathias <mathias> | 2004-11-20 18:12:51 (GMT) |
commit | 19bc596b84b26f6c3022d05973ae514a50eeeea1 (patch) | |
tree | 3e40c2506edefc523c36d304a2580e3b4e00bfb9 /src/fluxbox.cc | |
parent | e5b5984eca548c13ad82b02d96b6b4a9496d15d4 (diff) | |
download | fluxbox-19bc596b84b26f6c3022d05973ae514a50eeeea1.zip fluxbox-19bc596b84b26f6c3022d05973ae514a50eeeea1.tar.bz2 |
fix segfaults on restart/exit, still issues with former iconified windows
at startup of fluxbox
should close #1067582, #1067580, #1060912
Diffstat (limited to 'src/fluxbox.cc')
-rw-r--r-- | src/fluxbox.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index fb846e0..c87278f 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -465,6 +465,12 @@ Fluxbox::~Fluxbox() { | |||
465 | delete m_toolbars.back(); | 465 | delete m_toolbars.back(); |
466 | m_toolbars.pop_back(); | 466 | m_toolbars.pop_back(); |
467 | } | 467 | } |
468 | |||
469 | // destroy screens | ||
470 | while (!m_screen_list.empty()) { | ||
471 | delete m_screen_list.back(); | ||
472 | m_screen_list.pop_back(); | ||
473 | } | ||
468 | 474 | ||
469 | // destroy atomhandlers | 475 | // destroy atomhandlers |
470 | for (AtomHandlerContainerIt it= m_atomhandler.begin(); | 476 | for (AtomHandlerContainerIt it= m_atomhandler.begin(); |
@@ -472,11 +478,7 @@ Fluxbox::~Fluxbox() { | |||
472 | it++) { | 478 | it++) { |
473 | delete (*it).first; | 479 | delete (*it).first; |
474 | } | 480 | } |
475 | 481 | m_atomhandler.clear(); | |
476 | while (!m_screen_list.empty()) { | ||
477 | delete m_screen_list.back(); | ||
478 | m_screen_list.pop_back(); | ||
479 | } | ||
480 | 482 | ||
481 | clearMenuFilenames(); | 483 | clearMenuFilenames(); |
482 | } | 484 | } |
@@ -1159,11 +1161,13 @@ void Fluxbox::update(FbTk::Subject *changedsub) { | |||
1159 | (*it).first->updateLayer(win); | 1161 | (*it).first->updateLayer(win); |
1160 | } | 1162 | } |
1161 | } else if ((&(win.dieSig())) == changedsub) { // window death signal | 1163 | } else if ((&(win.dieSig())) == changedsub) { // window death signal |
1164 | |||
1162 | for (AtomHandlerContainerIt it= m_atomhandler.begin(); | 1165 | for (AtomHandlerContainerIt it= m_atomhandler.begin(); |
1163 | it != m_atomhandler.end(); ++it) { | 1166 | it != m_atomhandler.end(); ++it) { |
1164 | if ((*it).first->update()) | 1167 | if ((*it).first->update()) |
1165 | (*it).first->updateFrameClose(win); | 1168 | (*it).first->updateFrameClose(win); |
1166 | } | 1169 | } |
1170 | |||
1167 | // make sure each workspace get this | 1171 | // make sure each workspace get this |
1168 | BScreen &scr = win.screen(); | 1172 | BScreen &scr = win.screen(); |
1169 | scr.removeWindow(&win); | 1173 | scr.removeWindow(&win); |