diff options
Diffstat (limited to 'src/randr.c')
-rw-r--r-- | src/randr.c | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/src/randr.c b/src/randr.c index 369ac34..f401190 100644 --- a/src/randr.c +++ b/src/randr.c @@ -251,13 +251,20 @@ randr_free(randr_state_t *state) static int randr_set_temperature_for_crtc(randr_state_t *state, int crtc_num, int temp, - float gamma[3]) + float gamma[3]) { xcb_generic_error_t *error; if (crtc_num >= state->crtc_count || crtc_num < 0) { - fprintf(stderr, _("CRTC %d does not exist (Valid CRTCs are [0-%d])\n"), - state->crtc_num, state->crtc_count - 1); + fprintf(stderr, _("CRTC %d does not exist. "), + state->crtc_num); + if (state->crtc_count > 1) { + fprintf(stderr, _("Valid CRTCs are [0-%d].\n"), + state->crtc_count-1); + } else { + fprintf(stderr, _("Only CRTC 0 exists.\n")); + } + return -1; } @@ -276,18 +283,18 @@ randr_set_temperature_for_crtc(randr_state_t *state, int crtc_num, int temp, uint16_t *gamma_b = &gamma_ramps[2*ramp_size]; colorramp_fill(gamma_r, gamma_g, gamma_b, ramp_size, - temp, gamma); + temp, gamma); /* Set new gamma ramps */ xcb_void_cookie_t gamma_set_cookie = xcb_randr_set_crtc_gamma_checked(state->conn, crtc, - ramp_size, gamma_r, - gamma_g, gamma_b); + ramp_size, gamma_r, + gamma_g, gamma_b); error = xcb_request_check(state->conn, gamma_set_cookie); if (error) { fprintf(stderr, _("`%s' returned error %d\n"), - "RANDR Set CRTC Gamma", error->error_code); + "RANDR Set CRTC Gamma", error->error_code); free(gamma_ramps); return -1; } @@ -300,16 +307,20 @@ randr_set_temperature_for_crtc(randr_state_t *state, int crtc_num, int temp, int randr_set_temperature(randr_state_t *state, int temp, float gamma[3]) { - /* If no CRTC number has been specified, set temperature on all CRTCs */ + int r; + + /* If no CRTC number has been specified, + set temperature on all CRTCs. */ if (state->crtc_num < 0) { for (int i = 0; i < state->crtc_count; i++) { - if (randr_set_temperature_for_crtc(state, i, temp, gamma)) - return -1; + r = randr_set_temperature_for_crtc(state, i, + temp, gamma); + if (r < 0) return -1; } + } else { + return randr_set_temperature_for_crtc(state, state->crtc_num, + temp, gamma); } - else - return randr_set_temperature_for_crtc(state, state->crtc_num, temp, - gamma); - + return 0; } |