all repos — openbox @ 120623d34e0cb86b4970e9744a10ba39cd5e21b7

openbox fork - make it a bit more like ryudo

use the xerror stuff to trap errors instead of dupliacted the effort here
Dana Jansens danakj@orodu.net
commit

120623d34e0cb86b4970e9744a10ba39cd5e21b7

parent

85112c4d0831067251de1295fbb6974db94af2ba

1 files changed, 8 insertions(+), 16 deletions(-)

jump to
M openbox/screen.copenbox/screen.c

@@ -53,30 +53,22 @@ #endif

static void set_root_cursor(); -static gboolean running; -static int another_running(Display *d, XErrorEvent *e) -{ - (void)d;(void)e; - g_message("A window manager is already running on screen %d", - ob_screen); - running = TRUE; - return -1; -} - gboolean screen_annex() { - XErrorHandler old; pid_t pid; int i, num_support; guint32 *supported; - running = FALSE; - old = XSetErrorHandler(another_running); + xerror_set_ignore(TRUE); + xerror_occured = FALSE; XSelectInput(ob_display, ob_root, ROOT_EVENTMASK); - XSync(ob_display, FALSE); - XSetErrorHandler(old); - if (running) + xerror_set_ignore(FALSE); + if (xerror_occured) { + g_message("A window manager is already running on screen %d", + ob_screen); return FALSE; + } + g_message("Managing screen %d", ob_screen);