summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-05-06 20:27:14 +0200
committerCarlos Garnacho <carlosg@gnome.org>2020-10-23 19:52:25 +0200
commit1639fe280e340402f5cc5b3127d8e8424ebeb367 (patch)
treeeaccd1335a337849f159339591091c902a71e8da
parent60024d1f5d3bb98f9e354c017da6e4d77ffdd774 (diff)
downloadmutter-1639fe280e340402f5cc5b3127d8e8424ebeb367.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);
}