--- gnome-settings-daemon-2.30.2/plugins/background/gsd-background-manager.c 2010-03-10 12:38:37.000000000 +0100 +++ gnome-settings-daemon-2.30.2.modified/plugins/background/gsd-background-manager.c 2011-02-04 13:58:17.525556370 +0100 @@ -48,6 +48,7 @@ #include "gsd-background-manager.h" #define NAUTILUS_SHOW_DESKTOP_KEY "/apps/nautilus/preferences/show_desktop" +#define FILEMANAGER_KEY "/desktop/gnome/session/required_components/filemanager" #define GSD_BACKGROUND_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_BACKGROUND_MANAGER, GsdBackgroundManagerPrivate)) @@ -160,6 +161,28 @@ return running; } +static gboolean +is_filemanager_gconf_set (GsdBackgroundManager *manager) +{ + gchar *nautilus_key = NULL; + gchar **str_len = NULL; + gboolean result = FALSE; + + nautilus_key = gconf_client_get_string (manager->priv->client, + FILEMANAGER_KEY, + NULL); + if (nautilus_key != NULL) { + str_len = g_strsplit_set(nautilus_key," ", -1); + if (str_len != NULL && g_strv_length (str_len) > 0) { + g_strfreev (str_len); + result = TRUE; + } + g_free(nautilus_key); + } + + return result; +} + static void draw_background (GsdBackgroundManager *manager, gboolean use_crossfade) @@ -172,6 +195,10 @@ return; } + if (is_filemanager_gconf_set (manager)) { + use_crossfade = FALSE; + } + gnome_settings_profile_start (NULL); display = gdk_display_get_default ();