backend/session/dev_demi.c: compare devnode if devnum is not available

This commit is contained in:
illiliti 2022-03-21 09:05:26 +03:00
parent 81550bc6d2
commit fc455ffa40

View file

@ -59,16 +59,18 @@ static int handle_event(int fd, uint32_t mask, void *data) {
wlr_signal_emit_safe(&session->events.add_drm_card, &event); wlr_signal_emit_safe(&session->events.add_drm_card, &event);
} else if (event_type == DEMI_CHANGE || event_type == DEMI_DETACH) { } else if (event_type == DEMI_CHANGE || event_type == DEMI_DETACH) {
struct stat st; struct stat st;
// FIXME stat will fail on DEMI_DETACH bool has_devnum = stat(devnode, &st) == 0;
if (stat(devnode, &st) == -1) {
// FIXME fallback to comparing devnode
return 1;
}
struct wlr_device *dev; struct wlr_device *dev;
wl_list_for_each(dev, &session->devices, link) { wl_list_for_each(dev, &session->devices, link) {
if (dev->dev != st.st_rdev) { if (has_devnum) {
continue; if (dev->dev != st.st_rdev) {
continue;
}
} else {
if (strcmp(dev->devnode, devnode) != 0) {
continue;
}
} }
if (event_type == DEMI_CHANGE) { if (event_type == DEMI_CHANGE) {