mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-02-15 22:05:31 -05:00
drm backend: implement DRM lease issuance
This commit is contained in:
parent
05ed202183
commit
1b96ba8232
2 changed files with 168 additions and 10 deletions
|
|
@ -47,6 +47,8 @@ struct wlr_drm_crtc {
|
|||
// Legacy only
|
||||
drmModeCrtc *legacy_crtc;
|
||||
|
||||
uint32_t lessee_id;
|
||||
|
||||
struct wlr_drm_plane *primary;
|
||||
struct wlr_drm_plane *cursor;
|
||||
|
||||
|
|
@ -98,6 +100,8 @@ enum wlr_drm_connector_state {
|
|||
WLR_DRM_CONN_NEEDS_MODESET,
|
||||
WLR_DRM_CONN_CLEANUP,
|
||||
WLR_DRM_CONN_CONNECTED,
|
||||
// Connector has been leased to another DRM master
|
||||
WLR_DRM_CONN_LEASED,
|
||||
};
|
||||
|
||||
struct wlr_drm_mode {
|
||||
|
|
@ -112,6 +116,9 @@ struct wlr_drm_connector {
|
|||
struct wlr_output_mode *desired_mode;
|
||||
bool desired_enabled;
|
||||
uint32_t id;
|
||||
uint32_t lessee_id;
|
||||
void (*lease_terminated_cb)(struct wlr_drm_connector *, void *);
|
||||
void *lease_terminated_data;
|
||||
|
||||
struct wlr_drm_crtc *crtc;
|
||||
uint32_t possible_crtc;
|
||||
|
|
@ -149,4 +156,11 @@ bool set_drm_connector_gamma(struct wlr_output *output, size_t size,
|
|||
bool drm_connector_set_mode(struct wlr_output *output,
|
||||
struct wlr_output_mode *mode);
|
||||
|
||||
/** Returns the leased file descriptor */
|
||||
int drm_create_lease(struct wlr_drm_backend *backend,
|
||||
struct wlr_drm_connector **conns, int nconns, uint32_t *lessee_id,
|
||||
void (*lease_terminated_cb)(struct wlr_drm_connector *, void *),
|
||||
void *lease_terminated_data);
|
||||
int drm_terminate_lease(struct wlr_drm_backend *backend, uint32_t lessee_id);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue