Clean up gamma_control on failure

master
Kenny Levinsen 2020-10-04 15:24:54 +02:00
parent f8269d8754
commit caba0d8dcc
1 changed files with 10 additions and 1 deletions

11
main.c
View File

@ -144,6 +144,9 @@ static void gamma_control_handle_gamma_size(void *data,
(void)gamma_control; (void)gamma_control;
struct output *output = data; struct output *output = data;
output->ramp_size = ramp_size; output->ramp_size = ramp_size;
if (output->table_fd != -1) {
close(output->table_fd);
}
output->table_fd = create_gamma_table(ramp_size, &output->table); output->table_fd = create_gamma_table(ramp_size, &output->table);
output->context->new_output = true; output->context->new_output = true;
if (output->table_fd < 0) { if (output->table_fd < 0) {
@ -157,8 +160,14 @@ static void gamma_control_handle_failed(void *data,
struct zwlr_gamma_control_v1 *gamma_control) { struct zwlr_gamma_control_v1 *gamma_control) {
(void)gamma_control; (void)gamma_control;
struct output *output = data; struct output *output = data;
fprintf(stderr, "failed to set gamma table for output %d\n", fprintf(stderr, "gamma control of output %d failed\n",
output->id); output->id);
zwlr_gamma_control_v1_destroy(output->gamma_control);
output->gamma_control = NULL;
if (output->table_fd != -1) {
close(output->table_fd);
output->table_fd = -1;
}
} }
static const struct zwlr_gamma_control_v1_listener gamma_control_listener = { static const struct zwlr_gamma_control_v1_listener gamma_control_listener = {