diff options
author | Sebastien Bacher <seb128@ubuntu.com> | 2016-05-24 16:55:20 +0200 |
---|---|---|
committer | Sebastien Bacher <seb128@ubuntu.com> | 2016-05-30 18:48:32 +0200 |
commit | 9c8a5970c3fb24ecc40dd95d69e3e45d65da6318 (patch) | |
tree | 8318031ee688084df36a04d5c0b829e5bbf994a9 | |
parent | 1fef9b74fd1e09e44b2bae7772385457356a3af6 (diff) | |
download | gnome-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.c | 8 |
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 (); |