diff options
Diffstat (limited to 'include/wlr/backend/drm.h')
-rw-r--r-- | include/wlr/backend/drm.h | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/include/wlr/backend/drm.h b/include/wlr/backend/drm.h index 0e9f6108..800bc585 100644 --- a/include/wlr/backend/drm.h +++ b/include/wlr/backend/drm.h @@ -14,6 +14,20 @@ #include <wlr/backend/session.h> #include <wlr/types/wlr_output.h> +struct wlr_drm_backend; + +struct wlr_drm_lease { + int fd; + uint32_t lessee_id; + struct wlr_drm_backend *backend; + + struct { + struct wl_signal destroy; + } events; + + void *data; +}; + /** * Creates a DRM backend using the specified GPU file descriptor (typically from * a device node in /dev/dri). @@ -41,18 +55,20 @@ uint32_t wlr_drm_connector_get_id(struct wlr_output *output); int wlr_drm_backend_get_non_master_fd(struct wlr_backend *backend); /** - * Leases a given output to the caller. The output must be from the associated - * DRM backend. - * Returns a valid opened DRM FD or -1 on error. + * Leases the given outputs to the caller. The outputs must be from the + * associated DRM backend. + * + * Returns NULL on error. */ -int wlr_drm_create_lease(struct wlr_output **outputs, size_t n_outputs, - uint32_t *lessee_id); +struct wlr_drm_lease *wlr_drm_create_lease(struct wlr_output **outputs, + size_t n_outputs, int *lease_fd); /** - * Terminates a given lease. The output will be owned again by the backend + * Terminates and destroys a given lease. + * + * The outputs will be owned again by the backend. */ -bool wlr_drm_backend_terminate_lease(struct wlr_backend *backend, - uint32_t lessee_id); +void wlr_drm_lease_terminate(struct wlr_drm_lease *lease); /** * Add mode to the list of available modes |