summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Gerecke <killertofu@gmail.com>2016-01-07 09:52:41 -0800
committerRui Matos <tiagomatos@gmail.com>2016-01-07 20:28:41 +0100
commit56a43b0ace4dc085c1f14777315c03788d267460 (patch)
treed939fe44f11b378e562bf1190ad52b14cb5d2bef
parent7af4fae1808cde85bbecef33fdd08a3329740d08 (diff)
downloadgnome-settings-daemon-56a43b0ace4dc085c1f14777315c03788d267460.tar.gz
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
-rw-r--r--plugins/common/gsd-keygrab.c4
1 files changed, 4 insertions, 0 deletions
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 ();
}
}