Author: kelnos
Date: 2008-10-21 08:04:42 +0000 (Tue, 21 Oct 2008)
New Revision: 28344

Modified:
   xfce4-session/trunk/ChangeLog
   xfce4-session/trunk/settings/session-editor.c
Log:
        * settings/session-editor.c: Cache the DBusGProxy in the list
          store.  Set clients to kill to SmRestartIfRunning, not
          SmRestartNever.  Display placeholder text if the app doesn't
          provide a SmProgram property.  Fix a one-time memleak.

Modified: xfce4-session/trunk/ChangeLog
===================================================================
--- xfce4-session/trunk/ChangeLog       2008-10-21 06:38:32 UTC (rev 28343)
+++ xfce4-session/trunk/ChangeLog       2008-10-21 08:04:42 UTC (rev 28344)
@@ -1,3 +1,10 @@
+2008-10-21     Brian Tarricone <[EMAIL PROTECTED]>
+
+       * settings/session-editor.c: Cache the DBusGProxy in the list
+         store.  Set clients to kill to SmRestartIfRunning, not
+         SmRestartNever.  Display placeholder text if the app doesn't
+         provide a SmProgram property.  Fix a one-time memleak.
+
 2008-10-20     Brian Tarricone <[EMAIL PROTECTED]>
 
        * settings/session-editor.c: Implement a rudimentary session

Modified: xfce4-session/trunk/settings/session-editor.c
===================================================================
--- xfce4-session/trunk/settings/session-editor.c       2008-10-21 06:38:32 UTC 
(rev 28343)
+++ xfce4-session/trunk/settings/session-editor.c       2008-10-21 08:04:42 UTC 
(rev 28344)
@@ -43,6 +43,7 @@
     COL_COMMAND,
     COL_RESTART_STYLE,
     COL_PRIORITY,
+    COL_DBUS_PROXY,
     N_COLS,
 };
 
@@ -96,7 +97,8 @@
     GtkTreeSelection *sel;
     GtkTreeModel *model = NULL;
     GtkTreeIter iter;
-    gchar *name = NULL, *client_op = NULL;
+    DBusGProxy *proxy = NULL;
+    gchar *name = NULL;
     guchar hint = SmRestartIfRunning;
     gchar *primary, *btntext;
 
@@ -105,7 +107,7 @@
         return;
 
     gtk_tree_model_get(model, &iter,
-                       COL_OBJ_PATH, &client_op,
+                       COL_DBUS_PROXY, &proxy,
                        COL_NAME, &name,
                        COL_RESTART_STYLE, &hint,
                        -1);
@@ -121,18 +123,14 @@
                            XFCE_CUSTOM_STOCK_BUTTON, btntext, GTK_STOCK_QUIT, 
GTK_RESPONSE_ACCEPT,
                            NULL) == GTK_RESPONSE_ACCEPT)
     {
-        DBusGProxy *proxy = dbus_g_proxy_new_for_name(dbus_conn,
-                                                      
"org.xfce.SessionManager",
-                                                      client_op,
-                                                      
"org.xfce.Session.Client");
         GError *error = NULL;
 
-        if(hint != SmRestartNever) {
+        if(hint != SmRestartIfRunning) {
             GHashTable *properties = g_hash_table_new(g_str_hash, g_str_equal);
             GValue val = { 0, };
 
             g_value_init(&val, G_TYPE_UCHAR);
-            g_value_set_uchar(&val, SmRestartNever);
+            g_value_set_uchar(&val, SmRestartIfRunning);
             g_hash_table_insert(properties, SmRestartStyleHint, &val);
 
             if(!xfsm_client_dbus_client_set_sm_properties(proxy, properties, 
&error)) {
@@ -152,14 +150,10 @@
                                 NULL);
             g_error_free(error);
         }
-
-        g_object_unref(proxy);
     }
 
     g_free(primary);
     g_free(btntext);
-
-    g_free(client_op);
     g_free(name);
 }
 
@@ -262,9 +256,13 @@
     if((val = g_hash_table_lookup(properties, GsmPriority)))
         priority = g_value_get_uchar(val);
 
+    if(!name || !*name)
+        name = _("(Unknown program)");
+
     DBG("adding '%s', obj path %s", name, object_path);
     gtk_list_store_append(GTK_LIST_STORE(model), &iter);
     gtk_list_store_set(GTK_LIST_STORE(model), &iter,
+                       COL_DBUS_PROXY, proxy,
                        COL_OBJ_PATH, object_path,
                        COL_NAME, name,
                        COL_RESTART_STYLE, hint,
@@ -314,7 +312,8 @@
         return;
 
     ls = gtk_list_store_new(N_COLS, G_TYPE_STRING, G_TYPE_STRING,
-                            G_TYPE_STRING, G_TYPE_UCHAR, G_TYPE_UCHAR);
+                            G_TYPE_STRING, G_TYPE_UCHAR, G_TYPE_UCHAR,
+                            DBUS_TYPE_G_PROXY);
     gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(ls));
     g_object_unref(ls);
 
@@ -336,7 +335,10 @@
     for(i = 0; i < clients->len; ++i) {
         gchar *client_op = g_ptr_array_index(clients, i);
         manager_client_registered(manager_dbus_proxy, client_op, treeview);
+        g_free(client_op);
     }
+
+    g_ptr_array_free(clients, TRUE);
 }
 
 void

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to