all repos — openbox @ 48a7c32512db4358dc7c2928174bccc203d30e69

openbox fork - make it a bit more like ryudo

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.
Dana Jansens danakj@orodu.net
commit

48a7c32512db4358dc7c2928174bccc203d30e69

parent

b8bcc451435d8355624aa8a48d56740bac59c609

2 files changed, 14 insertions(+), 8 deletions(-)

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

@@ -25,7 +25,7 @@ #include "client.h"

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

} } -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; - parse_args(argc, argv); + sm_argc = argc; + sm_argv = g_new(gchar*, argc); + for (i = 0; i < argc; ++i) + sm_argv[i] = argv[i]; - if (sm_disable) + parse_args(&sm_argc, &sm_argv); + + if (sm_disable) { + g_free(sm_argv); return; + } sm_sessions_path = g_build_filename(parse_xdg_data_home_path(), "openbox", "sessions", NULL);

@@ -173,9 +181,6 @@ g_random_int());

save_file = g_build_filename(sm_sessions_path, filename, NULL); 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 @@ {

g_free(sm_sessions_path); g_free(save_file); g_free(sm_id); + g_free(sm_argv); if (sm_conn) { SmPropValue val_hint;
M openbox/session.hopenbox/session.h

@@ -38,7 +38,7 @@ };

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