static int xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma) { CARD16 *points, *red, *green, *blue; ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc; int size = max(0, crtc->gammaSize); if (!size) return Success; points = xcalloc(size, 3 * sizeof(CARD16)); if (!points) return BadAlloc; red = points; green = points + size; blue = points + 2 * size; gamma_to_ramp(gamma.red, red, size); gamma_to_ramp(gamma.green, green, size); gamma_to_ramp(gamma.blue, blue, size); RRCrtcGammaSet(crtc, red, green, blue); xfree(points); pScrn->gamma = gamma; return Success; }
static int xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma) { CARD16 *points, *red, *green, *blue; ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; RRCrtcPtr crtc = xf86CompatRRCrtc(pScrn); int size; if (!crtc) return Success; size = max(0, crtc->gammaSize); if (!size) return Success; points = xcalloc(size, 3 * sizeof(CARD16)); if (!points) return BadAlloc; red = points; green = points + size; blue = points + 2 * size; gamma_to_ramp(gamma.red, red, size); gamma_to_ramp(gamma.green, green, size); gamma_to_ramp(gamma.blue, blue, size); RRCrtcGammaSet(crtc, red, green, blue); xfree(points); pScrn->gamma = gamma; return Success; }