From: Rui Matos Date: Mon, 14 Nov 2016 16:33:11 +0000 (+0100) Subject: meta-input-settings-x11: Don't try setting unavailable scroll methods X-Git-Tag: archive/raspbian/3.22.2-3+rpi1^2^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4fec211d7003b8945c5c90af3925c9416c14b6c9;p=mutter.git meta-input-settings-x11: Don't try setting unavailable scroll methods Since doing so causes BadValue X errors. https://bugzilla.gnome.org/show_bug.cgi?id=771744 Gbp-Pq: Name git_dont_set_unavailable_scroll_methods.patch --- diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c index 332997b..eccc68a 100644 --- a/src/backends/x11/meta-input-settings-x11.c +++ b/src/backends/x11/meta-input-settings-x11.c @@ -222,19 +222,27 @@ meta_input_settings_x11_set_edge_scroll (MetaInputSettings *settings, gboolean edge_scroll_enabled) { guchar values[SCROLL_METHOD_NUM_FIELDS] = { 0 }; /* 2fg, edge, button. The last value is unused */ - guchar *current; + guchar *current = NULL; + guchar *available = NULL; + + available = get_property (device, "libinput Scroll Methods Available", + XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS); + if (!available || !available[SCROLL_METHOD_FIELD_EDGE]) + goto out; current = get_property (device, "libinput Scroll Method Enabled", XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS); if (!current) - return; + goto out; memcpy (values, current, SCROLL_METHOD_NUM_FIELDS); values[SCROLL_METHOD_FIELD_EDGE] = !!edge_scroll_enabled; change_property (device, "libinput Scroll Method Enabled", XA_INTEGER, 8, &values, SCROLL_METHOD_NUM_FIELDS); + out: meta_XFree (current); + meta_XFree (available); } static void @@ -243,19 +251,27 @@ meta_input_settings_x11_set_two_finger_scroll (MetaInputSettings *set gboolean two_finger_scroll_enabled) { guchar values[SCROLL_METHOD_NUM_FIELDS] = { 0 }; /* 2fg, edge, button. The last value is unused */ - guchar *current; + guchar *current = NULL; + guchar *available = NULL; + + available = get_property (device, "libinput Scroll Methods Available", + XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS); + if (!available || !available[SCROLL_METHOD_FIELD_2FG]) + goto out; current = get_property (device, "libinput Scroll Method Enabled", XA_INTEGER, 8, SCROLL_METHOD_NUM_FIELDS); if (!current) - return; + goto out; memcpy (values, current, SCROLL_METHOD_NUM_FIELDS); values[SCROLL_METHOD_FIELD_2FG] = !!two_finger_scroll_enabled; change_property (device, "libinput Scroll Method Enabled", XA_INTEGER, 8, &values, SCROLL_METHOD_NUM_FIELDS); + out: meta_XFree (current); + meta_XFree (available); } static void