From 9108717d5de369351552cc99e348ba393e6f915f Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 6 Mar 2023 11:37:32 +0100 Subject: [PATCH] gamma-control-v1: fix handling of duplicate control When a new client comes in and tries to create a zwlr_gamma_control_v1 object for an output which already has one, we were destroying the old object and early-returning. The early return causes the new object to not be set up properly: it's not inserted in the list and doesn't get the gamma_size event. Fix this by destroying the new object, and leave the old object intact, which is what was the intent I think. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3605 --- types/wlr_gamma_control_v1.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/wlr_gamma_control_v1.c b/types/wlr_gamma_control_v1.c index 009a42a5..4c1e1f1e 100644 --- a/types/wlr_gamma_control_v1.c +++ b/types/wlr_gamma_control_v1.c @@ -219,8 +219,8 @@ static void gamma_control_manager_get_gamma_control(struct wl_client *client, struct wlr_gamma_control_v1 *gc; wl_list_for_each(gc, &manager->controls, link) { if (gc->output == output) { - zwlr_gamma_control_v1_send_failed(gc->resource); - gamma_control_destroy(gc); + zwlr_gamma_control_v1_send_failed(gamma_control->resource); + gamma_control_destroy(gamma_control); return; } }