gnome-session r4996 - in trunk: . gnome-session



Author: mccann
Date: Tue Aug 26 17:24:52 2008
New Revision: 4996
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4996&view=rev

Log:
2008-08-26  William Jon McCann  <jmccann redhat com>

	* gnome-session/main.c (append_required_apps):
	Honor the list of required apps in the list key instead of
	loading all component keys in the dir.



Modified:
   trunk/ChangeLog
   trunk/gnome-session/main.c

Modified: trunk/gnome-session/main.c
==============================================================================
--- trunk/gnome-session/main.c	(original)
+++ trunk/gnome-session/main.c	Tue Aug 26 17:24:52 2008
@@ -46,6 +46,7 @@
 
 #define GSM_GCONF_DEFAULT_SESSION_KEY           "/desktop/gnome/session/default-session"
 #define GSM_GCONF_REQUIRED_COMPONENTS_DIRECTORY "/desktop/gnome/session/required-components"
+#define GSM_GCONF_REQUIRED_COMPONENTS_KEY       "/desktop/gnome/session/required-components"
 
 #define GSM_DBUS_NAME "org.gnome.SessionManager"
 
@@ -280,35 +281,39 @@
         GConfClient *client;
 
         client = gconf_client_get_default ();
-        required_components = gconf_client_all_entries (client,
-                                                        GSM_GCONF_REQUIRED_COMPONENTS_DIRECTORY,
-                                                        NULL);
-        g_object_unref (client);
+        required_components = gconf_client_get_list (client,
+                                                     GSM_GCONF_REQUIRED_COMPONENTS_KEY,
+                                                     GCONF_VALUE_STRING,
+                                                     NULL);
 
         for (r = required_components; r != NULL; r = r->next) {
-                GConfEntry *entry;
-                const char *default_provider;
-                const char *service;
-
-                entry = (GConfEntry *) r->data;
+                char       *path;
+                char       *default_provider;
+                const char *component;
 
-                service = strrchr (entry->key, '/');
-                if (service == NULL) {
+                if (IS_STRING_EMPTY ((char *)r->data)) {
                         continue;
                 }
-                service++;
 
-                default_provider = gconf_value_get_string (entry->value);
-                if (default_provider == NULL) {
-                        continue;
-                }
+                component = r->data;
 
-                gsm_manager_add_autostart_app (manager, default_provider, service);
+                path = g_strdup_printf ("%s/%s",
+                                        GSM_GCONF_REQUIRED_COMPONENTS_DIRECTORY,
+                                        component);
+
+                default_provider = gconf_client_get_string (client, path, NULL);
+                if (default_provider != NULL) {
+                        gsm_manager_add_autostart_app (manager, default_provider, component);
+                }
 
-                gconf_entry_free (entry);
+                g_free (default_provider);
+                g_free (path);
         }
 
+        g_slist_foreach (required_components, (GFunc)g_free, NULL);
         g_slist_free (required_components);
+
+        g_object_unref (client);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]