aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2023-03-06 11:37:32 +0100
committerSimon Ser <contact@emersion.fr>2023-03-06 11:40:48 +0100
commit9108717d5de369351552cc99e348ba393e6f915f (patch)
tree676a180ed304a8dde57e1dd953b0dc8c6a888ff9
parent3a200aa279393f603a7d335975a50f4719110f2a (diff)
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
-rw-r--r--types/wlr_gamma_control_v1.c4
1 files 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;
}
}