aboutsummaryrefslogtreecommitdiff
path: root/backend/drm/backend.c
diff options
context:
space:
mode:
authorScott Anderson <scott@anderso.nz>2020-02-08 19:02:31 +1300
committerSimon Ser <contact@emersion.fr>2020-04-28 09:54:52 +0200
commit8da9d9679e4cad640b0f0a518ca1529c8cdecbe0 (patch)
treea29446d46d0b537687e8181e3cfe5a40621a1b31 /backend/drm/backend.c
parentfa5d709fc3ea96b14163cdad435caccdbdd5bbda (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.c9
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);