[gnome-settings-daemon/f21] Fix disabled touchscreens when resuming from suspend (#1173849)

Bastien Nocera hadess at fedoraproject.org
Tue Jan 20 16:17:12 UTC 2015


commit c6abb7e4cc85af2917c31b8e8800054b0eb0b5fb
Author: Bastien Nocera <hadess at hadess.net>
Date:   Tue Jan 20 17:16:33 2015 +0100

    Fix disabled touchscreens when resuming from suspend (#1173849)

 ...-Don-t-forget-about-disabled-touchscreens.patch |  101 ++++++++++++++++++++
 gnome-settings-daemon.spec                         |    9 ++-
 2 files changed, 109 insertions(+), 1 deletions(-)
---
diff --git a/0001-power-Don-t-forget-about-disabled-touchscreens.patch b/0001-power-Don-t-forget-about-disabled-touchscreens.patch
new file mode 100644
index 0000000..9a3c95b
--- /dev/null
+++ b/0001-power-Don-t-forget-about-disabled-touchscreens.patch
@@ -0,0 +1,101 @@
+From 456ce166b43e11edd900d43ec76879b93659d60a Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Tue, 20 Jan 2015 16:58:16 +0100
+Subject: [PATCH] power: Don't forget about disabled touchscreens
+
+When blanking the screen twice, which can happen when suspending,
+don't forget about previously disabled touchscreens.
+
+See https://bugzilla.redhat.com/show_bug.cgi?id=1173849
+
+https://bugzilla.gnome.org/show_bug.cgi?id=743252
+---
+ plugins/power/gsd-power-manager.c | 27 ++++++++++++++++-----------
+ 1 file changed, 16 insertions(+), 11 deletions(-)
+
+diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
+index 0c2469d..b31ec6d 100644
+--- a/plugins/power/gsd-power-manager.c
++++ b/plugins/power/gsd-power-manager.c
+@@ -129,7 +129,7 @@ struct GsdPowerManagerPrivate
+         /* Screensaver */
+         GsdScreenSaver          *screensaver_proxy;
+         gboolean                 screensaver_active;
+-        GList                   *disabled_devices;
++        GHashTable              *disabled_devices;
+ 
+         /* State */
+         gboolean                 lid_is_present;
+@@ -921,12 +921,11 @@ screen_devices_disable (GsdPowerManager *manager)
+ {
+         GsdDeviceMapper *mapper;
+         GdkDeviceManager *device_manager;
+-        GList *devices, *l, *to_change;
++        GList *devices, *l;
+ 
+         mapper = gsd_device_mapper_get ();
+         device_manager = gdk_display_get_device_manager (gdk_display_get_default ());
+         devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_SLAVE);
+-        to_change = NULL;
+         for (l = devices; l != NULL; l = l->next ) {
+                 GdkDevice *device = l->data;
+ 
+@@ -934,27 +933,30 @@ screen_devices_disable (GsdPowerManager *manager)
+                         int device_id;
+ 
+                         g_object_get (device, "device-id", &device_id, NULL);
+-                        to_change = g_list_prepend (to_change, GINT_TO_POINTER (device_id));
++                        g_hash_table_insert (manager->priv->disabled_devices,
++                                             GINT_TO_POINTER (device_id),
++                                             GINT_TO_POINTER (TRUE));
+                 }
+         }
+         g_list_free (devices);
+ 
+-        for (l = to_change; l != NULL; l = l->next)
++        devices = g_hash_table_get_keys (manager->priv->disabled_devices);
++        for (l = devices; l != NULL; l = l->next)
+                 set_device_enabled (GPOINTER_TO_INT (l->data), FALSE);
+-
+-        g_clear_pointer (&manager->priv->disabled_devices, g_list_free);
+-        manager->priv->disabled_devices = to_change;
++        g_list_free (devices);
+ }
+ 
+ static void
+ screen_devices_enable (GsdPowerManager *manager)
+ {
+-        GList *l;
++        GList *l, *disabled_devices;
+ 
+-        for (l = manager->priv->disabled_devices; l != NULL; l = l->next)
++        disabled_devices = g_hash_table_get_keys (manager->priv->disabled_devices);
++        for (l = disabled_devices; l != NULL; l = l->next)
+                 set_device_enabled (GPOINTER_TO_INT (l->data), TRUE);
++        g_list_free (disabled_devices);
+ 
+-        g_clear_pointer (&manager->priv->disabled_devices, g_list_free);
++        g_hash_table_remove_all (manager->priv->disabled_devices);
+ }
+ 
+ static void
+@@ -1828,6 +1830,8 @@ gsd_power_manager_finalize (GObject *object)
+ 
+         gsd_power_manager_stop (manager);
+ 
++        g_clear_pointer (&manager->priv->disabled_devices, g_hash_table_unref);
++
+         g_clear_object (&manager->priv->connection);
+ 
+         if (manager->priv->name_id != 0)
+@@ -2521,6 +2525,7 @@ gsd_power_manager_init (GsdPowerManager *manager)
+         manager->priv->inhibit_lid_switch_fd = -1;
+         manager->priv->inhibit_suspend_fd = -1;
+         manager->priv->bus_cancellable = g_cancellable_new ();
++        manager->priv->disabled_devices = g_hash_table_new (g_direct_hash, g_direct_equal);
+ }
+ 
+ /* returns new level */
+-- 
+2.1.0
+
diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec
index 0b2b09f..8000b7f 100644
--- a/gnome-settings-daemon.spec
+++ b/gnome-settings-daemon.spec
@@ -7,7 +7,7 @@
 
 Name:           gnome-settings-daemon
 Version:        3.14.2
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        The daemon sharing settings from GNOME to GTK+/KDE applications
 
 Group:          System Environment/Daemons
@@ -18,6 +18,8 @@ Source:         http://download.gnome.org/sources/%{name}/3.14/%{name}-%{version
 # disable wacom for ppc/ppc64 (used on RHEL)
 Patch0:         %{name}-3.5.4-ppc-no-wacom.patch
 
+Patch1:         0001-power-Don-t-forget-about-disabled-touchscreens.patch
+
 BuildRequires:  gtk3-devel >= %{gtk3_version}
 BuildRequires:  gnome-desktop3-devel >= %{gnome_desktop_version}
 BuildRequires:  xorg-x11-proto-devel libXxf86misc-devel
@@ -93,6 +95,8 @@ developing applications that use %{name}.
 
 autoreconf -i -f
 
+%patch1 -p1
+
 %build
 %configure --disable-static \
 %if 0%{?rhel}
@@ -261,6 +265,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 %{_libexecdir}/gsd-test-xsettings
 
 %changelog
+* Tue Jan 20 2015 Bastien Nocera <bnocera at redhat.com> 3.14.2-2
+- Fix disabled touchscreens when resuming from suspend (#1173849)
+
 * Tue Nov 11 2014 Kalev Lember <kalevlember at gmail.com> - 3.14.2-1
 - Update to 3.14.2
 


More information about the scm-commits mailing list