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); }