diff --git a/panels/common/gsd-device-manager-udev.c b/panels/common/gsd-device-manager-udev.c index fdda02a55..aa9304232 100644 --- a/panels/common/gsd-device-manager-udev.c +++ b/panels/common/gsd-device-manager-udev.c @@ -92,8 +92,14 @@ create_device (GUdevDevice *udev_device) name = g_udev_device_get_sysfs_attr (parent, "name"); vendor = g_udev_device_get_property (udev_device, "ID_VENDOR_ID"); product = g_udev_device_get_property (udev_device, "ID_MODEL_ID"); + + if (!vendor || !product) { + vendor = g_udev_device_get_sysfs_attr (udev_device, "device/id/vendor"); + product = g_udev_device_get_sysfs_attr (udev_device, "device/id/product"); + } + width = g_udev_device_get_property_as_int (udev_device, "ID_INPUT_WIDTH_MM"); - height = g_udev_device_get_property_as_int (udev_device, "ID_INPUT_WIDTH_MM"); + height = g_udev_device_get_property_as_int (udev_device, "ID_INPUT_HEIGHT_MM"); device = g_object_new (GSD_TYPE_DEVICE, "name", name, diff --git a/panels/common/gsd-device-manager-x11.c b/panels/common/gsd-device-manager-x11.c index 137f83a61..a2704d1a5 100644 --- a/panels/common/gsd-device-manager-x11.c +++ b/panels/common/gsd-device-manager-x11.c @@ -145,10 +145,8 @@ remove_device (GsdX11DeviceManager *manager, device = g_hash_table_lookup (manager->devices, device_file); - if (device) - g_object_ref (device); - if (device) { + g_object_ref (device); g_signal_emit_by_name (manager, "device-removed", device); g_object_unref (device); } diff --git a/panels/common/gsd-input-helper.c b/panels/common/gsd-input-helper.c index 077ff1c92..410059995 100644 --- a/panels/common/gsd-input-helper.c +++ b/panels/common/gsd-input-helper.c @@ -392,9 +392,14 @@ xdevice_get_dimensions (int deviceid, guint *value, w, h; int i, n_info; + gdk_error_trap_push (); + info = XIQueryDevice (GDK_DISPLAY_XDISPLAY (display), deviceid, &n_info); *width = *height = w = h = 0; + if (gdk_error_trap_pop ()) + return FALSE; + if (!info) return FALSE;