backends/native: Shuffle keyboard a11y signal connection into MetaSeatImpl

This signal gets emitted in the input thread, and does things that
belong to it. Make it clear by moving to the MetaSeatImpl.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403>
This commit is contained in:
Carlos Garnacho 2020-11-21 12:52:45 +01:00 committed by Marge Bot
parent 7547891a76
commit ceefa72ade
2 changed files with 20 additions and 28 deletions

View File

@ -74,7 +74,6 @@ struct _MetaBackendNative
MetaLauncher *launcher;
MetaUdev *udev;
MetaKms *kms;
MetaInputSettings *input_settings;
gulong udev_device_added_handler_id;
};
@ -102,7 +101,6 @@ meta_backend_native_finalize (GObject *object)
g_clear_object (&native->udev);
g_clear_object (&native->kms);
meta_launcher_free (native->launcher);
g_clear_object (&native->input_settings);
G_OBJECT_CLASS (meta_backend_native_parent_class)->finalize (object);
}
@ -163,33 +161,10 @@ update_viewports (MetaBackend *backend)
g_object_unref (viewports);
}
static void
kbd_a11y_changed_cb (MetaInputSettings *input_settings,
MetaKbdA11ySettings *a11y_settings,
MetaBackend *backend)
{
ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
ClutterSeat *seat = clutter_backend_get_default_seat (clutter_backend);
ClutterInputDevice *device;
device = clutter_seat_get_keyboard (seat);
if (device)
meta_input_device_native_apply_kbd_a11y_settings (META_INPUT_DEVICE_NATIVE (device),
a11y_settings);
}
static void
meta_backend_native_post_init (MetaBackend *backend)
{
MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
MetaSettings *settings = meta_backend_get_settings (backend);
ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
MetaSeatNative *seat =
META_SEAT_NATIVE (clutter_backend_get_default_seat (clutter_backend));
backend_native->input_settings = meta_seat_impl_get_input_settings (seat->impl);
g_signal_connect_object (backend_native->input_settings, "kbd-a11y-changed",
G_CALLBACK (kbd_a11y_changed_cb), backend, 0);
META_BACKEND_CLASS (meta_backend_native_parent_class)->post_init (backend);
@ -261,9 +236,11 @@ meta_backend_native_create_renderer (MetaBackend *backend,
static MetaInputSettings *
meta_backend_native_get_input_settings (MetaBackend *backend)
{
MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
MetaSeatNative *seat_native =
META_SEAT_NATIVE (clutter_backend_get_default_seat (clutter_backend));
return backend_native->input_settings;
return meta_seat_impl_get_input_settings (seat_native->impl);
}
static MetaLogicalMonitor *
@ -667,6 +644,7 @@ void meta_backend_native_resume (MetaBackendNative *native)
MetaSeatNative *seat =
META_SEAT_NATIVE (clutter_backend_get_default_seat (clutter_backend));
MetaRenderer *renderer = meta_backend_get_renderer (backend);
MetaInputSettings *input_settings;
COGL_TRACE_BEGIN_SCOPED (MetaBackendNativeResume,
"Backend (resume)");
@ -683,7 +661,8 @@ void meta_backend_native_resume (MetaBackendNative *native)
idle_monitor = meta_idle_monitor_get_core ();
meta_idle_monitor_reset_idletime (idle_monitor);
meta_input_settings_maybe_restore_numlock_state (native->input_settings);
input_settings = meta_backend_get_input_settings (backend);
meta_input_settings_maybe_restore_numlock_state (input_settings);
clutter_seat_ensure_a11y_state (CLUTTER_SEAT (seat));
}

View File

@ -2476,6 +2476,17 @@ static const struct libinput_interface libinput_interface = {
close_restricted
};
static void
kbd_a11y_changed_cb (MetaInputSettings *input_settings,
MetaKbdA11ySettings *a11y_settings,
MetaSeatImpl *seat_impl)
{
MetaInputDeviceNative *keyboard;
keyboard = META_INPUT_DEVICE_NATIVE (seat_impl->core_keyboard);
meta_input_device_native_apply_kbd_a11y_settings (keyboard, a11y_settings);
}
static void
meta_seat_impl_set_keyboard_numlock (MetaSeatImpl *seat_impl,
gboolean numlock_state)
@ -2568,6 +2579,8 @@ meta_seat_impl_constructed (GObject *object)
udev_unref (udev);
seat_impl->input_settings = meta_input_settings_native_new (seat_impl);
g_signal_connect_object (seat_impl->input_settings, "kbd-a11y-changed",
G_CALLBACK (kbd_a11y_changed_cb), seat_impl, 0);
seat_impl->udev_client = g_udev_client_new ((const char *[]) { "input", NULL });