randr/xfree86: Fix initial gamma computation.
- The previous version overflowed sometimes.
This commit is contained in:
parent
ba9dc353a6
commit
b5736d237a
|
@ -2248,24 +2248,23 @@ xf86CrtcSetInitialGamma(xf86CrtcPtr crtc, float gamma_red, float gamma_green,
|
||||||
* So take the default gamma size for lack of something better.
|
* So take the default gamma size for lack of something better.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < size; i++) {
|
for (i = 0; i < size; i++) {
|
||||||
/* Code partially borrowed from ComputeGamma(). */
|
|
||||||
if (gamma_red == 1.0)
|
if (gamma_red == 1.0)
|
||||||
red[i] = i << 8;
|
red[i] = i << 8;
|
||||||
else
|
else
|
||||||
red[i] = (CARD16)((pow((double)i/(double)size,
|
red[i] = (CARD16)(pow((double)i/(double)(size - 1),
|
||||||
gamma_red) * (double)size + 0.5)*256);
|
(double)gamma_red) * (double)(size - 1) * 256);
|
||||||
|
|
||||||
if (gamma_green == 1.0)
|
if (gamma_green == 1.0)
|
||||||
green[i] = i << 8;
|
green[i] = i << 8;
|
||||||
else
|
else
|
||||||
green[i] = (CARD16)((pow((double)i/(double)size,
|
green[i] = (CARD16)(pow((double)i/(double)(size - 1),
|
||||||
gamma_green) * (double)size + 0.5)*256);
|
(double)gamma_green) * (double)(size - 1) * 256);
|
||||||
|
|
||||||
if (gamma_blue == 1.0)
|
if (gamma_blue == 1.0)
|
||||||
blue[i] = i << 8;
|
blue[i] = i << 8;
|
||||||
else
|
else
|
||||||
blue[i] = (CARD16)((pow((double)i/(double)size,
|
blue[i] = (CARD16)(pow((double)i/(double)(size - 1),
|
||||||
gamma_blue) * (double)size + 0.5)*256);
|
(double)gamma_blue) * (double)(size - 1) * 256);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Default size is 256, so anything else is failure. */
|
/* Default size is 256, so anything else is failure. */
|
||||||
|
|
Loading…
Reference in New Issue