[mutter/wip/carlosg/input-thread: 84/130] backends: Simplify MetaInputSettings vfunc




commit 9ba28a9988b6746ecb38524433d2ae9bd1b31640
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Aug 3 18:31:19 2020 +0200

    backends: Simplify MetaInputSettings vfunc
    
    Rename the set_tablet_keep_aspect() vfunc into a set_tablet_aspect_ratio()
    one that takes an aspect ratio double, instead of leaking monitor info
    into subclasses to let them all figure out this number themselves.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403

 src/backends/meta-input-settings-private.h       |  5 ++--
 src/backends/meta-input-settings.c               | 31 +++++++++++++++++--
 src/backends/native/meta-input-settings-native.c | 38 ++++--------------------
 src/backends/x11/meta-input-settings-x11.c       | 33 +++++---------------
 4 files changed, 43 insertions(+), 64 deletions(-)
---
diff --git a/src/backends/meta-input-settings-private.h b/src/backends/meta-input-settings-private.h
index 79bac8e07a..3d35e5d065 100644
--- a/src/backends/meta-input-settings-private.h
+++ b/src/backends/meta-input-settings-private.h
@@ -93,10 +93,9 @@ struct _MetaInputSettingsClass
   void (* set_tablet_mapping)        (MetaInputSettings      *settings,
                                       ClutterInputDevice     *device,
                                       GDesktopTabletMapping   mapping);
