fix segfaut from uninitialized focused_screen pointer
authorDana Jansens <danakj@orodu.net>
Mon, 13 May 2002 23:09:20 +0000 (23:09 +0000)
committerDana Jansens <danakj@orodu.net>
Mon, 13 May 2002 23:09:20 +0000 (23:09 +0000)
CHANGELOG
src/BaseDisplay.cc
src/Screen.cc
src/Toolbar.cc
src/openbox.cc

index d6cb233..f0eb3e6 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,7 +1,12 @@
 Changelog for Openbox:
 
 1.2.0:
- * make image dithering value load correctly
+ * more focus code changes. also fixes a segfault from
+   last round of focus changes.                         (Ben Jansens)
+ * make image dithering value load correctly.           (Ben Jansens)
+
+ * fix segfault with multiple screens.                  (Shaleh Perry)
 
 1.1.0:
  * improved focused window logic to remove a segfault
index 15c0c7e..81d3c5c 100644 (file)
@@ -519,7 +519,6 @@ void BaseDisplay::ungrab(void) {
 
 void BaseDisplay::addTimer(BTimer *timer) {
   ASSERT(timer != (BTimer *) 0);
-  printf("ADDING TIMER\n");
 
   TimerList::iterator it;
   for (it = timerList.begin(); it != timerList.end(); ++it) {
@@ -535,7 +534,6 @@ void BaseDisplay::addTimer(BTimer *timer) {
 
 
 void BaseDisplay::removeTimer(BTimer *timer) {
-  printf("REMOVING TIMER\n");
   timerList.remove(timer);
 }
 
index 1d4ae1f..75f8459 100644 (file)
@@ -225,6 +225,7 @@ BScreen::BScreen(Openbox &ob, int scrn, Resource &conf) : ScreenInfo(ob, scrn),
   slit = NULL;
 #endif // SLIT
   toolbar = NULL;
+  current_workspace = (Workspace *) 0;
 
 #ifdef    HAVE_GETPID
   pid_t bpid = getpid();
index 7ce387e..d801cb4 100644 (file)
@@ -725,7 +725,9 @@ void Toolbar::checkClock(Bool redraw, Bool date) {
 
 void Toolbar::redrawWindowLabel(Bool redraw) {
   OpenboxWindow *foc = screen.getOpenbox().focusedWindow();
-  if (foc != (OpenboxWindow *) 0) {
+  if (foc == (OpenboxWindow *) 0) {
+    XClearWindow(display, frame.window_label);
+  } else {
     if (redraw)
       XClearWindow(display, frame.window_label);
 
@@ -780,8 +782,6 @@ void Toolbar::redrawWindowLabel(Bool redraw) {
     else
       XDrawString(display, frame.window_label, style->w_text_gc, dx,
                  (style->font->ascent + 1), *foc->getTitle(), dlen);
-  } else {
-    XClearWindow(display, frame.window_label);
   }
 }
  
index 7c25bc6..b603e56 100644 (file)
@@ -186,6 +186,7 @@ Openbox::Openbox(int m_argc, char **m_argv, char *dpy_name, char *rc)
   resource.titlebar_layout = NULL;
   resource.auto_raise_delay.tv_sec = resource.auto_raise_delay.tv_usec = 0;
 
+  focused_screen = (BScreen *) 0;
   masked_window = NULL;
   masked = None;