diff --git a/types/wlr_gamma_control_v1.c b/types/wlr_gamma_control_v1.c index 591c6aa3..48356ee1 100644 --- a/types/wlr_gamma_control_v1.c +++ b/types/wlr_gamma_control_v1.c @@ -108,6 +108,7 @@ static void gamma_control_handle_set_gamma(struct wl_client *client, wlr_output_set_gamma(gamma_control->output, ramp_size, r, g, b); if (!wlr_output_test(gamma_control->output)) { gamma_control_send_failed(gamma_control); + wlr_output_rollback(gamma_control->output); goto error_table; } free(table); diff --git a/types/wlr_output.c b/types/wlr_output.c index ce05f97b..9d02ec3c 100644 --- a/types/wlr_output.c +++ b/types/wlr_output.c @@ -551,6 +551,10 @@ static bool output_basic_test(struct wlr_output *output) { wlr_log(WLR_DEBUG, "Tried to enable adaptive sync on a disabled output"); return false; } + if (!enabled && output->pending.committed & WLR_OUTPUT_STATE_GAMMA_LUT) { + wlr_log(WLR_DEBUG, "Tried to set the gamma lut on a disabled output"); + return false; + } return true; }