]> Dogcows Code - chaz/openbox/blobdiff - openbox/session.c
playing a bit with grabs
[chaz/openbox] / openbox / session.c
index 0ba1b3282d427b63625ad03226a013555374dca5..62cff4b75c647e2c85863bd748d12f098f56e8c7 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
 
    session.c for the Openbox window manager
-   Copyright (c) 2003        Ben Jansens
+   Copyright (c) 2003-2007   Dana Jansens
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@
 GList *session_saved_state;
 
 void session_startup(gint argc, gchar **argv) {}
-void session_shutdown() {}
+void session_shutdown(gboolean permanent) {}
 GList* session_state_find(ObClient *c) { return NULL; }
 gboolean session_state_cmp(ObSessionState *s, ObClient *c) { return FALSE; }
 void session_state_free(ObSessionState *state) {}
@@ -75,7 +75,7 @@ static void save_commands()
 {
     SmProp *props[2];
     SmProp prop_cmd = { SmCloneCommand, SmLISTofARRAY8, 1, };
-    SmProp prop_res = { SmRestartCommand, SmLISTofARRAY8, };
+    SmProp prop_res = { SmRestartCommand, SmLISTofARRAY8 };
     gint i;
 
     prop_cmd.vals = g_new(SmPropValue, sm_argc);
@@ -164,9 +164,10 @@ void session_startup(gint argc, gchar **argv)
 
     sm_sessions_path = g_build_filename(parse_xdg_data_home_path(),
                                         "openbox", "sessions", NULL);
-    if (!parse_mkdir_path(sm_sessions_path, 0700))
-        g_warning(_("Unable to make directory '%s': %s"),
+    if (!parse_mkdir_path(sm_sessions_path, 0700)) {
+        g_message(_("Unable to make directory '%s': %s"),
                   sm_sessions_path, g_strerror(errno));
+    }
 
     if (save_file)
         session_load(save_file);
@@ -257,7 +258,7 @@ void session_startup(gint argc, gchar **argv)
     }
 }
 
-void session_shutdown()
+void session_shutdown(gboolean permanent)
 {
     if (sm_disable)
         return;
@@ -268,21 +269,25 @@ void session_shutdown()
     g_free(sm_argv);
 
     if (sm_conn) {
-        SmPropValue val_hint;
-        SmProp prop_hint = { SmRestartStyleHint, SmCARD8, 1, };
-        SmProp *props[1];
-        gulong hint;
+        /* if permanent is true then we will change our session state so that
+           the SM won't run us again */
+        if (permanent) {
+            SmPropValue val_hint;
+            SmProp prop_hint = { SmRestartStyleHint, SmCARD8, 1, };
+            SmProp *props[1];
+            gulong hint;
 
-        /* when we exit, we want to reset this to a more friendly state */
-        hint = SmRestartIfRunning;
-        val_hint.value = &hint;
-        val_hint.length = 1;
+            /* when we exit, we want to reset this to a more friendly state */
+            hint = SmRestartIfRunning;
+            val_hint.value = &hint;
+            val_hint.length = 1;
 
-        prop_hint.vals = &val_hint;
+            prop_hint.vals = &val_hint;
 
-        props[0] = &prop_hint;
+            props[0] = &prop_hint;
 
-        SmcSetProperties(sm_conn, 1, props);
+            SmcSetProperties(sm_conn, 1, props);
+        }
 
         SmcCloseConnection(sm_conn, 0, NULL);
 
@@ -335,7 +340,7 @@ static gboolean session_save()
     f = fopen(save_file, "w");
     if (!f) {
         success = FALSE;
-        g_warning("unable to save the session to %s: %s",
+        g_message(_("Unable to save the session to '%s': %s"),
                   save_file, g_strerror(errno));
     } else {
         guint stack_pos = 0;
@@ -425,7 +430,7 @@ static gboolean session_save()
 
         if (fflush(f)) {
             success = FALSE;
-            g_warning("error while saving the session to %s: %s",
+            g_message(_("Error while saving the session to '%s': %s"),
                       save_file, g_strerror(errno));
         }
         fclose(f);
This page took 0.022814 seconds and 4 git commands to generate.