From: Dana Jansens Date: Thu, 10 Jul 2003 18:50:47 +0000 (+0000) Subject: make the ob_restart/shutdown stuff static vars and expose them only through functions... X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=eea43e64883fc0c988b916db99bc5b45ccffc432;p=chaz%2Fopenbox make the ob_restart/shutdown stuff static vars and expose them only through functions ob_restart_other(), ob_restart() and ob_exit() --- diff --git a/openbox/action.c b/openbox/action.c index 7c98f7a6..6e06d374 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -1121,13 +1121,12 @@ void action_moveresize(union ActionData *data) void action_restart(union ActionData *data) { - ob_restart_path = g_strdup(data->execute.path); - ob_shutdown = ob_restart = TRUE; + ob_restart_other(data->execute.path); } void action_exit(union ActionData *data) { - ob_shutdown = TRUE; + ob_exit(); } void action_showmenu(union ActionData *data) diff --git a/openbox/event.c b/openbox/event.c index b6899a8b..cb8babf0 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -149,28 +149,7 @@ void event_loop() struct timeval *wait; gboolean had_event = FALSE; - while (TRUE) { - /* - There are slightly different event retrieval semantics here for - local (or high bandwidth) versus remote (or low bandwidth) - connections to the display/Xserver. - */ - if (ob_remote) { - if (!XPending(ob_display)) - break; - } else { - /* - This XSync allows for far more compression of events, which - makes things like Motion events perform far far better. Since - it also means network traffic for every event instead of every - X events (where X is the number retrieved at a time), it - probably should not be used for setups where Openbox is - running on a remote/low bandwidth display/Xserver. - */ - XSync(ob_display, FALSE); - if (!XEventsQueued(ob_display, QueuedAlready)) - break; - } + while (XPending(ob_display)) { XNextEvent(ob_display, &e); #ifdef USE_LIBSN diff --git a/openbox/openbox.c b/openbox/openbox.c index 8f19b31a..d39e0cfc 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -52,23 +52,23 @@ #ifdef USE_SM gboolean ob_sm_use = TRUE; SmcConn ob_sm_conn; -gchar *ob_sm_id = NULL; +gchar *ob_sm_id; #endif -RrInstance *ob_rr_inst = NULL; -RrTheme *ob_rr_theme = NULL; -Display *ob_display = NULL; +RrInstance *ob_rr_inst; +RrTheme *ob_rr_theme; +Display *ob_display; int ob_screen; Window ob_root; ObState ob_state; -gboolean ob_shutdown = FALSE; -gboolean ob_restart = FALSE; -char *ob_restart_path = NULL; -gboolean ob_remote = TRUE; -gboolean ob_sync = FALSE; +gboolean ob_sync; Cursor ob_cursors[OB_NUM_CURSORS]; KeyCode ob_keys[OB_NUM_KEYS]; -char *ob_rc_path = NULL; +char *ob_rc_path; + +static gboolean shutdown; +static gboolean restart; +static char *restart_path; static void signal_handler(const ObEvent *e, void *data); static void parse_args(int argc, char **argv); @@ -260,7 +260,7 @@ int main(int argc, char **argv) client_manage_all(); ob_state = OB_STATE_RUNNING; - while (!ob_shutdown) + while (!shutdown) event_loop(); ob_state = OB_STATE_EXITING; @@ -292,18 +292,18 @@ int main(int argc, char **argv) XCloseDisplay(ob_display); - if (ob_restart) { - if (ob_restart_path != NULL) { + if (restart) { + if (restart_path != NULL) { int argcp; char **argvp; GError *err = NULL; /* run other shit */ - if (g_shell_parse_argv(ob_restart_path, &argcp, &argvp, &err)) { + if (g_shell_parse_argv(restart_path, &argcp, &argvp, &err)) { execvp(argvp[0], argvp); g_strfreev(argvp); } else { - g_warning("failed to execute '%s': %s", ob_restart_path, + g_warning("failed to execute '%s': %s", restart_path, err->message); } } @@ -473,7 +473,7 @@ static void signal_handler(const ObEvent *e, void *data) switch (s) { case SIGUSR1: fprintf(stderr, "Caught SIGUSR1 signal. Restarting."); - ob_shutdown = ob_restart = TRUE; + ob_restart(); break; case SIGHUP: @@ -481,7 +481,7 @@ static void signal_handler(const ObEvent *e, void *data) case SIGTERM: case SIGPIPE: fprintf(stderr, "Caught signal %d. Exiting.", s); - ob_shutdown = TRUE; + ob_exit(); break; case SIGFPE: @@ -570,7 +570,7 @@ static void sm_save_yourself(SmcConn conn, SmPointer data, int save_type, static void sm_die(SmcConn conn, SmPointer data) { - ob_shutdown = TRUE; + ob_exit(); g_message("got DIE from session manager"); } @@ -592,6 +592,23 @@ static void exit_with_error(gchar *msg) exit(EXIT_FAILURE); } +void ob_restart_other(const gchar *path) +{ + restart_path = g_strdup(path); + ob_restart(); +} + +void ob_restart() +{ + restart = TRUE; + ob_exit(); +} + +void ob_exit() +{ + shutdown = TRUE; +} + Cursor ob_cursor(ObCursor cursor) { g_assert(cursor < OB_NUM_CURSORS); diff --git a/openbox/openbox.h b/openbox/openbox.h index 69004990..706a6f6c 100644 --- a/openbox/openbox.h +++ b/openbox/openbox.h @@ -32,14 +32,6 @@ extern Window ob_root; /* The state of execution of the window manager */ extern ObState ob_state; -/*! When set to true, Openbox will exit */ -extern gboolean ob_shutdown; -/*! When set to true, Openbox will restart instead of shutting down */ -extern gboolean ob_restart; -/*! When restarting, if this is not NULL, it will be executed instead of - restarting Openbox. */ -extern char *ob_restart_path; - /*! Runtime option to specify running on a remote display */ extern gboolean ob_remote; /*! Runtime option to run in synchronous mode */ @@ -48,6 +40,10 @@ extern gboolean ob_sync; /*! The path of the rc file. If NULL the default paths are searched for one. */ extern char *ob_rc_path; +void ob_restart_other(const gchar *path); +void ob_restart(); +void ob_exit(); + Cursor ob_cursor(ObCursor cursor); KeyCode ob_keycode(ObKey key);