diff --git a/nautilus-boot-order.patch b/nautilus-boot-order.patch new file mode 100644 index 0000000..4eb2ed0 --- /dev/null +++ b/nautilus-boot-order.patch @@ -0,0 +1,113 @@ +Index: nautilus-2.30.1/cut-n-paste-code/libegg/eggsmclient-xsmp.c +=================================================================== +--- nautilus-2.30.1.orig/cut-n-paste-code/libegg/eggsmclient-xsmp.c ++++ nautilus-2.30.1/cut-n-paste-code/libegg/eggsmclient-xsmp.c +@@ -317,6 +317,9 @@ sm_client_xsmp_startup (EggSMClient *cli + char *ret_client_id; + char error_string_ret[256]; + ++ if (xsmp->connection) ++ return; ++ + xsmp->client_id = g_strdup (client_id); + + ice_init (); +Index: nautilus-2.30.1/cut-n-paste-code/libegg/eggsmclient.c +=================================================================== +--- nautilus-2.30.1.orig/cut-n-paste-code/libegg/eggsmclient.c ++++ nautilus-2.30.1/cut-n-paste-code/libegg/eggsmclient.c +@@ -175,6 +175,7 @@ egg_sm_client_class_init (EggSMClientCla + 0); + } + ++static gboolean sm_client_connect = FALSE; + static gboolean sm_client_disable = FALSE; + static char *sm_client_state_file = NULL; + static char *sm_client_id = NULL; +@@ -202,8 +203,10 @@ sm_client_post_parse_func (GOptionContex + * use the same client id. */ + g_unsetenv ("DESKTOP_AUTOSTART_ID"); + +- if (EGG_SM_CLIENT_GET_CLASS (client)->startup) +- EGG_SM_CLIENT_GET_CLASS (client)->startup (client, sm_client_id); ++ if (sm_client_connect) { ++ if (EGG_SM_CLIENT_GET_CLASS (client)->startup) ++ EGG_SM_CLIENT_GET_CLASS (client)->startup (client, sm_client_id); ++ } + return TRUE; + } + +@@ -240,6 +243,14 @@ egg_sm_client_get_option_group (void) + { "sm-config-prefix", 0, G_OPTION_FLAG_HIDDEN, + G_OPTION_ARG_STRING, &sm_config_prefix, + NULL, NULL }, ++ /* Normally the client is connected to the session manager ++ * automatically, when calling 'egg_sm_client_get_option_group'. ++ * One can disable this automatic connect by calling this function. ++ * Using this function should definitely be an exception. ++ */ ++ { "sm-connect", 0, 0, ++ G_OPTION_ARG_NONE, &sm_client_connect, ++ NULL, NULL }, + { NULL } + }; + GOptionGroup *group; +@@ -472,6 +483,15 @@ egg_sm_client_will_quit (EggSMClient *cl + EGG_SM_CLIENT_GET_CLASS (client)->will_quit (client, will_quit); + } + ++void ++egg_sm_client_startup (EggSMClient *client) ++{ ++ g_return_if_fail (EGG_IS_SM_CLIENT (client)); ++ ++ if (EGG_SM_CLIENT_GET_CLASS (client)->startup) ++ EGG_SM_CLIENT_GET_CLASS (client)->startup (client, sm_client_id); ++} ++ + /** + * egg_sm_client_end_session: + * @style: a hint at how to end the session +Index: nautilus-2.30.1/cut-n-paste-code/libegg/eggsmclient.h +=================================================================== +--- nautilus-2.30.1.orig/cut-n-paste-code/libegg/eggsmclient.h ++++ nautilus-2.30.1/cut-n-paste-code/libegg/eggsmclient.h +@@ -106,6 +106,8 @@ void egg_sm_client_set_resta + /* Handling "quit_requested" signal */ + void egg_sm_client_will_quit (EggSMClient *client, + gboolean will_quit); ++/* startup the client (connect to sm) */ ++void egg_sm_client_startup (EggSMClient *client); + + /* Initiate a logout/reboot/shutdown */ + gboolean egg_sm_client_end_session (EggSMClientEndStyle style, +Index: nautilus-2.30.1/src/nautilus-main.c +=================================================================== +--- nautilus-2.30.1.orig/src/nautilus-main.c ++++ nautilus-2.30.1/src/nautilus-main.c +@@ -315,6 +315,13 @@ setup_debug_log (void) + setup_debug_log_glog (); + } + ++static gboolean ++startup_done_cb (EggSMClient *client) ++{ ++ egg_sm_client_startup (client); ++ return FALSE; ++} ++ + int + main (int argc, char *argv[]) + { +@@ -541,6 +548,11 @@ main (int argc, char *argv[]) + } + + if (is_event_loop_needed ()) { ++ /* Register with the session manager when we're done bringing up the ++ * desktop. This means we don't have to compete for resources with the ++ * application startup phase, so the desktop comes up sooner. */ ++ g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) startup_done_cb, application->smclient, NULL); ++ + gtk_main (); + } + } diff --git a/nautilus.changes b/nautilus.changes index 215fa4c..e0d9ef6 100644 --- a/nautilus.changes +++ b/nautilus.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed May 26 15:59:10 UTC 2010 - sshaw@decriptor.com + +- Pulled a patch from SLED. nautilus-boot-order.patch + Delays applets loading + ------------------------------------------------------------------- Wed May 26 13:37:36 CEST 2010 - vuntz@opensuse.org diff --git a/nautilus.spec b/nautilus.spec index 7035159..21f86ec 100644 --- a/nautilus.spec +++ b/nautilus.spec @@ -64,6 +64,8 @@ Patch15: nautilus-drives-and-volumes-on-desktop.diff Patch20: nautilus-bnc363122-lockdown-context-menus.diff # PATCH-NEEDS-REBASE nautilus-sysadmin-desktop-items.diff fate305252 federico@novell.com -- Support sysadmin-defined desktop items (was PATCH-FEATURE-OPENSUSE) Patch21: nautilus-sysadmin-desktop-items.diff +# PATCH-FIX-UPSTREAM nautilus-boot-order.patch bgo619841 sshaw@decriptor.com -- From SLED w/o sreadahead. Delays applets +Patch22: nautilus-boot-order.patch Requires: %{name}-lang = %{version} # So that symlinks to icons work: Requires: gnome-desktop gnome-icon-theme @@ -103,6 +105,7 @@ gnome-patch-translation-prepare ### %patch15 -p1 %patch20 -p1 #%patch21 -p1 +%patch22 -p1 gnome-patch-translation-update %build