mirror of
https://github.com/brl/mutter.git
synced 2024-12-23 03:22:04 +00:00
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/1403
This commit is contained in:
parent
7fafec21b6
commit
0be0a14225
@ -1078,24 +1078,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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user