Exemplo n.º 1
0
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;
}