fix a buffer leak in outputmgrapplyortest()

wlr_swapchain_acquire() returns a locked buffer and
wlr_output_state_set_buffer() takes its own lock, so every output enabled
through output management (wlr-randr, kanshi) leaked a buffer. Unlock it
once the state holds it, as wlr_output_swapchain_manager does.
This commit is contained in:
dvh
2026-11-11 10:54:13 +01:00
parent 13086cb898
commit 1f783b71a3
+6 -2
View File
@@ -2284,8 +2284,12 @@ outputmgrapplyortest(struct wlr_output_configuration_v1 *config, int test)
for (i = 0; i < states_len; i++) {
struct wlr_swapchain *swapchain = wlr_output_swapchain_manager_get_swapchain(
&swapchain_manager, states[i].output);
if (swapchain && !states[i].output->enabled)
wlr_output_state_set_buffer(&states[i].base, wlr_swapchain_acquire(swapchain));
struct wlr_buffer *buffer;
if (swapchain && !states[i].output->enabled
&& (buffer = wlr_swapchain_acquire(swapchain))) {
wlr_output_state_set_buffer(&states[i].base, buffer);
wlr_buffer_unlock(buffer);
}
}
if (!(ok = wlr_backend_commit(backend, states, states_len)))