all repos — openbox @ eea43e64883fc0c988b916db99bc5b45ccffc432

openbox fork - make it a bit more like ryudo

make the ob_restart/shutdown stuff static vars and expose them only through functions ob_restart_other(), ob_restart() and ob_exit()
Dana Jansens danakj@orodu.net
commit

eea43e64883fc0c988b916db99bc5b45ccffc432

parent

452f3f8aae796f70a5bd479986aa29937070951c

4 files changed, 42 insertions(+), 51 deletions(-)

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

@@ -1121,13 +1121,12 @@ }

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)
M openbox/event.copenbox/event.c

@@ -149,28 +149,7 @@ XEvent e;

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
M openbox/openbox.copenbox/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 @@ /* get all the existing windows */

client_manage_all(); ob_state = OB_STATE_RUNNING; - while (!ob_shutdown) + while (!shutdown) event_loop(); ob_state = OB_STATE_EXITING;

@@ -292,18 +292,18 @@ sm_shutdown();

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 @@ s = e->data.s.signal;

switch (s) { case SIGUSR1: fprintf(stderr, "Caught SIGUSR1 signal. Restarting."); - ob_shutdown = ob_restart = TRUE; + ob_restart(); break; case SIGHUP:

@@ -481,7 +481,7 @@ case SIGINT:

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_die(SmcConn conn, SmPointer data) { - ob_shutdown = TRUE; + ob_exit(); g_message("got DIE from session manager"); }

@@ -590,6 +590,23 @@ {

g_critical(msg); sm_shutdown(); 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)
M openbox/openbox.hopenbox/openbox.h

@@ -32,14 +32,6 @@

/* 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 */

@@ -47,6 +39,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);