[mate-screensaver] only allow one instance per user, fix dual login prompt

nmarques nmarques at fedoraproject.org
Thu Dec 6 20:23:49 UTC 2012


commit 5a50333692bbe894b5cbeb8954a5a1d3a710028f
Author: Nelson Marques <nmo.marques at gmail.com>
Date:   Thu Dec 6 20:20:38 2012 +0000

    only allow one instance per user, fix dual login prompt

 ...screensaver-1.5.1-only_allow_one_instance.patch |   59 ++++++++++++++++++++
 mate-screensaver.spec                              |   10 +++
 2 files changed, 69 insertions(+), 0 deletions(-)
---
diff --git a/mate-screensaver-1.5.1-only_allow_one_instance.patch b/mate-screensaver-1.5.1-only_allow_one_instance.patch
new file mode 100644
index 0000000..e10db15
--- /dev/null
+++ b/mate-screensaver-1.5.1-only_allow_one_instance.patch
@@ -0,0 +1,59 @@
+From ca4b57cdd02c223763c9d60742630127340bbeee Mon Sep 17 00:00:00 2001
+From: Nelson Marques <nmo.marques at gmail.com>
+Date: Wed, 5 Dec 2012 16:12:28 +0000
+Subject: [PATCH] prevent mate-screensaver to launch a 2nd instance
+
+---
+ src/gs-listener-dbus.c | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/src/gs-listener-dbus.c b/src/gs-listener-dbus.c
+index ed1199f..99e05df 100644
+--- a/src/gs-listener-dbus.c
++++ b/src/gs-listener-dbus.c
+@@ -2204,7 +2204,7 @@ gboolean
+ gs_listener_acquire (GSListener *listener,
+                      GError    **error)
+ {
+-	gboolean  acquired;
++        int       acquired;
+ 	DBusError buserror;
+ 	gboolean  is_connected;
+ 
+@@ -2254,7 +2254,8 @@ gs_listener_acquire (GSListener *listener,
+ 
+ 	acquired = dbus_bus_request_name (listener->priv->connection,
+ 	                                  GS_LISTENER_SERVICE,
+-	                                  0, &buserror) != -1;
++	                                  DBUS_NAME_FLAG_DO_NOT_QUEUE,
++	                                  &buserror);
+ 	if (dbus_error_is_set (&buserror))
+ 	{
+ 		g_set_error (error,
+@@ -2263,6 +2264,14 @@ gs_listener_acquire (GSListener *listener,
+ 		             "%s",
+ 		             buserror.message);
+ 	}
++	if (acquired == DBUS_REQUEST_NAME_REPLY_EXISTS) {
++	        g_set_error (error,
++	                     GS_LISTENER_ERROR,
++	                     GS_LISTENER_ERROR_ACQUISITION_FAILURE,
++	                     "%s",
++	                     _("screensaver already running in this session"));
++	        return FALSE;
++        }
+ 
+ 	dbus_error_free (&buserror);
+ 
+@@ -2331,7 +2340,7 @@ gs_listener_acquire (GSListener *listener,
+ 	}
+ 
+ finish:
+-	return acquired;
++        return (acquired != -1);
+ }
+ 
+ static char *
+-- 
+1.8.0
+
diff --git a/mate-screensaver.spec b/mate-screensaver.spec
index 35cc913..fdea2f1 100644
--- a/mate-screensaver.spec
+++ b/mate-screensaver.spec
@@ -7,6 +7,10 @@ License:        GPLv2+ and LGPLv2+
 URL:            http://pub.mate-desktop.org
 Source0:        http://pub.mate-desktop.org/releases/1.5/%{name}-%{version}.tar.xz
 
+# PATCH-FIX-UPSTREAM mate-screensaver-1.5.1-only_allow_one_instance.patch - nmo.marques at gmail.com
+# only allow one instance per user; fixes dual password prompt after hibernate/suspend, upstreamed
+Patch0:        %{name}-1.5.1-only_allow_one_instance.patch
+
 BuildRequires: gtk2-devel
 BuildRequires: libmateui-devel
 BuildRequires: dbus-glib-devel
@@ -52,6 +56,7 @@ Development files for mate-screensaver
 
 %prep
 %setup -q
+%patch -p1
 NOCONFIGURE=1 ./autogen.sh
 
 
@@ -117,6 +122,11 @@ fi
 
 
 %changelog
+* Thu Dec 05 2012 Nelson Marques <nmo.marques at gmail.com> - 1.5.1-2
+* add mate-screensaver-1.5.1-only_allow_one_instance.patch: fix double
+  password prompt when returning from hibernate/suspend. Only allow one
+  instance per user.
+
 * Fri Nov 23 2012 Leigh Scott <leigh123linux at googlemail.com> - 1.5.1-1
 - update to 1.5.1 release
 - drop upstream commits patch


More information about the scm-commits mailing list