From 394accbe4a4186bba273790bca8cef54d9be21ca Mon Sep 17 00:00:00 2001 From: Alexander Orzechowski Date: Wed, 3 May 2023 23:48:36 -0400 Subject: wlr_compositer: Keep track if surface has committed a buffer before. This would break if you are running with a NULL renderer. --- include/wlr/types/wlr_compositor.h | 1 + types/wlr_compositor.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/wlr/types/wlr_compositor.h b/include/wlr/types/wlr_compositor.h index e4ac7879..3c4f5a4b 100644 --- a/include/wlr/types/wlr_compositor.h +++ b/include/wlr/types/wlr_compositor.h @@ -163,6 +163,7 @@ struct wlr_surface { } previous; bool opaque; + bool has_buffer; int32_t preferred_buffer_scale; bool preferred_buffer_transform_sent; diff --git a/types/wlr_compositor.c b/types/wlr_compositor.c index df7352b0..7bf4d7c3 100644 --- a/types/wlr_compositor.c +++ b/types/wlr_compositor.c @@ -348,6 +348,8 @@ static void surface_state_move(struct wlr_surface_state *state, } static void surface_apply_damage(struct wlr_surface *surface) { + surface->has_buffer = surface->current.buffer; + if (surface->current.buffer == NULL) { // NULL commit if (surface->buffer != NULL) { @@ -723,7 +725,7 @@ struct wlr_texture *wlr_surface_get_texture(struct wlr_surface *surface) { } bool wlr_surface_has_buffer(struct wlr_surface *surface) { - return wlr_surface_get_texture(surface) != NULL; + return surface->has_buffer; } bool wlr_surface_set_role(struct wlr_surface *surface, -- cgit v1.2.3