diff options
Diffstat (limited to 'backend/drm/legacy.c')
-rw-r--r-- | backend/drm/legacy.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/backend/drm/legacy.c b/backend/drm/legacy.c index fc3158e1..7a7e36f7 100644 --- a/backend/drm/legacy.c +++ b/backend/drm/legacy.c @@ -17,12 +17,7 @@ static bool legacy_crtc_commit(struct wlr_drm_backend *drm, uint32_t fb_id = 0; if (crtc->pending.active) { struct wlr_drm_fb *fb = plane_get_next_fb(crtc->primary); - struct gbm_bo *bo = drm_fb_acquire(fb, drm, &crtc->primary->mgpu_surf); - if (!bo) { - return false; - } - - fb_id = get_fb_for_bo(bo, drm->addfb2_modifiers); + uint32_t fb_id = drm_fb_acquire(fb, drm, &crtc->primary->mgpu_surf); if (!fb_id) { return false; } @@ -79,14 +74,17 @@ static bool legacy_crtc_commit(struct wlr_drm_backend *drm, if (cursor != NULL && drm_connector_is_cursor_visible(conn)) { struct wlr_drm_fb *cursor_fb = plane_get_next_fb(cursor); - struct gbm_bo *cursor_bo = - drm_fb_acquire(cursor_fb, drm, &cursor->mgpu_surf); - if (!cursor_bo) { + if (drm_fb_acquire(cursor_fb, drm, &cursor->mgpu_surf) == 0) { wlr_drm_conn_log_errno(conn, WLR_DEBUG, "Failed to acquire cursor FB"); return false; } + struct gbm_bo *cursor_bo = cursor_fb->bo; + if (cursor_fb->mgpu_bo) { + cursor_bo = cursor_fb->mgpu_bo; + } + if (drmModeSetCursor(drm->fd, crtc->id, gbm_bo_get_handle(cursor_bo).u32, cursor->surf.width, cursor->surf.height)) { |