| Index: ui/display/win/screen_win.cc
|
| diff --git a/ui/display/win/screen_win.cc b/ui/display/win/screen_win.cc
|
| index a62cde1cd6075adc59c021645b95ca16dd6fdca5..f73e609b824cc90518eaaae41afef982c766a1f6 100644
|
| --- a/ui/display/win/screen_win.cc
|
| +++ b/ui/display/win/screen_win.cc
|
| @@ -34,31 +34,9 @@ namespace {
|
| ScreenWin* g_screen_win_instance = nullptr;
|
|
|
| float GetMonitorScaleFactor(HMONITOR monitor) {
|
| - DCHECK(monitor);
|
| if (Display::HasForceDeviceScaleFactor())
|
| return Display::GetForcedDeviceScaleFactor();
|
| -
|
| - if (base::win::IsProcessPerMonitorDpiAware()) {
|
| - static auto get_dpi_for_monitor_func = [](){
|
| - using GetDpiForMonitorPtr = decltype(::GetDpiForMonitor)*;
|
| - HMODULE shcore_dll = ::LoadLibrary(L"shcore.dll");
|
| - if (shcore_dll) {
|
| - return reinterpret_cast<GetDpiForMonitorPtr>(
|
| - ::GetProcAddress(shcore_dll, "GetDpiForMonitor"));
|
| - }
|
| - return static_cast<GetDpiForMonitorPtr>(nullptr);
|
| - }();
|
| -
|
| - UINT dpi_x;
|
| - UINT dpi_y;
|
| - if (get_dpi_for_monitor_func &&
|
| - SUCCEEDED(get_dpi_for_monitor_func(monitor, MDT_EFFECTIVE_DPI,
|
| - &dpi_x, &dpi_y))) {
|
| - DCHECK_EQ(dpi_x, dpi_y);
|
| - return GetScalingFactorFromDPI(dpi_x);
|
| - }
|
| - }
|
| - return GetDPIScale();
|
| + return ScreenWin::GetUnforcedMonitorScaleFactor(monitor);
|
| }
|
|
|
| std::vector<DisplayInfo> FindAndRemoveTouchingDisplayInfos(
|
| @@ -352,6 +330,32 @@ float ScreenWin::GetScaleFactorForHWND(HWND hwnd) {
|
| }
|
|
|
| // static
|
| +float ScreenWin::GetUnforcedMonitorScaleFactor(HMONITOR monitor) {
|
| + DCHECK(monitor);
|
| + if (base::win::IsProcessPerMonitorDpiAware()) {
|
| + static auto get_dpi_for_monitor_func = []() {
|
| + using GetDpiForMonitorPtr = decltype(::GetDpiForMonitor)*;
|
| + HMODULE shcore_dll = ::LoadLibrary(L"shcore.dll");
|
| + if (shcore_dll) {
|
| + return reinterpret_cast<GetDpiForMonitorPtr>(
|
| + ::GetProcAddress(shcore_dll, "GetDpiForMonitor"));
|
| + }
|
| + return static_cast<GetDpiForMonitorPtr>(nullptr);
|
| + }();
|
| +
|
| + UINT dpi_x;
|
| + UINT dpi_y;
|
| + if (get_dpi_for_monitor_func &&
|
| + SUCCEEDED(get_dpi_for_monitor_func(monitor, MDT_EFFECTIVE_DPI, &dpi_x,
|
| + &dpi_y))) {
|
| + DCHECK_EQ(dpi_x, dpi_y);
|
| + return GetScalingFactorFromDPI(dpi_x);
|
| + }
|
| + }
|
| + return GetUnforcedDeviceScaleFactor();
|
| +}
|
| +
|
| +// static
|
| float ScreenWin::GetSystemScaleFactor() {
|
| return GetUnforcedDeviceScaleFactor();
|
| }
|
|
|