author | Masatoshi Kimura <VYV03354@nifty.ne.jp> |
Sat, 11 Mar 2017 19:06:40 +0900 | |
changeset 347379 | 01c54613bf7348c5f19ee9d14be3363d5c0e345f |
parent 347378 | 86d53419eab713b764bd5866266c1e3e085dd934 |
child 347380 | 2d921d83c80467c9ea08ccd035332c32ee7658bb |
push id | 31496 |
push user | cbook@mozilla.com |
push date | Tue, 14 Mar 2017 13:21:57 +0000 |
treeherder | mozilla-central@9a26ed658fdc [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mchang |
bugs | 1345222 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/gfx/thebes/gfxWindowsPlatform.cpp +++ b/gfx/thebes/gfxWindowsPlatform.cpp @@ -1128,18 +1128,20 @@ gfxWindowsPlatform::FontsPrefsChanged(co if (clearTextFontCaches) { gfxFontCache *fc = gfxFontCache::GetCache(); if (fc) { fc->Flush(); } } } -#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() { if (GetDWriteFactory()) { // any missing prefs will default to invalid (-1) and be ignored; // out-of-range values will also be ignored FLOAT gamma = -1.0; @@ -1192,26 +1194,30 @@ gfxWindowsPlatform::SetupClearTypeParams mMeasuringMode = DWRITE_MEASURING_MODE_NATURAL; break; } RefPtr<IDWriteRenderingParams> defaultRenderingParams; 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; } } // For parameters that have not been explicitly set, // we copy values from default params (or our overridden value for contrast) if (gamma < 1.0 || gamma > 2.2) { gamma = defaultRenderingParams->GetGamma(); @@ -1233,23 +1239,31 @@ gfxWindowsPlatform::SetupClearTypeParams if (renderMode < DWRITE_RENDERING_MODE_DEFAULT || renderMode > DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC) { renderMode = defaultRenderingParams->GetRenderingMode(); } 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; + } } } ReadbackManagerD3D11* gfxWindowsPlatform::GetReadbackManager() { if (!mD3D11ReadbackManager) { mD3D11ReadbackManager = new ReadbackManagerD3D11();