diff -urN -x'*.orig' gnome-session-2.28.0/gnome-session/gsm-manager.c ../SUNWgnome-session-2.28.0.hacked/gnome-session-2.28.0/gnome-session/gsm-manager.c
--- gnome-session-2.28.0/gnome-session/gsm-manager.c 2009-10-19 16:38:47.843586847 +0100
+++ ../SUNWgnome-session-2.28.0.hacked/gnome-session-2.28.0/gnome-session/gsm-manager.c 2009-10-21 11:07:57.284947656 +0100
@@ -3404,14 +3404,40 @@
}
while ((name = g_dir_read_name (dir))) {
- char *desktop_file;
+ char *desktop_file;
+ char **provides;
+ GError *error=NULL;
+ gsize len;
+ EggDesktopFile *egg_df;
if (!g_str_has_suffix (name, ".desktop")) {
continue;
}
desktop_file = g_build_filename (path, name, NULL);
- gsm_manager_add_autostart_app (manager, desktop_file, NULL);
+ egg_df = egg_desktop_file_new ( desktop_file , &error);
+ if (egg_df == NULL) {
+ g_warning ("Could not parse desktop file %s: %s", desktop_file, error->message);
+ g_error_free (error);
+ continue;
+ }
+ else {
+ error = NULL;
+ provides = NULL;
+ provides = egg_desktop_file_get_string_list (egg_df,
+ GSM_AUTOSTART_APP_PROVIDES_KEY,
+ &len, &error);
+ if (!provides) {
+ g_debug ("GsmManager: *** desktop file: %s doesnot have Provides key\n", desktop_file);
+ gsm_manager_add_autostart_app (manager, desktop_file, NULL);
+ }
+ else {
+ g_debug ("GsmManager: *** desktop file: %s provides %s\n", desktop_file, provides[0]);
+ gsm_manager_add_autostart_app (manager, desktop_file, provides[0]);
+ }
+ g_strfreev (provides);
+ egg_desktop_file_free (egg_df);
+ }
g_free (desktop_file);
}
diff -urN -x'*.orig' gnome-session-2.28.0/gnome-session/main.c ../SUNWgnome-session-2.28.0.hacked/gnome-session-2.28.0/gnome-session/main.c
--- gnome-session-2.28.0/gnome-session/main.c 2009-10-19 16:38:47.829824877 +0100
+++ ../SUNWgnome-session-2.28.0.hacked/gnome-session-2.28.0/gnome-session/main.c 2009-10-19 16:43:20.143550467 +0100
@@ -210,7 +210,8 @@
}
static void
-append_required_apps (GsmManager *manager)
+append_required_apps (GsmManager *manager,
+ char **autostart_dirs)
{
GSList *required_components;
GSList *r;
@@ -247,7 +248,7 @@
if (default_provider != NULL) {
char *app_path;
- app_path = gsm_util_find_desktop_file_for_app_name (default_provider, NULL);
+ app_path = gsm_util_find_desktop_file_for_app_name (default_provider, autostart_dirs);
if (app_path != NULL) {
gsm_manager_add_autostart_app (manager, app_path, component);
} else {
@@ -308,7 +309,7 @@
/* We do this at the end in case a saved session contains an
* application that already provides one of the components. */
append_default_apps (manager, default_session_key, autostart_dirs);
- append_required_apps (manager);
+ append_required_apps (manager, autostart_dirs);
g_strfreev (autostart_dirs);
}