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.
This commit is contained in:
Roman Gilg 2022-02-20 17:47:15 +01:00 committed by Simon Ser
parent db6661502d
commit cff4abc5b1

View file

@ -639,6 +639,9 @@ static bool output_basic_test(struct wlr_output *output) {
} }
bool wlr_output_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)) { if (!output_basic_test(output)) {
return false; return false;
} }
@ -648,7 +651,13 @@ bool wlr_output_test(struct wlr_output *output) {
if (!output->impl->test) { if (!output->impl->test) {
return true; 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) { bool wlr_output_commit(struct wlr_output *output) {