diff options
Diffstat (limited to 'extra/xfce4-settings/xfce4-settings-4.10.0-check-service-name-of-nameownerchanged.patch')
-rw-r--r-- | extra/xfce4-settings/xfce4-settings-4.10.0-check-service-name-of-nameownerchanged.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/extra/xfce4-settings/xfce4-settings-4.10.0-check-service-name-of-nameownerchanged.patch b/extra/xfce4-settings/xfce4-settings-4.10.0-check-service-name-of-nameownerchanged.patch new file mode 100644 index 000000000..1d271476e --- /dev/null +++ b/extra/xfce4-settings/xfce4-settings-4.10.0-check-service-name-of-nameownerchanged.patch @@ -0,0 +1,55 @@ +From 2ec636049b95d0c51286253813b5b1a074472afc Mon Sep 17 00:00:00 2001 +From: Lionel Le Folgoc <lionel@lefolgoc.net> +Date: Sun, 09 Sep 2012 09:50:19 +0000 +Subject: Xfsettingsd: Check service name of NameOwnerChanged (bug #9273). + +In some conditions, the dbus spawn of xfconf leads to the +shutdown of xfsettingsd because it "thinks" another instance +is taking over... After some debugging I found that it +receives a NameOwnerChanged signal describing the launch +of Xfconf (name=org.xfce.Xfconf, old=, new=:1.11 for example). + +(cherry picked from commit c17fe35e6f2ff673bab102e736a327fa7bcc1d73) +--- +diff --git a/xfsettingsd/main.c b/xfsettingsd/main.c +index 0f3a68d..55c4183 100644 +--- a/xfsettingsd/main.c ++++ b/xfsettingsd/main.c +@@ -93,15 +93,29 @@ signal_handler (gint signum, + + + static DBusHandlerResult +-dbus_connection_filter_func (DBusConnection *connection, +- DBusMessage *message, +- void *user_data) ++dbus_connection_filter_func (DBusConnection *connection, ++ DBusMessage *message, ++ void *user_data) + { ++ gchar *name, *old, *new; ++ + if (dbus_message_is_signal (message, DBUS_INTERFACE_DBUS, "NameOwnerChanged")) + { +- g_printerr (G_LOG_DOMAIN ": %s\n", "Another instance took over. Leaving..."); +- gtk_main_quit (); +- return DBUS_HANDLER_RESULT_HANDLED; ++ /* double check if it is really org.xfce.SettingsDaemon ++ * being replaced, see bug 9273 */ ++ if (dbus_message_get_args (message, NULL, ++ DBUS_TYPE_STRING, &name, ++ DBUS_TYPE_STRING, &old, ++ DBUS_TYPE_STRING, &new, ++ DBUS_TYPE_INVALID)) ++ { ++ if (g_strcmp0 (name, XFSETTINGS_DBUS_NAME) == 0) ++ { ++ g_printerr (G_LOG_DOMAIN ": %s\n", "Another instance took over. Leaving..."); ++ gtk_main_quit (); ++ return DBUS_HANDLER_RESULT_HANDLED; ++ } ++ } + } + + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; +-- +cgit v0.9.0.3 |