struct input_event ev[EVENT_MAX];
evdev_device_info_t *device_info = (evdev_device_info_t *)data;
- PEPPER_CHECK(!(mask & (WL_EVENT_HANGUP | WL_EVENT_ERROR)),
- return 0,
- "[%s] With the given fd, there is an error or it's been hung-up.\n",
- __FUNCTION__);
+ if ((mask & WL_EVENT_HANGUP) || (mask & WL_EVENT_ERROR))
+ {
+ PEPPER_ERROR("With the given fd(%d, mask:0x%x), there is an error or it's been hung-up. (errno:%m)\n", fd, mask);
+ PEPPER_ERROR("The event source will be disabled and the fd(%d) will be closed.\n", device_info->fd);
+
+ if (device_info->event_source)
+ wl_event_source_fd_update(device_info->event_source, (uint32_t)0);
+
+ close(fd);
+ return 0;
+ }
if (!(mask & WL_EVENT_READABLE))
return 0;