diff options
author | Rui Matos <tiagomatos@gmail.com> | 2016-04-05 17:48:11 +0200 |
---|---|---|
committer | Rui Matos <tiagomatos@gmail.com> | 2016-04-05 21:04:57 +0200 |
commit | 727d2284f20a7d2fb3dbc03261da204b07587eda (patch) | |
tree | 18267035b672de740a8c923cf017e7104603874e /panels/mouse | |
parent | 8f7e99a0342481e1192caffa0a5fedd5335c06dc (diff) | |
download | gnome-control-center-727d2284f20a7d2fb3dbc03261da204b07587eda.tar.gz |
mouse: Use Gdk instead of Xlib for touchpad capabilities check
Just use X API where needed.
https://bugzilla.gnome.org/show_bug.cgi?id=764257
Diffstat (limited to 'panels/mouse')
-rw-r--r-- | panels/mouse/cc-mouse-caps-helper.c | 49 | ||||
-rw-r--r-- | panels/mouse/cc-mouse-caps-helper.h | 6 |
2 files changed, 25 insertions, 30 deletions
diff --git a/panels/mouse/cc-mouse-caps-helper.c b/panels/mouse/cc-mouse-caps-helper.c index 125304d32..d82bdb2e5 100644 --- a/panels/mouse/cc-mouse-caps-helper.c +++ b/panels/mouse/cc-mouse-caps-helper.c @@ -18,6 +18,10 @@ * Author: Felipe Borges <feborges@redhat.com> */ +#include <gdk/gdkx.h> +#include <X11/Xatom.h> +#include <X11/extensions/XInput2.h> + #include "cc-mouse-caps-helper.h" static gboolean @@ -25,15 +29,16 @@ touchpad_check_capabilities_x11 (gboolean *have_two_finger_scrolling, gboolean *have_edge_scrolling, gboolean *have_tap_to_click) { - int numdevices, i; - XDeviceInfo *devicelist; + Display *display; + GList *devicelist, *l; Atom realtype, prop_scroll_methods, prop_tapping_enabled; int realformat; unsigned long nitems, bytes_after; unsigned char *data; - prop_scroll_methods = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "libinput Scroll Methods Available", False); - prop_tapping_enabled = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "libinput Tapping Enabled", False); + display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); + prop_scroll_methods = XInternAtom (display, "libinput Scroll Methods Available", False); + prop_tapping_enabled = XInternAtom (display, "libinput Tapping Enabled", False); if (!prop_scroll_methods || !prop_tapping_enabled) return FALSE; @@ -41,23 +46,19 @@ touchpad_check_capabilities_x11 (gboolean *have_two_finger_scrolling, *have_edge_scrolling = FALSE; *have_tap_to_click = FALSE; - devicelist = XListInputDevices (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &numdevices); - for (i = 0; i < numdevices; i++) { - if (devicelist[i].use != IsXExtensionPointer) - continue; + gdk_error_trap_push (); - gdk_error_trap_push (); - XDevice *device = XOpenDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), - devicelist[i].id); - if (gdk_error_trap_pop ()) + devicelist = gdk_seat_get_slaves (gdk_display_get_default_seat (gdk_display_get_default ()), + GDK_SEAT_CAPABILITY_ALL_POINTING); + for (l = devicelist; l != NULL; l = l->next) { + GdkDevice *device = l->data; + if (gdk_device_get_source (device) != GDK_SOURCE_TOUCHPAD) continue; - gdk_error_trap_push (); - /* xorg-x11-drv-libinput */ - if ((XGetDeviceProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), device, prop_scroll_methods, - 0, 2, False, XA_INTEGER, &realtype, &realformat, &nitems, - &bytes_after, &data) == Success) && (realtype != None)) { + if ((XIGetProperty (display, gdk_x11_device_get_id (device), prop_scroll_methods, + 0, 2, False, XA_INTEGER, &realtype, &realformat, &nitems, + &bytes_after, &data) == Success) && (realtype != None)) { /* Property data is booleans for two-finger, edge, on-button scroll available. */ if (data[0]) @@ -69,20 +70,18 @@ touchpad_check_capabilities_x11 (gboolean *have_two_finger_scrolling, XFree (data); } - if ((XGetDeviceProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), device, prop_tapping_enabled, - 0, 1, False, XA_INTEGER, &realtype, &realformat, &nitems, - &bytes_after, &data) == Success) && (realtype != None)) { + if ((XIGetProperty (display, gdk_x11_device_get_id (device), prop_tapping_enabled, + 0, 1, False, XA_INTEGER, &realtype, &realformat, &nitems, + &bytes_after, &data) == Success) && (realtype != None)) { /* Property data is boolean for tapping enabled. */ *have_tap_to_click = TRUE; XFree (data); } - - gdk_error_trap_pop_ignored (); - - XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), device); } - XFreeDeviceList (devicelist); + g_list_free (devicelist); + + gdk_error_trap_pop_ignored (); return TRUE; } diff --git a/panels/mouse/cc-mouse-caps-helper.h b/panels/mouse/cc-mouse-caps-helper.h index 51c8314d4..d116abe0e 100644 --- a/panels/mouse/cc-mouse-caps-helper.h +++ b/panels/mouse/cc-mouse-caps-helper.h @@ -21,11 +21,7 @@ #ifndef _CC_MOUSE_CAPS_HELPER_H_ #define _CC_MOUSE_CAPS_HELPER_H_ -#include <gdk/gdk.h> -#include <gdk/gdkx.h> - -#include <X11/Xatom.h> -#include <X11/extensions/XInput.h> +#include <glib.h> gboolean cc_touchpad_check_capabilities (gboolean *have_two_finger_scrolling, gboolean *have_edge_scrolling, |