summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-06 19:44:55 +0000
committerapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-06 19:44:55 +0000
commit81fc116be3154376d4cbecd75c307ba4b4a11a7c (patch)
tree8f84ab9d165f20bfea6ca83647563028fb085c25
parentff3efac3b16dd40212ac5cfb752be8b4ee1ee89c (diff)
downloadchromium_src-81fc116be3154376d4cbecd75c307ba4b4a11a7c.zip
chromium_src-81fc116be3154376d4cbecd75c307ba4b4a11a7c.tar.gz
chromium_src-81fc116be3154376d4cbecd75c307ba4b4a11a7c.tar.bz2
Merge 87896 - Ensure that the GPU compositing window does not have zero area on windows.
This is because D3D fails to create a swap chain for a zero area window. BUG=84809 Review URL: http://codereview.chromium.org/7054061 TBR=apatrick@chromium.org Review URL: http://codereview.chromium.org/7056071 git-svn-id: svn://svn.chromium.org/chrome/branches/782/src@88019 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_win.cc9
-rw-r--r--content/browser/gpu/gpu_process_host_ui_shim.cc8
2 files changed, 13 insertions, 4 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.cc b/chrome/browser/renderer_host/render_widget_host_view_win.cc
index da10b8c..cbc97f6 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_win.cc
+++ b/chrome/browser/renderer_host/render_widget_host_view_win.cc
@@ -1549,8 +1549,13 @@ gfx::PluginWindowHandle RenderWidgetHostViewWin::GetCompositingSurface() {
RECT currentRect;
GetClientRect(&currentRect);
- int width = currentRect.right - currentRect.left;
- int height = currentRect.bottom - currentRect.top;
+
+ // Ensure window does not have zero area because D3D cannot create a zero
+ // area swap chain.
+ int width = std::max(1,
+ static_cast<int>(currentRect.right - currentRect.left));
+ int height = std::max(1,
+ static_cast<int>(currentRect.bottom - currentRect.top));
compositor_host_window_ = CreateWindowEx(
WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR,
diff --git a/content/browser/gpu/gpu_process_host_ui_shim.cc b/content/browser/gpu/gpu_process_host_ui_shim.cc
index a356f3b..0abee9f 100644
--- a/content/browser/gpu/gpu_process_host_ui_shim.cc
+++ b/content/browser/gpu/gpu_process_host_ui_shim.cc
@@ -4,6 +4,8 @@
#include "content/browser/gpu/gpu_process_host_ui_shim.h"
+#include <algorithm>
+
#include "base/id_map.h"
#include "base/process_util.h"
#include "base/debug/trace_event.h"
@@ -194,11 +196,13 @@ void GpuProcessHostUIShim::OnResizeView(int32 renderer_id,
XSync(display, False);
}
#elif defined(OS_WIN)
+ // Ensure window does not have zero area because D3D cannot create a zero
+ // area swap chain.
SetWindowPos(handle,
NULL,
0, 0,
- size.width(),
- size.height(),
+ std::max(1, size.width()),
+ std::max(1, size.height()),
SWP_NOSENDCHANGING | SWP_NOCOPYBITS | SWP_NOZORDER |
SWP_NOACTIVATE | SWP_DEFERERASE);
#endif