diff options
author | Simon Ser <contact@emersion.fr> | 2023-03-06 11:37:32 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2023-03-06 11:40:48 +0100 |
commit | 9108717d5de369351552cc99e348ba393e6f915f (patch) | |
tree | 676a180ed304a8dde57e1dd953b0dc8c6a888ff9 | |
parent | 3a200aa279393f603a7d335975a50f4719110f2a (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.c | 4 |
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; } } |