diff options
author | kevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-31 17:24:42 +0000 |
---|---|---|
committer | kevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-31 17:24:42 +0000 |
commit | 7408e92fafcfa8c839c49953a9d3d10f6948098d (patch) | |
tree | ac64446c921220256bbba2824edce38d73889416 /ui/surface/accelerated_surface_win.cc | |
parent | 4623bfce16966ddf87053875b2756002590a3911 (diff) | |
download | chromium_src-7408e92fafcfa8c839c49953a9d3d10f6948098d.zip chromium_src-7408e92fafcfa8c839c49953a9d3d10f6948098d.tar.gz chromium_src-7408e92fafcfa8c839c49953a9d3d10f6948098d.tar.bz2 |
Fix high-DPI on Windows to make use of DIP scaling in WebKit.
BUG=149881
Review URL: https://chromiumcodereview.appspot.com/11953054
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179899 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/surface/accelerated_surface_win.cc')
-rw-r--r-- | ui/surface/accelerated_surface_win.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/ui/surface/accelerated_surface_win.cc b/ui/surface/accelerated_surface_win.cc index abd0745..8692fa3 100644 --- a/ui/surface/accelerated_surface_win.cc +++ b/ui/surface/accelerated_surface_win.cc @@ -23,6 +23,7 @@ #include "base/threading/thread_restrictions.h" #include "base/time.h" #include "base/win/wrapped_window_proc.h" +#include "ui/base/win/dpi.h" #include "ui/base/win/hwnd_util.h" #include "ui/base/win/shell.h" #include "ui/gfx/rect.h" @@ -495,7 +496,19 @@ void AcceleratedPresenter::DoPresentAndAcknowledge( // If the window is a different size than the swap chain that is being // presented then drop the frame. gfx::Size window_size = GetWindowSize(); - if (hidden_ && size != window_size) { +#if defined(ENABLE_HIDPI) + // Check if the size mismatch is within allowable round off or truncation + // error. + gfx::Size dip_size = ui::win::ScreenToDIPSize(window_size); + gfx::Size pixel_size = ui::win::DIPToScreenSize(dip_size); + bool size_mismatch = abs(window_size.width() - size.width()) > + abs(window_size.width() - pixel_size.width()) || + abs(window_size.height() - size.height()) > + abs(window_size.height() - pixel_size.height()); +#else + bool size_mismatch = size != window_size; +#endif + if (hidden_ && size_mismatch) { TRACE_EVENT2("gpu", "EarlyOut_WrongWindowSize", "backwidth", size.width(), "backheight", size.height()); TRACE_EVENT2("gpu", "EarlyOut_WrongWindowSize2", |