diff --git a/backend/session/session.c b/backend/session/session.c index cd3927fdc..36ac7cb81 100644 --- a/backend/session/session.c +++ b/backend/session/session.c @@ -210,6 +210,12 @@ struct wlr_device *wlr_session_open_file(struct wlr_session *session, goto error; } + dev->devnode = strdup(path); + if (!dev->devnode) { + wlr_log_errno(WLR_ERROR, "Allocation failed"); + goto error; + } + dev->fd = fd; dev->dev = st.st_rdev; dev->device_id = device_id; @@ -233,6 +239,7 @@ void wlr_session_close_file(struct wlr_session *session, } close(dev->fd); wl_list_remove(&dev->link); + free(dev->devnode); free(dev); } diff --git a/include/wlr/backend/session.h b/include/wlr/backend/session.h index 0f2e09722..0b02b7132 100644 --- a/include/wlr/backend/session.h +++ b/include/wlr/backend/session.h @@ -12,6 +12,7 @@ struct wlr_device { int fd; int device_id; dev_t dev; + char *devnode; struct wl_list link; struct {