summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-03-03 03:42:28 +0000
committerDana Jansens <danakj@orodu.net>2007-03-03 03:42:28 +0000
commit48a7c32512db4358dc7c2928174bccc203d30e69 (patch)
tree6774f1fea98ca7d78fa7e697ea9efa5e2ee0fd1b /openbox
parentb8bcc451435d8355624aa8a48d56740bac59c609 (diff)
make a copy of the argc and argv instead of modifying the real ones
this means that when openbox is restared it doesn't lose it's SM related command line args, they get passed to the new openbox same as they were passed to the one exiting.
Diffstat (limited to 'openbox')
-rw-r--r--openbox/session.c20
-rw-r--r--openbox/session.h2
2 files changed, 14 insertions, 8 deletions
diff --git a/openbox/session.c b/openbox/session.c
index 54ce34ed..fa9ce484 100644
--- a/openbox/session.c
+++ b/openbox/session.c
@@ -25,7 +25,7 @@
GList *session_saved_state;
-void session_startup(gint *argc, gchar ***argv) {}
+void session_startup(gint argc, gchar **argv) {}
void session_shutdown() {}
GList* session_state_find(ObClient *c) { return NULL; }
gboolean session_state_cmp(ObSessionState *s, ObClient *c) { return FALSE; }
@@ -142,17 +142,25 @@ static void parse_args(gint *argc, gchar ***argv)
}
}
-void session_startup(gint *argc, gchar ***argv)
+void session_startup(gint argc, gchar **argv)
{
#define SM_ERR_LEN 1024
SmcCallbacks cb;
gchar sm_err[SM_ERR_LEN];
+ gint i;
+
+ sm_argc = argc;
+ sm_argv = g_new(gchar*, argc);
+ for (i = 0; i < argc; ++i)
+ sm_argv[i] = argv[i];
- parse_args(argc, argv);
+ parse_args(&sm_argc, &sm_argv);
- if (sm_disable)
+ if (sm_disable) {
+ g_free(sm_argv);
return;
+ }
sm_sessions_path = g_build_filename(parse_xdg_data_home_path(),
"openbox", "sessions", NULL);
@@ -174,9 +182,6 @@ void session_startup(gint *argc, gchar ***argv)
g_free(filename);
}
- sm_argc = *argc;
- sm_argv = *argv;
-
cb.save_yourself.callback = sm_save_yourself;
cb.save_yourself.client_data = NULL;
@@ -257,6 +262,7 @@ void session_shutdown()
g_free(sm_sessions_path);
g_free(save_file);
g_free(sm_id);
+ g_free(sm_argv);
if (sm_conn) {
SmPropValue val_hint;
diff --git a/openbox/session.h b/openbox/session.h
index 680f45f0..c3146337 100644
--- a/openbox/session.h
+++ b/openbox/session.h
@@ -38,7 +38,7 @@ struct _ObSessionState {
extern GList *session_saved_state;
-void session_startup(gint *argc, gchar ***argv);
+void session_startup(gint argc, gchar **argv);
void session_shutdown();
GList* session_state_find(struct _ObClient *c);