Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: ui/gfx/win/dpi.cc

Issue 79033002: Disable win/ash on high dpi screens (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Also capture users running with --high-dpi-support=1 Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« chrome/browser/ui/toolbar/wrench_menu_model.cc ('K') | « ui/gfx/win/dpi.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/win/dpi.cc
diff --git a/ui/gfx/win/dpi.cc b/ui/gfx/win/dpi.cc
index e6855283f1dcd03cddc53d66f3fa44ce0b880779..8dc3effc9fcd66739af052a972784fa1b9e84775 100644
--- a/ui/gfx/win/dpi.cc
+++ b/ui/gfx/win/dpi.cc
@@ -5,7 +5,12 @@
#include "ui/gfx/win/dpi.h"
#include <windows.h>
-#include "base/command_line.h"
+#include <wrl\implements.h>
+#include <wrl\wrappers\corewrappers.h>
+#include <windows.foundation.h>
+#include <windows.graphics.display.h>
+#include "base/command_line.h"
+#include "base/win/scoped_com_initializer.h"
#include "base/win/scoped_hdc.h"
#include "base/win/windows_version.h"
#include "base/win/registry.h"
@@ -14,6 +19,7 @@
#include "ui/gfx/point_conversions.h"
#include "ui/gfx/rect_conversions.h"
#include "ui/gfx/size_conversions.h"
+#pragma comment(lib, "runtimeobject.lib")
namespace {
@@ -32,10 +38,44 @@ BOOL IsProcessDPIAwareWrapper() {
float g_device_scale_factor = 0.0f;
+// TODO: Merge this with implementation in win8/metro_driver/winrt_utils.cc
+void CheckHR(HRESULT hr, const char* message) {
+ if (FAILED(hr)) {
+ if (message)
+ PLOG(DFATAL) << message << ", hr = " << std::hex << hr;
+ else
+ PLOG(DFATAL) << "COM ERROR" << ", hr = " << std::hex << hr;
+ }
+}
+
+// TODO: Merge this with implementation in win8/metro_driver/winrt_utils.h
+template<unsigned int size, typename T>
+HRESULT CreateActivationFactory(wchar_t const (&class_name)[size], T** object) {
+ Microsoft::WRL::Wrappers::HStringReference ref_class_name(class_name);
+ return ABI::Windows::Foundation::GetActivationFactory(ref_class_name.Get(),
+ object);
+}
+
+
} // namespace
namespace gfx {
+float GetModernUIScale() {
+ base::win::ScopedCOMInitializer com_init;
+ Microsoft::WRL::ComPtr<
+ ABI::Windows::Graphics::Display::IDisplayPropertiesStatics>
+ display_properties;
+ if (SUCCEEDED(CreateActivationFactory(
+ RuntimeClass_Windows_Graphics_Display_DisplayProperties,
+ display_properties.GetAddressOf()))) {
+ ABI::Windows::Graphics::Display::ResolutionScale resolution_scale;
+ if (SUCCEEDED(display_properties->get_ResolutionScale(&resolution_scale)))
+ return static_cast<float>(resolution_scale)/100.0f;
Ben Goodger (Google) 2013/11/20 18:44:36 nit spaces around /
+ }
+ return 1.0f;
+}
+
void InitDeviceScaleFactor(float scale) {
DCHECK_NE(0.0f, scale);
g_device_scale_factor = scale;
@@ -153,7 +193,6 @@ double GetUndocumentedDPIScale() {
return scale;
}
-
double GetUndocumentedDPITouchScale() {
static double scale =
(base::win::GetVersion() < base::win::VERSION_WIN8_1) ?
@@ -161,6 +200,5 @@ double GetUndocumentedDPITouchScale() {
return scale;
}
-
} // namespace win
} // namespace gfx
« chrome/browser/ui/toolbar/wrench_menu_model.cc ('K') | « ui/gfx/win/dpi.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698