Accepting request 81643 from GNOME:Factory

Update to 3.1.91 + additional fixes for new gdm

OBS-URL: https://build.opensuse.org/request/show/81643
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gnome-session?expand=0&rev=110
This commit is contained in:
Sascha Peilicke 2011-09-09 11:19:19 +00:00 committed by Git OBS Bridge
commit b3b59c2b48
5 changed files with 180 additions and 7 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1cdaa1f5edf2f3efad63ca1de3c5ab671e7607370f35afb6ba5259cbeba64b19
size 811215

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:14588110477eabd70496d1d97278223495311634cff712c1f228e1acf1a4d9c3
size 815368

View File

@ -0,0 +1,127 @@
diff --git a/gnome-session/gsm-consolekit.c b/gnome-session/gsm-consolekit.c
index f53993f..66bebd1 100644
--- a/gnome-session/gsm-consolekit.c
+++ b/gnome-session/gsm-consolekit.c
@@ -152,7 +152,8 @@ gsm_consolekit_dbus_filter (DBusConnection *connection,
DBUS_INTERFACE_LOCAL, "Disconnected") &&
strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0) {
gsm_consolekit_free_dbus (manager);
- return DBUS_HANDLER_RESULT_HANDLED;
+ /* let other filters get this disconnected signal, so that they
+ * can handle it too */
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index b531197..2d74d40 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -151,6 +151,7 @@ struct GsmManagerPrivate
DBusGProxy *bus_proxy;
DBusGConnection *connection;
+ gboolean dbus_disconnected : 1;
/* Interface with other parts of the system */
UpClient *up_client;
@@ -1814,6 +1815,11 @@ _disconnect_client (GsmManager *manager,
"phase");
}
+ if (manager->priv->dbus_disconnected && GSM_IS_DBUS_CLIENT (client)) {
+ g_debug ("GsmManager: dbus disconnected, not restarting application");
+ goto out;
+ }
+
if (app == NULL) {
g_debug ("GsmManager: unable to find application for client - not restarting");
goto out;
@@ -1872,6 +1878,12 @@ _disconnect_dbus_client (const char *id,
return FALSE;
}
+ /* If no service name, then we simply disconnect all clients */
+ if (!data->service_name) {
+ _disconnect_client (data->manager, client);
+ return TRUE;
+ }
+
name = gsm_dbus_client_get_bus_name (GSM_DBUS_CLIENT (client));
if (IS_STRING_EMPTY (name)) {
return FALSE;
@@ -1885,6 +1897,15 @@ _disconnect_dbus_client (const char *id,
return FALSE;
}
+/**
+ * remove_clients_for_connection:
+ * @manager: a #GsmManager
+ * @service_name: a service name
+ *
+ * Disconnects clients that own @service_name.
+ *
+ * If @service_name is NULL, then disconnects all clients for the connection.
+ */
static void
remove_clients_for_connection (GsmManager *manager,
const char *service_name)
@@ -1968,10 +1989,32 @@ bus_name_owner_changed (DBusGProxy *bus_proxy,
}
}
+static DBusHandlerResult
+gsm_manager_bus_filter (DBusConnection *connection,
+ DBusMessage *message,
+ void *user_data)
+{
+ GsmManager *manager;
+
+ manager = GSM_MANAGER (user_data);
+
+ if (dbus_message_is_signal (message,
+ DBUS_INTERFACE_LOCAL, "Disconnected") &&
+ strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0) {
+ g_debug ("GsmManager: dbus disconnected; disconnecting dbus clients...");
+ manager->priv->dbus_disconnected = TRUE;
+ remove_clients_for_connection (manager, NULL);
+ /* let other filters get this disconnected signal, so that they
+ * can handle it too */
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
static gboolean
register_manager (GsmManager *manager)
{
GError *error = NULL;
+ DBusConnection *connection;
error = NULL;
manager->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
@@ -1983,6 +2026,12 @@ register_manager (GsmManager *manager)
exit (1);
}
+ connection = dbus_g_connection_get_connection (manager->priv->connection);
+ dbus_connection_add_filter (connection,
+ gsm_manager_bus_filter,
+ manager, NULL);
+ manager->priv->dbus_disconnected = FALSE;
+
manager->priv->bus_proxy = dbus_g_proxy_new_for_name (manager->priv->connection,
DBUS_SERVICE_DBUS,
DBUS_PATH_DBUS,
diff --git a/gnome-session/gsm-shell.c b/gnome-session/gsm-shell.c
index 0b26f09..9785160 100644
--- a/gnome-session/gsm-shell.c
+++ b/gnome-session/gsm-shell.c
@@ -228,7 +228,8 @@ gsm_shell_bus_filter (DBusConnection *connection,
DBUS_INTERFACE_LOCAL, "Disconnected") &&
strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0) {
gsm_shell_disconnect_from_bus (shell);
- return DBUS_HANDLER_RESULT_HANDLED;
+ /* let other filters get this disconnected signal, so that they
+ * can handle it too */
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;

View File

@ -1,3 +1,47 @@
-------------------------------------------------------------------
Fri Sep 9 08:00:56 UTC 2011 - vuntz@opensuse.org
- Add gnome-session-dbus-disconnected.patch: this fixes the case
where the session bus quits before gnome-session, so we can
properly terminate the session. Helps make the new gdm work.
-------------------------------------------------------------------
Mon Sep 5 07:33:53 UTC 2011 - vuntz@opensuse.org
- Update to version 3.1.91:
+ Session Manager
- Fix usage of %lld for 64-bit formats
- Add a translator comment
+ Updated translations.
-------------------------------------------------------------------
Tue Aug 30 16:31:11 CEST 2011 - vuntz@opensuse.org
- Update to version 3.1.90:
+ Session Manager
- Support for debugging the fail whale dialog
- Show gnome-shell extensions in the fail whale dialog
- Respect lockdown in the fail whale dialog
- Add an IsSessionRunning DBus method
- Remove obsolete gconf sanity check
+ Updated translations.
- Add pkgconfig(json-glib-1.0) BuildRequires: new dependency.
- Remove gconf-sanity-check BuildRequires, as well as
gconf-sanity-check Requires for core subpackage: the gconf checks
are now gone.
-------------------------------------------------------------------
Fri Aug 12 14:32:08 CEST 2011 - dimstar@opensuse.org
- Update to version 3.1.5:
+ Session Manager:
- Fix --help to mention arguments for options that have one
- Support XDG_CURRENT_DESKTOP
+ Capplet:
- Respect OnlyShowIn and NotShowIn keys
- Code cleanup
+ Updated translations.
-------------------------------------------------------------------
Fri Jul 22 18:08:04 CEST 2011 - vuntz@opensuse.org

View File

@ -18,8 +18,8 @@
Name: gnome-session
Version: 3.1.3
Release: 2
Version: 3.1.91
Release: 1
License: GPLv2+
Summary: Session Tools for the GNOME Desktop
Url: http://www.gnome.org
@ -37,8 +37,9 @@ Patch1: gnome-session-kdm-support.patch
Patch2: gnome-session-wm-switch.patch
# PATCH-NEEDS-REBASE gnome-session-bgo507101-tile-ui.patch bgo507101 vuntz@novell.com -- Tile UI for logout dialog. (Was: PATCH-FIX-UPSTREAM)
Patch3: gnome-session-bgo507101-tile-ui.patch
# PATCH-FIX-UPSTREAM gnome-session-dbus-disconnected.patch vuntz@opensuse.org -- Various fixes for the case where dbus quits early; helps with the new gdm. Taken from git.
Patch4: gnome-session-dbus-disconnected.patch
BuildRequires: fdupes
BuildRequires: gconf-sanity-check
BuildRequires: gnome-common
BuildRequires: gnome-patch-translation
BuildRequires: hicolor-icon-theme
@ -52,6 +53,7 @@ BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(ice)
BuildRequires: pkgconfig(json-glib-1.0) >= 0.10
BuildRequires: pkgconfig(sm)
BuildRequires: pkgconfig(upower-glib)
BuildRequires: pkgconfig(xau)
@ -104,7 +106,6 @@ License: GPLv2+
Summary: Session Manager for GNOME -- Minimal Version
Requires: ConsoleKit
Requires: dbus-1-x11
Requires: gconf-sanity-check
Requires: gsettings-desktop-schemas >= 0.1.7
Requires: hicolor-icon-theme
%glib2_gsettings_schema_requires
@ -126,6 +127,7 @@ translation-update-upstream
#%patch2 -p1
# needs-rebase
#%patch3 -p0
%patch4 -p1
# gnome-patch-translation-update
%build