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(); |
} |