From b56d31ef4857ff803e92b08cfc0cbb047c306727 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 3 Aug 2020 18:31:19 +0200 Subject: [PATCH] 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. Part-of: --- src/backends/meta-input-settings-private.h | 5 +-- src/backends/meta-input-settings.c | 31 ++++++++++++++- .../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 79bac8e07..3d35e5d06 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 846c58a03..96c50afec 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 7129eb656..fc4359429 100644 --- a/src/backends/native/meta-input-settings-native.c +++ b/src/backends/native/meta-input-settings-native.c @@ -26,7 +26,6 @@ #include #include -#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 36ae21e9f..a8b366315 100644 --- a/src/backends/x11/meta-input-settings-x11.c +++ b/src/backends/x11/meta-input-settings-x11.c @@ -35,7 +35,6 @@ #include #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;