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