diff options
Diffstat (limited to 'backend/drm/renderer.c')
-rw-r--r-- | backend/drm/renderer.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c index 1d6a3277..a841aecf 100644 --- a/backend/drm/renderer.c +++ b/backend/drm/renderer.c @@ -280,21 +280,15 @@ bool drm_plane_init_surface(struct wlr_drm_plane *plane, } void drm_fb_clear(struct wlr_drm_fb *fb) { - switch (fb->type) { - case WLR_DRM_FB_TYPE_NONE: - assert(!fb->bo); - break; - case WLR_DRM_FB_TYPE_SURFACE: - abort(); // TODO: remove this case entirely - break; - case WLR_DRM_FB_TYPE_WLR_BUFFER: - gbm_bo_destroy(fb->bo); - wlr_buffer_unlock(fb->wlr_buf); - fb->wlr_buf = NULL; - break; - } - - fb->type = WLR_DRM_FB_TYPE_NONE; + if (!fb->bo) { + assert(!fb->wlr_buf); + return; + } + + gbm_bo_destroy(fb->bo); + wlr_buffer_unlock(fb->wlr_buf); + + fb->wlr_buf = NULL; fb->bo = NULL; if (fb->mgpu_bo) { @@ -376,7 +370,6 @@ bool drm_fb_import_wlr(struct wlr_drm_fb *fb, struct wlr_drm_renderer *renderer, return false; } - fb->type = WLR_DRM_FB_TYPE_WLR_BUFFER; fb->wlr_buf = wlr_buffer_lock(buf); return true; |