diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-05-06 20:27:14 +0200 |
---|---|---|
committer | Jonas Ã…dahl <jadahl@gmail.com> | 2020-10-23 18:48:18 +0000 |
commit | 82c6c3f303f7763d20d28682162581b4b6a24f2e (patch) | |
tree | 02b196c541d1db5c89d1ade4a40fdb83a527ede7 | |
parent | c4d11f755038170eaab7ecf15363c9515a9718ea (diff) | |
download | mutter-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.c | 29 | ||||
-rw-r--r-- | src/backends/native/meta-input-settings-native.c | 15 |
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); } |