[mutter/wip/carlosg/abs-input-mapper: 121/122] backends: Turn builtin touchscreen on/off together with DPMS



commit d30301c00a6e884d1ccff4765d93c17e22ee2fc3
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Apr 20 17:48:25 2018 +0200

    backends: Turn builtin touchscreen on/off together with DPMS
    
    This takes over gsd-power code, that would disable touchscreens
    on DPMS off.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=742598
    https://gitlab.gnome.org/GNOME/gnome-settings-daemon/issues/29

 src/backends/meta-input-settings.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
---
diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c
index 33f90b769..1ab04f84b 100644
--- a/src/backends/meta-input-settings.c
+++ b/src/backends/meta-input-settings.c
@@ -1755,6 +1755,38 @@ check_mappable_devices (MetaInputSettings *input_settings)
     }
 }
 
+static void
+power_save_mode_changed_cb (MetaMonitorManager *manager,
+                            GParamSpec         *pspec,
+                            gpointer            user_data)
+{
+  MetaInputSettingsPrivate *priv;
+  ClutterInputDevice *device;
+  MetaLogicalMonitor *logical_monitor;
+  MetaMonitor *builtin;
+  gboolean on;
+
+  on = (manager->power_save_mode == META_POWER_SAVE_ON);
+  priv = meta_input_settings_get_instance_private (user_data);
+
+  builtin = meta_monitor_manager_get_laptop_panel (manager);
+  if (!builtin)
+    return;
+
+  logical_monitor = meta_monitor_get_logical_monitor (builtin);
+  if (!logical_monitor)
+    return;
+
+  device =
+    meta_input_mapper_get_logical_monitor_device (priv->input_mapper,
+                                                  logical_monitor,
+                                                  CLUTTER_TOUCHSCREEN_DEVICE);
+  if (!device)
+    return;
+
+  clutter_input_device_set_enabled (device, on);
+}
+
 static void
 meta_input_settings_constructed (GObject *object)
 {
@@ -1835,6 +1867,8 @@ meta_input_settings_init (MetaInputSettings *settings)
   priv->monitor_manager = g_object_ref (meta_monitor_manager_get ());
   g_signal_connect (priv->monitor_manager, "monitors-changed-internal",
                     G_CALLBACK (monitors_changed_cb), settings);
+  g_signal_connect (priv->monitor_manager, "notify::power-save-mode",
+                    G_CALLBACK (power_save_mode_changed_cb), settings);
 
 #ifdef HAVE_LIBWACOM
   priv->wacom_db = libwacom_database_new ();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]