From 8e2cf127e691022e9b28b6744cc4ddd48c168371 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 10 May 2016 21:29:10 -0400 Subject: x11: Trap possible X error XIGetClientPointer can generate X errors (e.g. when the X server does not support XI2. Trap them and carry on. https://bugzilla.gnome.org/show_bug.cgi?id=766233 --- gdk/x11/gdkdisplay-x11.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index 6804ed2006..de91c642e9 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -2878,10 +2878,14 @@ gdk_x11_display_get_default_seat (GdkDisplay *display) { GList *seats, *l; int device_id; + gboolean result = FALSE; seats = gdk_display_list_seats (display); - XIGetClientPointer (GDK_DISPLAY_XDISPLAY (display), - None, &device_id); + + gdk_x11_display_error_trap_push (display); + result = XIGetClientPointer (GDK_DISPLAY_XDISPLAY (display), + None, &device_id); + gdk_x11_display_error_trap_pop_ignored (display); for (l = seats; l; l = l->next) { @@ -2889,7 +2893,7 @@ gdk_x11_display_get_default_seat (GdkDisplay *display) pointer = gdk_seat_get_pointer (l->data); - if (gdk_x11_device_get_id (pointer) == device_id) + if (gdk_x11_device_get_id (pointer) == device_id || !result) { GdkSeat *seat = l->data; g_list_free (seats); -- cgit v1.2.1