From 56a43b0ace4dc085c1f14777315c03788d267460 Mon Sep 17 00:00:00 2001 From: Jason Gerecke Date: Thu, 7 Jan 2016 09:52:41 -0800 Subject: common: wrap grab_button with gdk_error_trap_push/pop The XIGrabButton and XIUngrabButton functions can fail with e.g. BadDevice, so we should be careful to catch the error and not crash. https://bugzilla.gnome.org/show_bug.cgi?id=760288 --- plugins/common/gsd-keygrab.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/common/gsd-keygrab.c b/plugins/common/gsd-keygrab.c index 7755a474..1413faaf 100644 --- a/plugins/common/gsd-keygrab.c +++ b/plugins/common/gsd-keygrab.c @@ -55,6 +55,7 @@ grab_button (int deviceid, evmask.mask_len = sizeof (mask); evmask.mask = mask; + gdk_error_trap_push(); XIGrabButton (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), deviceid, XIAnyButton, @@ -66,11 +67,14 @@ grab_button (int deviceid, &evmask, 1, &mods); + gdk_error_trap_pop_ignored (); } else { + gdk_error_trap_push(); XIUngrabButton (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), deviceid, XIAnyButton, GDK_WINDOW_XID (root), 1, &mods); + gdk_error_trap_pop_ignored (); } } -- cgit v1.2.1