aboutsummaryrefslogtreecommitdiff
path: root/src/fluxbox.cc
diff options
context:
space:
mode:
authormathias <mathias>2004-11-20 18:12:51 (GMT)
committermathias <mathias>2004-11-20 18:12:51 (GMT)
commit19bc596b84b26f6c3022d05973ae514a50eeeea1 (patch)
tree3e40c2506edefc523c36d304a2580e3b4e00bfb9 /src/fluxbox.cc
parente5b5984eca548c13ad82b02d96b6b4a9496d15d4 (diff)
downloadfluxbox-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.cc16
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);