-  void (* set_tablet_keep_aspect)    (MetaInputSettings      *settings,
+  void (* set_tablet_aspect_ratio)   (MetaInputSettings      *settings,
                                       ClutterInputDevice     *device,
-                                      MetaLogicalMonitor     *logical_monitor,
-                                      gboolean                keep_aspect);
+                                      double                  ratio);
   void (* set_tablet_area)           (MetaInputSettings      *settings,
                                       ClutterInputDevice     *device,
                                       gdouble                 padding_left,
diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c
index 846c58a038..96c50afeca 100644
--- a/src/backends/meta-input-settings.c
+++ b/src/backends/meta-input-settings.c
@@ -1012,6 +1012,7 @@ update_tablet_keep_aspect (MetaInputSettings  *input_settings,
   MetaInputSettingsClass *input_settings_class;
   MetaLogicalMonitor *logical_monitor = NULL;
   gboolean keep_aspect;
+  double aspect_ratio;
 
   if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE &&
       clutter_input_device_get_device_type (device) != CLUTTER_PEN_DEVICE &&
@@ -1037,8 +1038,34 @@ update_tablet_keep_aspect (MetaInputSettings  *input_settings,
   meta_input_settings_find_monitor (input_settings, settings, device,
                                     NULL, &logical_monitor);
 
-  input_settings_class->set_tablet_keep_aspect (input_settings, device,
-                                                logical_monitor, keep_aspect);
+  if (keep_aspect)
+    {
+      int width, height;
+
+      if (logical_monitor)
+        {
+          width = logical_monitor->rect.width;
+          height = logical_monitor->rect.height;
+        }
+      else
+        {
+          MetaMonitorManager *monitor_manager;
+          MetaBackend *backend;
+
+          backend = meta_get_backend ();
+          monitor_manager = meta_backend_get_monitor_manager (backend);
+          meta_monitor_manager_get_screen_size (monitor_manager,
+                                                &width, &height);
+        }
+
+      aspect_ratio = (double) width / height;
+    }
+  else
+    {
+      aspect_ratio = 0;
+    }
+
+  input_settings_class->set_tablet_aspect_ratio (input_settings, device, aspect_ratio);
 }
 
 static void
diff --git a/src/backends/native/meta-input-settings-native.c 
b/src/backends/native/meta-input-settings-native.c
index 7129eb6560..fc43594295 100644
--- a/src/backends/native/meta-input-settings-native.c
+++ b/src/backends/native/meta-input-settings-native.c
@@ -26,7 +26,6 @@
 #include <linux/input-event-codes.h>
 #include <libinput.h>
 
-#include "backends/meta-logical-monitor.h"
 #include "backends/native/meta-backend-native.h"
 #include "backends/native/meta-input-device-native.h"
 #include "backends/native/meta-input-device-tool-native.h"
@@ -549,40 +548,13 @@ meta_input_settings_native_set_tablet_mapping (MetaInputSettings     *settings,
 }
 
 static void
-meta_input_settings_native_set_tablet_keep_aspect (MetaInputSettings  *settings,
-                                                   ClutterInputDevice *device,
-                                                   MetaLogicalMonitor *logical_monitor,
-                                                   gboolean            keep_aspect)
+meta_input_settings_native_set_tablet_aspect_ratio (MetaInputSettings  *settings,
+                                                    ClutterInputDevice *device,
+                                                    gdouble             aspect_ratio)
 {
-  double aspect_ratio = 0;
-
   if (meta_input_device_native_get_mapping_mode (device) ==
       META_INPUT_DEVICE_MAPPING_RELATIVE)
-    keep_aspect = FALSE;
-
-  if (keep_aspect)
-    {
-      int width, height;
-
-      if (logical_monitor)
-        {
-          width = logical_monitor->rect.width;
-          height = logical_monitor->rect.height;
-        }
-      else
-        {
-          MetaMonitorManager *monitor_manager;
-          MetaBackend *backend;
-
-          backend = meta_get_backend ();
-          monitor_manager = meta_backend_get_monitor_manager (backend);
-          meta_monitor_manager_get_screen_size (monitor_manager,
-                                                &width,
-                                                &height);
-        }
-
-      aspect_ratio = (double) width / height;
-    }
+    aspect_ratio = 0;
 
   g_object_set (device, "output-aspect-ratio", aspect_ratio, NULL);
 }
@@ -745,7 +717,7 @@ meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
   input_settings_class->set_disable_while_typing = meta_input_settings_native_set_disable_while_typing;
 
   input_settings_class->set_tablet_mapping = meta_input_settings_native_set_tablet_mapping;
-  input_settings_class->set_tablet_keep_aspect = meta_input_settings_native_set_tablet_keep_aspect;
+  input_settings_class->set_tablet_aspect_ratio = meta_input_settings_native_set_tablet_aspect_ratio;
   input_settings_class->set_tablet_area = meta_input_settings_native_set_tablet_area;
 
   input_settings_class->set_mouse_accel_profile = meta_input_settings_native_set_mouse_accel_profile;
diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c
index 36ae21e9fe..a8b366315d 100644
--- a/src/backends/x11/meta-input-settings-x11.c
+++ b/src/backends/x11/meta-input-settings-x11.c
@@ -35,7 +35,6 @@
 #include <gudev/gudev.h>
 #endif
 
-#include "backends/meta-logical-monitor.h"
 #include "backends/x11/meta-backend-x11.h"
 #include "backends/x11/meta-input-device-x11.h"
 #include "core/display-private.h"
@@ -735,37 +734,19 @@ meta_input_settings_x11_set_tablet_area (MetaInputSettings  *settings,
 }
 
 static void
-meta_input_settings_x11_set_tablet_keep_aspect (MetaInputSettings  *settings,
-                                                ClutterInputDevice *device,
-                                                MetaLogicalMonitor *logical_monitor,
-                                                gboolean            keep_aspect)
+meta_input_settings_x11_set_tablet_aspect_ratio (MetaInputSettings  *settings,
+                                                 ClutterInputDevice *device,
+                                                 gdouble             aspect_ratio)
 {
-  gint32 width, height, dev_x, dev_y, dev_width, dev_height, area[4] = { 0 };
+  int32_t dev_x, dev_y, dev_width, dev_height, area[4] = { 0 };
 
   if (!device_query_area (device, &dev_x, &dev_y, &dev_width, &dev_height))
     return;
 
-  if (keep_aspect)
+  if (aspect_ratio > 0)
     {
-      double aspect_ratio, dev_aspect;
+      double dev_aspect;
 
-      if (logical_monitor)
-        {
-          width = logical_monitor->rect.width;
-          height = logical_monitor->rect.height;
-        }
-      else
-        {
-          MetaMonitorManager *monitor_manager;
-          MetaBackend *backend;
-
-          backend = meta_get_backend ();
-          monitor_manager = meta_backend_get_monitor_manager (backend);
-          meta_monitor_manager_get_screen_size (monitor_manager,
-                                                &width, &height);
-        }
-
-      aspect_ratio = (double) width / height;
       dev_aspect = (double) dev_width / dev_height;
 
       if (dev_aspect > aspect_ratio)
@@ -937,7 +918,7 @@ meta_input_settings_x11_class_init (MetaInputSettingsX11Class *klass)
   input_settings_class->set_keyboard_repeat = meta_input_settings_x11_set_keyboard_repeat;
 
   input_settings_class->set_tablet_mapping = meta_input_settings_x11_set_tablet_mapping;
-  input_settings_class->set_tablet_keep_aspect = meta_input_settings_x11_set_tablet_keep_aspect;
+  input_settings_class->set_tablet_aspect_ratio = meta_input_settings_x11_set_tablet_aspect_ratio;
   input_settings_class->set_tablet_area = meta_input_settings_x11_set_tablet_area;
 
   input_settings_class->set_mouse_accel_profile = meta_input_settings_x11_set_mouse_accel_profile;


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