From 44be67844a5568e8b1ad87327b0815f8667151c0 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 22 May 2007 00:05:28 +0000 Subject: [PATCH] don't reload the session on restart --- openbox/openbox.c | 12 ++++++++++-- openbox/openbox.h | 1 + openbox/session.c | 8 +++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/openbox/openbox.c b/openbox/openbox.c index f66f6a76..b69f2c1e 100644 --- a/openbox/openbox.c +++ b/openbox/openbox.c @@ -92,6 +92,7 @@ gboolean ob_replace_wm = FALSE; gboolean ob_sm_use = TRUE; gchar *ob_sm_id = NULL; gchar *ob_sm_save_file = NULL; +gboolean ob_sm_restore = TRUE; gboolean ob_debug_xinerama = FALSE; static ObState state; @@ -396,12 +397,13 @@ gint main(gint argc, gchar **argv) } } - /* we remove the session arguments from argv, so put them back */ + /* we remove the session arguments from argv, so put them back, + also don't restore the session on restart */ if (ob_sm_save_file != NULL || ob_sm_id != NULL) { gchar **nargv; gint i, l; - l = argc + + l = argc + 1 + (ob_sm_save_file != NULL ? 2 : 0) + (ob_sm_id != NULL ? 2 : 0); nargv = g_new0(gchar*, l+1); @@ -416,6 +418,7 @@ gint main(gint argc, gchar **argv) nargv[i++] = g_strdup("--sm-client-id"); nargv[i++] = ob_sm_id; } + nargv[i++] = g_strdup("--sm-no-load"); g_assert(i == l); argv = nargv; } @@ -572,6 +575,11 @@ static void parse_args(gint *argc, gchar **argv) else if (!strcmp(argv[i], "--sm-disable")) { ob_sm_use = FALSE; } + else if (!strcmp(argv[i], "--sm-no-load")) { + ob_sm_restore = FALSE; + remove_args(argc, argv, i, 1); + --i; /* this arg was removed so go back */ + } else { /* this is a memleak.. oh well.. heh */ gchar *err = g_strdup_printf diff --git a/openbox/openbox.h b/openbox/openbox.h index e258d31e..460de0b4 100644 --- a/openbox/openbox.h +++ b/openbox/openbox.h @@ -45,6 +45,7 @@ extern gchar *ob_sm_id; /* This save_file will get pass to ourselves if we restart too! So we won't make a new file every time, yay. */ extern gchar *ob_sm_save_file; +extern gboolean ob_sm_restore; extern gboolean ob_replace_wm; extern gboolean ob_debug_xinerama; diff --git a/openbox/session.c b/openbox/session.c index d0db0717..dcb3fcef 100644 --- a/openbox/session.c +++ b/openbox/session.c @@ -102,9 +102,11 @@ void session_startup(gint argc, gchar **argv) } if (ob_sm_save_file != NULL) { - ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n", - ob_sm_save_file); - session_load_file(ob_sm_save_file); + if (ob_sm_restore) { + ob_debug_type(OB_DEBUG_SM, "Loading from session file %s\n", + ob_sm_save_file); + session_load_file(ob_sm_save_file); + } } else { gchar *filename; -- 2.39.2