void session_startup(gint argc, gchar **argv) {}
void session_shutdown(gboolean permanent) {}
GList* session_state_find(struct _ObClient *c) { return NULL; }
+void session_request_logout(gboolean silent) {}
#else
#include "debug.h"
ObSMSaveData *savedata = NULL;
gchar *vendor;
- ob_debug_type(OB_DEBUG_SM, "Session save requested");
+#ifdef DEBUG
+ {
+ const gchar *sname =
+ (save_type == SmSaveLocal ? "SmSaveLocal" :
+ (save_type == SmSaveGlobal ? "SmSaveGlobal" :
+ (save_type == SmSaveBoth ? "SmSaveBoth" : "INVALID!!")));
+ ob_debug_type(OB_DEBUG_SM, "Session save requested, type %s\n", sname);
+ }
+#endif
+
+ if (save_type == SmSaveGlobal) {
+ /* we have no data to save. we only store state to get back to where
+ we were, we don't keep open writable files or anything */
+ SmcSaveYourselfDone(conn, TRUE);
+ return;
+ }
vendor = SmcVendor(sm_conn);
ob_debug_type(OB_DEBUG_SM, "Session manager's vendor: %s", vendor);
obt_parse_instance_unref(i);
}
+void session_request_logout(gboolean silent)
+{
+ if (sm_conn) {
+ SmcRequestSaveYourself(sm_conn,
+ SmSaveGlobal,
+ TRUE, /* logout */
+ (silent ?
+ SmInteractStyleNone : SmInteractStyleAny),
+ TRUE, /* if false, with GSM, it shows the old
+ logout prompt */
+ TRUE); /* global */
+ }
+ else
+ g_message(_("Not connected to a session manager"));
+}
+
#endif