mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
Bug 1345222 - Fix user-set ClearType params detection. r=mchang
Also making SetupClearTypeParams more robust: * Using W functions instead of A functions. * Checking the value range again after taking the enhancedContrast value from the registry. * Adding error checks after CreateCustomRenderingParams calls. MozReview-Commit-ID: I7Lr6SCqiRz --HG-- extra : rebase_source : 50dfe6b233bb09b49057e96f8df558eea4554ec8
This commit is contained in:
parent
b48fcd2501
commit
8a87efb010
@ -1133,8 +1133,10 @@ gfxWindowsPlatform::FontsPrefsChanged(const char *aPref)
|
||||
}
|
||||
}
|
||||
|
||||
#define ENHANCED_CONTRAST_REGISTRY_KEY \
|
||||
HKEY_CURRENT_USER, "Software\\Microsoft\\Avalon.Graphics\\DISPLAY1\\EnhancedContrastLevel"
|
||||
#define DISPLAY1_REGISTRY_KEY \
|
||||
HKEY_CURRENT_USER, L"Software\\Microsoft\\Avalon.Graphics\\DISPLAY1"
|
||||
|
||||
#define ENHANCED_CONTRAST_VALUE_NAME L"EnhancedContrastLevel"
|
||||
|
||||
void
|
||||
gfxWindowsPlatform::SetupClearTypeParams()
|
||||
@ -1197,16 +1199,20 @@ gfxWindowsPlatform::SetupClearTypeParams()
|
||||
GetDWriteFactory()->CreateRenderingParams(getter_AddRefs(defaultRenderingParams));
|
||||
// For EnhancedContrast, we override the default if the user has not set it
|
||||
// in the registry (by using the ClearType Tuner).
|
||||
if (contrast >= 0.0 && contrast <= 10.0) {
|
||||
contrast = contrast;
|
||||
} else {
|
||||
if (contrast < 0.0 || contrast > 10.0) {
|
||||
HKEY hKey;
|
||||
if (RegOpenKeyExA(ENHANCED_CONTRAST_REGISTRY_KEY,
|
||||
0, KEY_READ, &hKey) == ERROR_SUCCESS)
|
||||
{
|
||||
contrast = defaultRenderingParams->GetEnhancedContrast();
|
||||
LONG res = RegOpenKeyExW(DISPLAY1_REGISTRY_KEY,
|
||||
0, KEY_READ, &hKey);
|
||||
if (res == ERROR_SUCCESS) {
|
||||
res = RegQueryValueExW(hKey, ENHANCED_CONTRAST_VALUE_NAME,
|
||||
nullptr, nullptr, nullptr, nullptr);
|
||||
if (res == ERROR_SUCCESS) {
|
||||
contrast = defaultRenderingParams->GetEnhancedContrast();
|
||||
}
|
||||
RegCloseKey(hKey);
|
||||
} else {
|
||||
}
|
||||
|
||||
if (contrast < 0.0 || contrast > 10.0) {
|
||||
contrast = 1.0;
|
||||
}
|
||||
}
|
||||
@ -1238,13 +1244,21 @@ gfxWindowsPlatform::SetupClearTypeParams()
|
||||
|
||||
mRenderingParams[TEXT_RENDERING_NO_CLEARTYPE] = defaultRenderingParams;
|
||||
|
||||
GetDWriteFactory()->CreateCustomRenderingParams(gamma, contrast, level,
|
||||
dwriteGeometry, renderMode,
|
||||
HRESULT hr = GetDWriteFactory()->CreateCustomRenderingParams(
|
||||
gamma, contrast, level, dwriteGeometry, renderMode,
|
||||
getter_AddRefs(mRenderingParams[TEXT_RENDERING_NORMAL]));
|
||||
if (FAILED(hr) || !mRenderingParams[TEXT_RENDERING_NORMAL]) {
|
||||
mRenderingParams[TEXT_RENDERING_NORMAL] = defaultRenderingParams;
|
||||
}
|
||||
|
||||
GetDWriteFactory()->CreateCustomRenderingParams(gamma, contrast, level,
|
||||
hr = GetDWriteFactory()->CreateCustomRenderingParams(
|
||||
gamma, contrast, level,
|
||||
dwriteGeometry, DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC,
|
||||
getter_AddRefs(mRenderingParams[TEXT_RENDERING_GDI_CLASSIC]));
|
||||
if (FAILED(hr) || !mRenderingParams[TEXT_RENDERING_GDI_CLASSIC]) {
|
||||
mRenderingParams[TEXT_RENDERING_GDI_CLASSIC] =
|
||||
defaultRenderingParams;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user