Skip to content

Commit

Permalink
Fixed an issue with mouse/keyboard removal
Browse files Browse the repository at this point in the history
Sometimes, on removal SDL_EVDEV_udev_callback() gets called with zero udev_class. This in turn seems to be caused the SDL_udev.c:guess_device_class() failing to find the attributes of the parent device.

Apparently this is normal, attributes are not guaranteed to be in place during removal, depending on timing. This lack of attributes causes guess_device_class() to return zero.

This fix mimics the code in linux/SDL_sysjoystick.c:joystick_udev_callback() which effectively has the same fix already in place.
  • Loading branch information
slouken committed Jun 25, 2015
1 parent cbbdd27 commit 9f50d63
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/core/linux/SDL_evdev.c
Expand Up @@ -547,12 +547,11 @@ void SDL_EVDEV_udev_callback(SDL_UDEV_deviceevent udev_type, int udev_class, con
return;
}

if (!(udev_class & (SDL_UDEV_DEVICE_MOUSE|SDL_UDEV_DEVICE_KEYBOARD))) {
return;
}

switch( udev_type ) {
switch(udev_type) {
case SDL_UDEV_DEVICEADDED:
if (!(udev_class & (SDL_UDEV_DEVICE_MOUSE|SDL_UDEV_DEVICE_KEYBOARD))) {
return;
}
SDL_EVDEV_device_added(devpath);
break;

Expand Down

0 comments on commit 9f50d63

Please sign in to comment.