backends/input-settings: Don't bind mouse GSettings to ClutterSettings

On Wayland MetaInputSettings is part of the input thread. Connecting
a GSettings binding to the default ClutterSettings could result in the
change notification being emitted on the input thread. This then could
end up triggering the same handler from two different threads at the
same time. In the case of the ClutterText layout cache it was attempting
to unref the same layout twice, leading to a crash.

This can be avoided by simply removing the GSettings bind. This does not
cause changes to this setting to be missed by ClutterSettings because it
itself already sets up a bind.

Fixes https://gitlab.gnome.org/GNOME/mutter/-/issues/1696

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1776>
This commit is contained in:
Sebastian Keller 2021-03-12 16:35:59 +01:00 committed by Marge Bot
parent 236e9ec68f
commit 330609e887

View File

@ -1796,10 +1796,6 @@ meta_input_settings_init (MetaInputSettings *settings)
g_signal_connect (priv->mouse_settings, "changed", g_signal_connect (priv->mouse_settings, "changed",
G_CALLBACK (meta_input_settings_changed_cb), settings); G_CALLBACK (meta_input_settings_changed_cb), settings);
g_settings_bind (priv->mouse_settings, "double-click",
clutter_settings_get_default(), "double-click-time",
G_SETTINGS_BIND_GET);
priv->touchpad_settings = g_settings_new ("org.gnome.desktop.peripherals.touchpad"); priv->touchpad_settings = g_settings_new ("org.gnome.desktop.peripherals.touchpad");
g_signal_connect (priv->touchpad_settings, "changed", g_signal_connect (priv->touchpad_settings, "changed",
G_CALLBACK (meta_input_settings_changed_cb), settings); G_CALLBACK (meta_input_settings_changed_cb), settings);