summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-05-06 20:27:14 +0200
committerJonas Ã…dahl <jadahl@gmail.com>2020-10-23 18:48:18 +0000
commit82c6c3f303f7763d20d28682162581b4b6a24f2e (patch)
tree02b196c541d1db5c89d1ade4a40fdb83a527ede7
parentc4d11f755038170eaab7ecf15363c9515a9718ea (diff)
downloadmutter-82c6c3f303f7763d20d28682162581b4b6a24f2e.tar.gz
backends: Move device mapping check into backend
Make the upper parts agnostic about the device being relative in order to apply the display mapping. Just make the low level bits resort to the identity matrix for those. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1486
-rw-r--r--src/backends/meta-input-settings.c29
-rw-r--r--src/backends/native/meta-input-settings-native.c15
2 files changed, 25 insertions, 19 deletions
diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c
index 045df81de..0fcac9095 100644
--- a/src/backends/meta-input-settings.c
+++ b/src/backends/meta-input-settings.c
@@ -1082,24 +1082,19 @@ update_device_display (MetaInputSettings *input_settings,
priv = meta_input_settings_get_instance_private (input_settings);
input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
- /* If mapping is relative, the device can move on all displays */
- if (clutter_input_device_get_device_type (device) == CLUTTER_TOUCHSCREEN_DEVICE ||
- clutter_input_device_get_mapping_mode (device) ==
- CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
+ meta_input_settings_find_monitor (input_settings, settings, device,
+ &monitor, &logical_monitor);
+ if (monitor)
{
- meta_input_settings_find_monitor (input_settings, settings, device,
- &monitor, &logical_monitor);
- if (monitor)
- {
- meta_input_mapper_remove_device (priv->input_mapper, device);
- meta_monitor_manager_get_monitor_matrix (priv->monitor_manager,
- monitor, logical_monitor, matrix);
- }
- else
- {
- if (meta_input_settings_delegate_on_mapper (input_settings, device))
- return;
- }
+ meta_input_mapper_remove_device (priv->input_mapper, device);
+ meta_monitor_manager_get_monitor_matrix (priv->monitor_manager,
+ monitor, logical_monitor,
+ matrix);
+ }
+ else
+ {
+ if (meta_input_settings_delegate_on_mapper (input_settings, device))
+ return;
}
input_settings_class->set_matrix (input_settings, device, matrix);
diff --git a/src/backends/native/meta-input-settings-native.c b/src/backends/native/meta-input-settings-native.c
index 6f4ff6ba7..9ad28452d 100644
--- a/src/backends/native/meta-input-settings-native.c
+++ b/src/backends/native/meta-input-settings-native.c
@@ -70,8 +70,19 @@ meta_input_settings_native_set_matrix (MetaInputSettings *settings,
{
cairo_matrix_t dev_matrix;
- cairo_matrix_init (&dev_matrix, matrix[0], matrix[3], matrix[1],
- matrix[4], matrix[2], matrix[5]);
+ if (clutter_input_device_get_device_type (device) ==
+ CLUTTER_TOUCHSCREEN_DEVICE ||
+ clutter_input_device_get_mapping_mode (device) ==
+ CLUTTER_INPUT_DEVICE_MAPPING_ABSOLUTE)
+ {
+ cairo_matrix_init (&dev_matrix, matrix[0], matrix[3], matrix[1],
+ matrix[4], matrix[2], matrix[5]);
+ }
+ else
+ {
+ cairo_matrix_init_identity (&dev_matrix);
+ }
+
g_object_set (device, "device-matrix", &dev_matrix, NULL);
}