backends/native: Drop device_native->seat_impl field

Work our way to the MetaSeatImpl internally in MetaInputDeviceNative,
instead of keeping a pointer right to it.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3278>
This commit is contained in:
Carlos Garnacho 2023-09-13 19:05:20 +02:00
parent 4ce97fba6c
commit 00bb4190b3

View File

@ -221,10 +221,22 @@ meta_input_device_native_get_dimensions (ClutterInputDevice *device,
return FALSE; return FALSE;
} }
static MetaSeatImpl *
seat_impl_from_device_native (MetaInputDeviceNative *device_native)
{
ClutterSeat *seat;
seat = clutter_input_device_get_seat (CLUTTER_INPUT_DEVICE (device_native));
return META_SEAT_NATIVE (seat)->impl;
}
static void static void
meta_input_device_native_bell_notify (MetaInputDeviceNative *device) meta_input_device_native_bell_notify (MetaInputDeviceNative *device)
{ {
meta_seat_impl_notify_bell_in_impl (device->seat_impl); MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
meta_seat_impl_notify_bell_in_impl (seat_impl);
} }
static void static void
@ -248,10 +260,11 @@ static guint
get_slow_keys_delay (ClutterInputDevice *device) get_slow_keys_delay (ClutterInputDevice *device)
{ {
MetaInputDeviceNative *device_native = META_INPUT_DEVICE_NATIVE (device); MetaInputDeviceNative *device_native = META_INPUT_DEVICE_NATIVE (device);
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device_native);
MetaKbdA11ySettings a11y_settings; MetaKbdA11ySettings a11y_settings;
MetaInputSettings *input_settings; MetaInputSettings *input_settings;
input_settings = meta_seat_impl_get_input_settings (device_native->seat_impl); input_settings = meta_seat_impl_get_input_settings (seat_impl);
meta_input_settings_get_kbd_a11y_settings (input_settings, &a11y_settings); meta_input_settings_get_kbd_a11y_settings (input_settings, &a11y_settings);
/* Settings use int, we use uint, make sure we dont go negative */ /* Settings use int, we use uint, make sure we dont go negative */
return MAX (0, a11y_settings.slowkeys_delay); return MAX (0, a11y_settings.slowkeys_delay);
@ -321,6 +334,7 @@ start_slow_keys (ClutterEvent *event,
MetaInputDeviceNative *device) MetaInputDeviceNative *device)
{ {
SlowKeysEventPending *slow_keys_event; SlowKeysEventPending *slow_keys_event;
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
if (clutter_event_get_flags (event) & CLUTTER_EVENT_FLAG_REPEATED) if (clutter_event_get_flags (event) & CLUTTER_EVENT_FLAG_REPEATED)
return TRUE; return TRUE;
@ -329,7 +343,7 @@ start_slow_keys (ClutterEvent *event,
slow_keys_event->device = device; slow_keys_event->device = device;
slow_keys_event->event = clutter_event_copy (event); slow_keys_event->event = clutter_event_copy (event);
slow_keys_event->timer = slow_keys_event->timer =
timeout_source_new (device->seat_impl, timeout_source_new (seat_impl,
get_slow_keys_delay (CLUTTER_INPUT_DEVICE (device)), get_slow_keys_delay (CLUTTER_INPUT_DEVICE (device)),
trigger_slow_keys, trigger_slow_keys,
slow_keys_event); slow_keys_event);
@ -370,10 +384,11 @@ static guint
get_debounce_delay (ClutterInputDevice *device) get_debounce_delay (ClutterInputDevice *device)
{ {
MetaInputDeviceNative *device_native = META_INPUT_DEVICE_NATIVE (device); MetaInputDeviceNative *device_native = META_INPUT_DEVICE_NATIVE (device);
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device_native);
MetaKbdA11ySettings a11y_settings; MetaKbdA11ySettings a11y_settings;
MetaInputSettings *input_settings; MetaInputSettings *input_settings;
input_settings = meta_seat_impl_get_input_settings (device_native->seat_impl); input_settings = meta_seat_impl_get_input_settings (seat_impl);
meta_input_settings_get_kbd_a11y_settings (input_settings, &a11y_settings); meta_input_settings_get_kbd_a11y_settings (input_settings, &a11y_settings);
/* Settings use int, we use uint, make sure we dont go negative */ /* Settings use int, we use uint, make sure we dont go negative */
return MAX (0, a11y_settings.debounce_delay); return MAX (0, a11y_settings.debounce_delay);
@ -394,11 +409,13 @@ static void
start_bounce_keys (ClutterEvent *event, start_bounce_keys (ClutterEvent *event,
MetaInputDeviceNative *device) MetaInputDeviceNative *device)
{ {
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
stop_bounce_keys (device); stop_bounce_keys (device);
device->debounce_key = clutter_event_get_key_code (event); device->debounce_key = clutter_event_get_key_code (event);
device->debounce_timer = device->debounce_timer =
timeout_source_new (device->seat_impl, timeout_source_new (seat_impl,
get_debounce_delay (CLUTTER_INPUT_DEVICE (device)), get_debounce_delay (CLUTTER_INPUT_DEVICE (device)),
clear_bounce_keys, clear_bounce_keys,
device); device);
@ -452,7 +469,9 @@ key_event_is_modifier (ClutterEvent *event)
static void static void
notify_stickykeys_mask (MetaInputDeviceNative *device) notify_stickykeys_mask (MetaInputDeviceNative *device)
{ {
meta_seat_impl_notify_kbd_a11y_mods_state_changed_in_impl (device->seat_impl, MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
meta_seat_impl_notify_kbd_a11y_mods_state_changed_in_impl (seat_impl,
device->stickykeys_latched_mask, device->stickykeys_latched_mask,
device->stickykeys_locked_mask); device->stickykeys_locked_mask);
} }
@ -462,7 +481,7 @@ update_internal_xkb_state (MetaInputDeviceNative *device,
xkb_mod_mask_t new_latched_mask, xkb_mod_mask_t new_latched_mask,
xkb_mod_mask_t new_locked_mask) xkb_mod_mask_t new_locked_mask)
{ {
MetaSeatImpl *seat_impl = device->seat_impl; MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
xkb_mod_mask_t depressed_mods; xkb_mod_mask_t depressed_mods;
xkb_mod_mask_t latched_mods; xkb_mod_mask_t latched_mods;
xkb_mod_mask_t locked_mods; xkb_mod_mask_t locked_mods;
@ -503,7 +522,7 @@ rewrite_stickykeys_event (ClutterEvent *event,
xkb_mod_mask_t new_latched_mask, xkb_mod_mask_t new_latched_mask,
xkb_mod_mask_t new_locked_mask) xkb_mod_mask_t new_locked_mask)
{ {
MetaSeatImpl *seat_impl = device->seat_impl; MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
struct xkb_state *xkb_state; struct xkb_state *xkb_state;
ClutterEvent *rewritten_event; ClutterEvent *rewritten_event;
ClutterModifierType modifiers; ClutterModifierType modifiers;
@ -531,11 +550,13 @@ rewrite_stickykeys_event (ClutterEvent *event,
static void static void
notify_stickykeys_change (MetaInputDeviceNative *device) notify_stickykeys_change (MetaInputDeviceNative *device)
{ {
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
/* Every time sticky keys setting is changed, clear the masks */ /* Every time sticky keys setting is changed, clear the masks */
device->stickykeys_depressed_mask = 0; device->stickykeys_depressed_mask = 0;
update_internal_xkb_state (device, 0, 0); update_internal_xkb_state (device, 0, 0);
meta_seat_impl_notify_kbd_a11y_flags_changed_in_impl (device->seat_impl, meta_seat_impl_notify_kbd_a11y_flags_changed_in_impl (seat_impl,
device->a11y_flags, device->a11y_flags,
META_A11Y_STICKY_KEYS_ENABLED); META_A11Y_STICKY_KEYS_ENABLED);
} }
@ -557,9 +578,11 @@ set_stickykeys_on (MetaInputDeviceNative *device)
static void static void
set_slowkeys_off (MetaInputDeviceNative *device) set_slowkeys_off (MetaInputDeviceNative *device)
{ {
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
device->a11y_flags &= ~META_A11Y_SLOW_KEYS_ENABLED; device->a11y_flags &= ~META_A11Y_SLOW_KEYS_ENABLED;
meta_seat_impl_notify_kbd_a11y_flags_changed_in_impl (device->seat_impl, meta_seat_impl_notify_kbd_a11y_flags_changed_in_impl (seat_impl,
device->a11y_flags, device->a11y_flags,
META_A11Y_SLOW_KEYS_ENABLED); META_A11Y_SLOW_KEYS_ENABLED);
} }
@ -567,9 +590,11 @@ set_slowkeys_off (MetaInputDeviceNative *device)
static void static void
set_slowkeys_on (MetaInputDeviceNative *device) set_slowkeys_on (MetaInputDeviceNative *device)
{ {
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
device->a11y_flags |= META_A11Y_SLOW_KEYS_ENABLED; device->a11y_flags |= META_A11Y_SLOW_KEYS_ENABLED;
meta_seat_impl_notify_kbd_a11y_flags_changed_in_impl (device->seat_impl, meta_seat_impl_notify_kbd_a11y_flags_changed_in_impl (seat_impl,
device->a11y_flags, device->a11y_flags,
META_A11Y_SLOW_KEYS_ENABLED); META_A11Y_SLOW_KEYS_ENABLED);
} }
@ -578,7 +603,7 @@ static gboolean
handle_stickykeys_press (ClutterEvent *event, handle_stickykeys_press (ClutterEvent *event,
MetaInputDeviceNative *device) MetaInputDeviceNative *device)
{ {
MetaSeatImpl *seat_impl = device->seat_impl; MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
xkb_mod_mask_t depressed_mods; xkb_mod_mask_t depressed_mods;
xkb_mod_mask_t new_latched_mask; xkb_mod_mask_t new_latched_mask;
xkb_mod_mask_t new_locked_mask; xkb_mod_mask_t new_locked_mask;
@ -630,7 +655,7 @@ static gboolean
handle_stickykeys_release (ClutterEvent *event, handle_stickykeys_release (ClutterEvent *event,
MetaInputDeviceNative *device) MetaInputDeviceNative *device)
{ {
MetaSeatImpl *seat_impl = device->seat_impl; MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
struct xkb_state *xkb_state; struct xkb_state *xkb_state;
xkb_state = meta_seat_impl_get_xkb_state_in_impl (seat_impl); xkb_state = meta_seat_impl_get_xkb_state_in_impl (seat_impl);
@ -673,11 +698,13 @@ trigger_toggle_slowkeys (gpointer data)
static void static void
start_toggle_slowkeys (MetaInputDeviceNative *device) start_toggle_slowkeys (MetaInputDeviceNative *device)
{ {
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
if (device->toggle_slowkeys_timer != 0) if (device->toggle_slowkeys_timer != 0)
return; return;
device->toggle_slowkeys_timer = device->toggle_slowkeys_timer =
timeout_source_new (device->seat_impl, timeout_source_new (seat_impl,
8 * 1000 /* 8 secs */, 8 * 1000 /* 8 secs */,
trigger_toggle_slowkeys, trigger_toggle_slowkeys,
device); device);
@ -884,7 +911,7 @@ emulate_pointer_motion (MetaInputDeviceNative *device_evdev,
static gboolean static gboolean
is_numlock_active (MetaInputDeviceNative *device) is_numlock_active (MetaInputDeviceNative *device)
{ {
MetaSeatImpl *seat_impl = device->seat_impl; MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
struct xkb_state *xkb_state; struct xkb_state *xkb_state;
xkb_state = meta_seat_impl_get_xkb_state_in_impl (seat_impl); xkb_state = meta_seat_impl_get_xkb_state_in_impl (seat_impl);
@ -947,6 +974,7 @@ static gboolean
trigger_mousekeys_move (gpointer data) trigger_mousekeys_move (gpointer data)
{ {
MetaInputDeviceNative *device = data; MetaInputDeviceNative *device = data;
MetaSeatImpl *seat_impl = seat_impl_from_device_native (device);
int dx = 0; int dx = 0;
int dy = 0; int dy = 0;
@ -954,7 +982,7 @@ trigger_mousekeys_move (gpointer data)
{ {
/* This is the first move, Secdule at mk_init_delay */ /* This is the first move, Secdule at mk_init_delay */
device->move_mousekeys_timer = device->move_mousekeys_timer =
timeout_source_new (device->seat_impl, timeout_source_new (seat_impl,
device->mousekeys_init_delay, device->mousekeys_init_delay,
trigger_mousekeys_move, trigger_mousekeys_move,
device); device);
@ -964,7 +992,7 @@ trigger_mousekeys_move (gpointer data)
{ {
/* More moves, reschedule at mk_interval */ /* More moves, reschedule at mk_interval */
device->move_mousekeys_timer = device->move_mousekeys_timer =
timeout_source_new (device->seat_impl, timeout_source_new (seat_impl,
100, /* msec between mousekey events */ 100, /* msec between mousekey events */
trigger_mousekeys_move, trigger_mousekeys_move,
device); device);
@ -1494,7 +1522,6 @@ meta_input_device_native_new_in_impl (MetaSeatImpl *seat_impl,
"seat", seat_impl->seat_native, "seat", seat_impl->seat_native,
NULL); NULL);
device->seat_impl = seat_impl;
device->libinput_device = libinput_device; device->libinput_device = libinput_device;
libinput_device_set_user_data (libinput_device, device); libinput_device_set_user_data (libinput_device, device);
@ -1558,8 +1585,6 @@ meta_input_device_native_new_virtual (MetaSeatImpl *seat_impl,
"seat", seat_impl->seat_native, "seat", seat_impl->seat_native,
NULL); NULL);
device->seat_impl = seat_impl;
return CLUTTER_INPUT_DEVICE (device); return CLUTTER_INPUT_DEVICE (device);
} }