diff --git a/types/wlr_buffer.c b/types/wlr_buffer.c index e0fea23d..ceb7a582 100644 --- a/types/wlr_buffer.c +++ b/types/wlr_buffer.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include "render/pixel_format.h" @@ -120,6 +121,11 @@ bool wlr_resource_get_buffer_size(struct wl_resource *resource, wlr_dmabuf_v1_buffer_from_buffer_resource(resource); *width = dmabuf->attributes.width; *height = dmabuf->attributes.height; + } else if (wlr_drm_buffer_is_resource(resource)) { + struct wlr_drm_buffer *drm_buffer = + wlr_drm_buffer_from_resource(resource); + *width = drm_buffer->base.width; + *height = drm_buffer->base.height; } else { *width = *height = 0; return false; @@ -241,6 +247,14 @@ struct wlr_client_buffer *wlr_client_buffer_import( wlr_dmabuf_v1_buffer_from_buffer_resource(resource); texture = wlr_texture_from_buffer(renderer, &dmabuf->base); + // The renderer is responsible for releasing the buffer when + // appropriate + resource_released = true; + } else if (wlr_drm_buffer_is_resource(resource)) { + struct wlr_drm_buffer *drm_buffer = + wlr_drm_buffer_from_resource(resource); + texture = wlr_texture_from_buffer(renderer, &drm_buffer->base); + // The renderer is responsible for releasing the buffer when // appropriate resource_released = true;