From 44a4792fd80acfeb15e2cf88304f283855689fd0 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 6 Nov 2020 10:16:07 +0100 Subject: backend/session: operate on wlr_device Instead of operating on FDs in {open,close}_device, operate on wlr_devices. This avoids the device lookup in wlr_session and allows callers to have access to wlr_device fields. For now, we use it to remove wlr_session_signal_add and replace it with a more idiomatic wlr_session.events.change field. In the future, other events will be added. --- include/wlr/backend/drm.h | 3 ++- include/wlr/backend/session.h | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'include/wlr/backend') diff --git a/include/wlr/backend/drm.h b/include/wlr/backend/drm.h index c1380323..cd0f3405 100644 --- a/include/wlr/backend/drm.h +++ b/include/wlr/backend/drm.h @@ -22,7 +22,8 @@ * a DRM backend, other kinds of backends raise SIGABRT). */ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display, - struct wlr_session *session, int gpu_fd, struct wlr_backend *parent, + struct wlr_session *session, struct wlr_device *dev, + struct wlr_backend *parent, wlr_renderer_create_func_t create_renderer_func); bool wlr_backend_is_drm(struct wlr_backend *backend); diff --git a/include/wlr/backend/session.h b/include/wlr/backend/session.h index 36b80a8d..82f22a3f 100644 --- a/include/wlr/backend/session.h +++ b/include/wlr/backend/session.h @@ -11,9 +11,11 @@ struct session_impl; struct wlr_device { int fd; dev_t dev; - struct wl_signal signal; - struct wl_list link; + + struct { + struct wl_signal change; + } events; }; struct wlr_session { @@ -74,21 +76,21 @@ void wlr_session_destroy(struct wlr_session *session); * * Returns -errno on error. */ -int wlr_session_open_file(struct wlr_session *session, const char *path); +struct wlr_device *wlr_session_open_file(struct wlr_session *session, + const char *path); /* * Closes a file previously opened with wlr_session_open_file. */ -void wlr_session_close_file(struct wlr_session *session, int fd); +void wlr_session_close_file(struct wlr_session *session, + struct wlr_device *device); -void wlr_session_signal_add(struct wlr_session *session, int fd, - struct wl_listener *listener); /* * Changes the virtual terminal. */ bool wlr_session_change_vt(struct wlr_session *session, unsigned vt); size_t wlr_session_find_gpus(struct wlr_session *session, - size_t ret_len, int *ret); + size_t ret_len, struct wlr_device **ret); #endif -- cgit v1.2.3