From d6c02ad70c42f074a4c3d8c433de5bb2c63dea8e Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 13 May 2002 23:09:20 +0000 Subject: [PATCH] fix segfaut from uninitialized focused_screen pointer --- CHANGELOG | 7 ++++++- src/BaseDisplay.cc | 2 -- src/Screen.cc | 1 + src/Toolbar.cc | 6 +++--- src/openbox.cc | 1 + 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d6cb233f..f0eb3e68 100644 --- 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 diff --git a/src/BaseDisplay.cc b/src/BaseDisplay.cc index 15c0c7e6..81d3c5c7 100644 --- a/src/BaseDisplay.cc +++ b/src/BaseDisplay.cc @@ -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); } diff --git a/src/Screen.cc b/src/Screen.cc index 1d4ae1ff..75f8459a 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -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(); diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 7ce387eb..d801cb4b 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc @@ -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); } } diff --git a/src/openbox.cc b/src/openbox.cc index 7c25bc62..b603e56f 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -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; -- 2.44.0