mirror of
https://github.com/brl/mutter.git
synced 2025-01-12 04:34:40 +00:00
backends/native: Avoid direct udev usage in MetaInputSettingsNative
Use device capabilities to figure out whether configuration applies to a device or not. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2617>
This commit is contained in:
parent
46643b895c
commit
7dd25b62ed
@ -543,68 +543,18 @@ set_device_accel_profile (ClutterInputDevice *device,
|
|||||||
libinput_profile);
|
libinput_profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
has_udev_property (ClutterInputDevice *device,
|
|
||||||
const char *property)
|
|
||||||
{
|
|
||||||
struct libinput_device *libinput_device;
|
|
||||||
struct udev_device *udev_device;
|
|
||||||
struct udev_device *parent_udev_device;
|
|
||||||
|
|
||||||
libinput_device = meta_input_device_native_get_libinput_device (device);
|
|
||||||
if (!libinput_device)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
udev_device = libinput_device_get_udev_device (libinput_device);
|
|
||||||
|
|
||||||
if (!udev_device)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (NULL != udev_device_get_property_value (udev_device, property))
|
|
||||||
{
|
|
||||||
udev_device_unref (udev_device);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
parent_udev_device = udev_device_get_parent (udev_device);
|
|
||||||
udev_device_unref (udev_device);
|
|
||||||
|
|
||||||
if (!parent_udev_device)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (NULL != udev_device_get_property_value (parent_udev_device, property))
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
is_mouse_device (ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
return (has_udev_property (device, "ID_INPUT_MOUSE") &&
|
|
||||||
!has_udev_property (device, "ID_INPUT_POINTINGSTICK"));
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_input_settings_native_is_touchpad_device (MetaInputSettings *settings,
|
|
||||||
ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
return has_udev_property (device, "ID_INPUT_TOUCHPAD");
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
meta_input_settings_native_is_trackball_device (MetaInputSettings *settings,
|
|
||||||
ClutterInputDevice *device)
|
|
||||||
{
|
|
||||||
return has_udev_property (device, "ID_INPUT_TRACKBALL");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_input_settings_native_set_mouse_accel_profile (MetaInputSettings *settings,
|
meta_input_settings_native_set_mouse_accel_profile (MetaInputSettings *settings,
|
||||||
ClutterInputDevice *device,
|
ClutterInputDevice *device,
|
||||||
GDesktopPointerAccelProfile profile)
|
GDesktopPointerAccelProfile profile)
|
||||||
{
|
{
|
||||||
if (!is_mouse_device (device))
|
ClutterInputCapabilities caps = clutter_input_device_get_capabilities (device);
|
||||||
|
|
||||||
|
if ((caps & CLUTTER_INPUT_CAPABILITY_POINTER) == 0)
|
||||||
|
return;
|
||||||
|
if ((caps &
|
||||||
|
(CLUTTER_INPUT_CAPABILITY_TRACKBALL |
|
||||||
|
CLUTTER_INPUT_CAPABILITY_TRACKPOINT)) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
set_device_accel_profile (device, profile);
|
set_device_accel_profile (device, profile);
|
||||||
@ -615,7 +565,9 @@ meta_input_settings_native_set_trackball_accel_profile (MetaInputSettings
|
|||||||
ClutterInputDevice *device,
|
ClutterInputDevice *device,
|
||||||
GDesktopPointerAccelProfile profile)
|
GDesktopPointerAccelProfile profile)
|
||||||
{
|
{
|
||||||
if (!meta_input_settings_native_is_trackball_device (settings, device))
|
ClutterInputCapabilities caps = clutter_input_device_get_capabilities (device);
|
||||||
|
|
||||||
|
if ((caps & CLUTTER_INPUT_CAPABILITY_TRACKBALL) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
set_device_accel_profile (device, profile);
|
set_device_accel_profile (device, profile);
|
||||||
@ -761,8 +713,14 @@ meta_input_settings_native_set_mouse_middle_click_emulation (MetaInputSettings
|
|||||||
gboolean enabled)
|
gboolean enabled)
|
||||||
{
|
{
|
||||||
struct libinput_device *libinput_device;
|
struct libinput_device *libinput_device;
|
||||||
|
ClutterInputCapabilities caps = clutter_input_device_get_capabilities (device);
|
||||||
|
|
||||||
if (!is_mouse_device (device))
|
if ((caps & CLUTTER_INPUT_CAPABILITY_POINTER) == 0)
|
||||||
|
return;
|
||||||
|
if ((caps &
|
||||||
|
(CLUTTER_INPUT_CAPABILITY_TRACKBALL |
|
||||||
|
CLUTTER_INPUT_CAPABILITY_TOUCHPAD |
|
||||||
|
CLUTTER_INPUT_CAPABILITY_TRACKPOINT)) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
libinput_device = meta_input_device_native_get_libinput_device (device);
|
libinput_device = meta_input_device_native_get_libinput_device (device);
|
||||||
@ -779,8 +737,9 @@ meta_input_settings_native_set_touchpad_middle_click_emulation (MetaInputSetting
|
|||||||
gboolean enabled)
|
gboolean enabled)
|
||||||
{
|
{
|
||||||
struct libinput_device *libinput_device;
|
struct libinput_device *libinput_device;
|
||||||
|
ClutterInputCapabilities caps = clutter_input_device_get_capabilities (device);
|
||||||
|
|
||||||
if (!meta_input_settings_native_is_touchpad_device (settings, device))
|
if ((caps & CLUTTER_INPUT_CAPABILITY_TOUCHPAD) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
libinput_device = meta_input_device_native_get_libinput_device (device);
|
libinput_device = meta_input_device_native_get_libinput_device (device);
|
||||||
@ -797,8 +756,9 @@ meta_input_settings_native_set_trackball_middle_click_emulation (MetaInputSettin
|
|||||||
gboolean enabled)
|
gboolean enabled)
|
||||||
{
|
{
|
||||||
struct libinput_device *libinput_device;
|
struct libinput_device *libinput_device;
|
||||||
|
ClutterInputCapabilities caps = clutter_input_device_get_capabilities (device);
|
||||||
|
|
||||||
if (!meta_input_settings_native_is_trackball_device (settings, device))
|
if ((caps & CLUTTER_INPUT_CAPABILITY_TRACKBALL) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
libinput_device = meta_input_device_native_get_libinput_device (device);
|
libinput_device = meta_input_device_native_get_libinput_device (device);
|
||||||
@ -850,7 +810,6 @@ meta_input_settings_native_class_init (MetaInputSettingsNativeClass *klass)
|
|||||||
input_settings_class->set_trackball_middle_click_emulation = meta_input_settings_native_set_trackball_middle_click_emulation;
|
input_settings_class->set_trackball_middle_click_emulation = meta_input_settings_native_set_trackball_middle_click_emulation;
|
||||||
|
|
||||||
input_settings_class->has_two_finger_scroll = meta_input_settings_native_has_two_finger_scroll;
|
input_settings_class->has_two_finger_scroll = meta_input_settings_native_has_two_finger_scroll;
|
||||||
input_settings_class->is_trackball_device = meta_input_settings_native_is_trackball_device;
|
|
||||||
|
|
||||||
props[PROP_SEAT_IMPL] =
|
props[PROP_SEAT_IMPL] =
|
||||||
g_param_spec_object ("seat-impl",
|
g_param_spec_object ("seat-impl",
|
||||||
|
Loading…
Reference in New Issue
Block a user