Fix gamma corruption
This commit is contained in:
@@ -422,6 +422,10 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
|
||||
|
||||
LL_INFOS() << "Desired FSAA Samples = " << mFSAASamples << LL_ENDL;
|
||||
|
||||
memset(mCurrentGammaRamp, 0, sizeof(mCurrentGammaRamp));
|
||||
memset(mPrevGammaRamp, 0, sizeof(mPrevGammaRamp));
|
||||
mCustomGammaSet = FALSE;
|
||||
|
||||
// Initialize the keyboard
|
||||
gKeyboard = new LLKeyboardWin32();
|
||||
gKeyboard->setCallbacks(callbacks);
|
||||
@@ -3019,13 +3023,26 @@ F32 LLWindowWin32::getGamma()
|
||||
|
||||
BOOL LLWindowWin32::restoreGamma()
|
||||
{
|
||||
return SetDeviceGammaRamp(mhDC, mPrevGammaRamp);
|
||||
if (mCustomGammaSet != FALSE)
|
||||
{
|
||||
mCustomGammaSet = FALSE;
|
||||
return SetDeviceGammaRamp(mhDC, mPrevGammaRamp);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL LLWindowWin32::setGamma(const F32 gamma)
|
||||
{
|
||||
mCurrentGamma = gamma;
|
||||
|
||||
//Get the previous gamma ramp to restore later.
|
||||
if (mCustomGammaSet == FALSE)
|
||||
{
|
||||
if (GetDeviceGammaRamp(mhDC, mPrevGammaRamp) == FALSE)
|
||||
return FALSE;
|
||||
mCustomGammaSet = TRUE;
|
||||
}
|
||||
|
||||
LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL;
|
||||
|
||||
for ( int i = 0; i < 256; ++i )
|
||||
@@ -3037,9 +3054,9 @@ BOOL LLWindowWin32::setGamma(const F32 gamma)
|
||||
if ( value > 0xffff )
|
||||
value = 0xffff;
|
||||
|
||||
mCurrentGammaRamp [ 0 * 256 + i ] =
|
||||
mCurrentGammaRamp [ 1 * 256 + i ] =
|
||||
mCurrentGammaRamp [ 2 * 256 + i ] = ( WORD )value;
|
||||
mCurrentGammaRamp[0][i] =
|
||||
mCurrentGammaRamp[1][i] =
|
||||
mCurrentGammaRamp[2][i] = (WORD) value;
|
||||
};
|
||||
|
||||
return SetDeviceGammaRamp ( mhDC, mCurrentGammaRamp );
|
||||
|
||||
Reference in New Issue
Block a user