summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-05-13 23:09:20 +0000
committerDana Jansens <danakj@orodu.net>2002-05-13 23:09:20 +0000
commitd6c02ad70c42f074a4c3d8c433de5bb2c63dea8e (patch)
treeef3f577cbad046d8e35176cc14d0414cd80c8431
parentabfaee73685890cc0bb6185fc167dd19fcdfd7f2 (diff)
fix segfaut from uninitialized focused_screen pointer
-rw-r--r--CHANGELOG7
-rw-r--r--src/BaseDisplay.cc2
-rw-r--r--src/Screen.cc1
-rw-r--r--src/Toolbar.cc6
-rw-r--r--src/openbox.cc1
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;