make the ob_restart/shutdown stuff static vars and expose them only through functions ob_restart_other(), ob_restart() and ob_exit()

This commit is contained in:
Dana Jansens 2003-07-10 18:50:47 +00:00
parent 452f3f8aae
commit eea43e6488
4 changed files with 42 additions and 51 deletions

View file

@ -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)

View file

@ -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

View file

@ -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);

View file

@ -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);