summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@ubuntu.com>2016-05-24 16:55:20 +0200
committerSebastien Bacher <seb128@ubuntu.com>2016-05-30 18:48:32 +0200
commit9c8a5970c3fb24ecc40dd95d69e3e45d65da6318 (patch)
tree8318031ee688084df36a04d5c0b829e5bbf994a9
parent1fef9b74fd1e09e44b2bae7772385457356a3af6 (diff)
downloadgnome-settings-daemon-9c8a5970c3fb24ecc40dd95d69e3e45d65da6318.tar.gz
wacom: don't segfault when a device is removed while being configured
Calls to open_device can return null, don't try to configure the device in those cases, it only leads to segfaults https://bugzilla.gnome.org/show_bug.cgi?id=766726
-rw-r--r--plugins/wacom/gsd-wacom-manager.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/plugins/wacom/gsd-wacom-manager.c b/plugins/wacom/gsd-wacom-manager.c
index d4677cab..91224857 100644
--- a/plugins/wacom/gsd-wacom-manager.c
+++ b/plugins/wacom/gsd-wacom-manager.c
@@ -259,6 +259,8 @@ wacom_set_property (GsdWacomDevice *device,
XDevice *xdev;
xdev = open_device (device);
+ if (xdev == NULL)
+ return;
device_set_property (xdev, gsd_wacom_device_get_tool_name (device), property);
xdevice_close (xdev);
}
@@ -376,6 +378,8 @@ set_absolute (GsdWacomDevice *device,
XDevice *xdev;
xdev = open_device (device);
+ if (xdev == NULL)
+ return;
gdk_error_trap_push ();
XSetDeviceMode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdev, is_absolute ? Absolute : Relative);
if (gdk_error_trap_pop ())
@@ -514,6 +518,8 @@ set_device_buttonmap (GsdWacomDevice *device,
int i, j, rc;
xdev = open_device (device);
+ if (xdev == NULL)
+ return;
intmap = g_variant_get_fixed_array (value, &nmap, sizeof (gint32));
map = g_new0 (unsigned char, nmap);
@@ -740,6 +746,8 @@ reset_pad_buttons (GsdWacomDevice *device)
/* Normal buttons */
xdev = open_device (device);
+ if (xdev == NULL)
+ return;
gdk_error_trap_push ();