From cff4abc5b15f2303a6e754b3e4bacd2bdef5811e Mon Sep 17 00:00:00 2001 From: Roman Gilg Date: Sun, 20 Feb 2022 17:47:15 +0100 Subject: output: clear buffer created for test When calling wlr_output_test an empty buffer might be created. This implicitly changes the pending state of the output. Ensure that such a change is only temporarily and clear such an empty buffer before returning the test result. --- types/output/output.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/types/output/output.c b/types/output/output.c index 0062013f..1c0241fe 100644 --- a/types/output/output.c +++ b/types/output/output.c @@ -639,6 +639,9 @@ static bool output_basic_test(struct wlr_output *output) { } bool wlr_output_test(struct wlr_output *output) { + bool had_buffer = output->pending.committed & WLR_OUTPUT_STATE_BUFFER; + bool success; + if (!output_basic_test(output)) { return false; } @@ -648,7 +651,13 @@ bool wlr_output_test(struct wlr_output *output) { if (!output->impl->test) { return true; } - return output->impl->test(output); + + success = output->impl->test(output); + + if (!had_buffer) { + output_clear_back_buffer(output); + } + return success; } bool wlr_output_commit(struct wlr_output *output) { -- cgit v1.2.3