diff --git a/types/output/render.c b/types/output/render.c index 0228c0cd..9e0b77c3 100644 --- a/types/output/render.c +++ b/types/output/render.c @@ -186,6 +186,11 @@ bool output_ensure_buffer(struct wlr_output *output, bool *new_back_buffer) { assert(*new_back_buffer == false); + // If we already have a buffer, we don't need to allocate a new one + if (state->committed & WLR_OUTPUT_STATE_BUFFER) { + return true; + } + // If we're lighting up an output or changing its mode, make sure to // provide a new buffer bool needs_new_buffer = false; @@ -198,7 +203,7 @@ bool output_ensure_buffer(struct wlr_output *output, if (state->committed & WLR_OUTPUT_STATE_RENDER_FORMAT) { needs_new_buffer = true; } - if (!needs_new_buffer || (state->committed & WLR_OUTPUT_STATE_BUFFER)) { + if (!needs_new_buffer) { return true; }