From 7ea56abf05b9e6cd4e806dbfa1146562378edc7b Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 2 Mar 2008 15:37:07 -0500 Subject: [PATCH] add a RECONFIGURING state, and enter that when doing reconfiguring --- openbox/event.c | 2 ++ openbox/misc.h | 3 ++- openbox/openbox.c | 12 +++++++++--- openbox/openbox.h | 1 + openbox/screen.c | 2 +- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/openbox/event.c b/openbox/event.c index 5c4700a..a7f65fc 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -652,9 +652,11 @@ static void event_process(const XEvent *ec, gpointer data) /* keyboard layout changes for modifier mapping changes. reload the modifier map, and rebind all the key bindings as appropriate */ ob_debug("Kepboard map changed. Reloading keyboard bindings.\n"); + ob_set_state(OB_STATE_RECONFIGURING); modkeys_shutdown(TRUE); modkeys_startup(TRUE); keyboard_rebind(); + ob_set_state(OB_STATE_RUNNING); } else if (e->type == ClientMessage) { /* This is for _NET_WM_REQUEST_FRAME_EXTENTS messages. They come for diff --git a/openbox/misc.h b/openbox/misc.h index c73c926..c1ec407 100644 --- a/openbox/misc.h +++ b/openbox/misc.h @@ -60,7 +60,8 @@ typedef enum { OB_STATE_STARTING, OB_STATE_RUNNING, - OB_STATE_EXITING + OB_STATE_EXITING, + OB_STATE_RECONFIGURING } ObState; typedef enum diff --git a/openbox/openbox.c b/openbox/openbox.c index fb1e75d..eb7934e 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -121,7 +121,7 @@ gint main(gint argc, gchar **argv) { gchar *program_name; - state = OB_STATE_STARTING; + ob_set_state(OB_STATE_STARTING); /* initialize the locale */ if (!setlocale(LC_ALL, "")) @@ -367,9 +367,10 @@ gint main(gint argc, gchar **argv) reconfigure = FALSE; - state = OB_STATE_RUNNING; + ob_set_state(OB_STATE_RUNNING); ob_main_loop_run(ob_main_loop); - state = OB_STATE_EXITING; + ob_set_state(reconfigure ? + OB_STATE_RECONFIGURING : OB_STATE_EXITING); if (!reconfigure) { dock_remove_all(); @@ -709,3 +710,8 @@ ObState ob_state() { return state; } + +void ob_set_state(ObState s) +{ + state = s; +} diff --git a/openbox/openbox.h b/openbox/openbox.h index 4f2310f..06d3829 100644 --- a/openbox/openbox.h +++ b/openbox/openbox.h @@ -52,6 +52,7 @@ extern gboolean ob_debug_xinerama; /* The state of execution of the window manager */ ObState ob_state(); +void ob_set_state(ObState state); void ob_restart_other(const gchar *path); void ob_restart(); diff --git a/openbox/screen.c b/openbox/screen.c index 2e48f85..15b3c8d 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -492,7 +492,7 @@ void screen_resize(void) PROP_SETA32(RootWindow(ob_display, ob_screen), net_desktop_geometry, cardinal, geometry, 2); - if (ob_state() == OB_STATE_STARTING) + if (ob_state() != OB_STATE_RUNNING) return; screen_update_areas(); -- 1.9.1