diff options
author | Scott Anderson <scott@anderso.nz> | 2020-02-08 19:02:31 +1300 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-04-28 09:54:52 +0200 |
commit | 8da9d9679e4cad640b0f0a518ca1529c8cdecbe0 (patch) | |
tree | a29446d46d0b537687e8181e3cfe5a40621a1b31 /backend/drm/backend.c | |
parent | fa5d709fc3ea96b14163cdad435caccdbdd5bbda (diff) |
backend/drm: introduce wlr_drm_fb
This is a type which manages gbm_surfaces and imported dmabufs in the
same place, and makes the lifetime management between the two shared. It
should lead to easier to understand code, and fewer special cases.
This also contains a fair bit of refactoring to start using this new
type.
Co-authored-by: Simon Ser <contact@emersion.fr>
Diffstat (limited to 'backend/drm/backend.c')
-rw-r--r-- | backend/drm/backend.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/backend/drm/backend.c b/backend/drm/backend.c index a58af02c..7aeaa01e 100644 --- a/backend/drm/backend.c +++ b/backend/drm/backend.c @@ -105,8 +105,13 @@ static void session_signal(struct wl_listener *listener, void *data) { } struct wlr_drm_plane *plane = conn->crtc->cursor; - drm->iface->crtc_set_cursor(drm, conn->crtc, - (plane && plane->cursor_enabled) ? plane->surf.back : NULL); + struct gbm_bo *bo = NULL; + if (plane->cursor_enabled) { + bo = drm_fb_acquire(&plane->current_fb, drm, + &plane->mgpu_surf); + } + + drm->iface->crtc_set_cursor(drm, conn->crtc, bo); drm->iface->crtc_move_cursor(drm, conn->crtc, conn->cursor_x, conn->cursor_y); |