summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-21 03:40:58 +0000
committerapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-21 03:40:58 +0000
commitd47aeb51a8aae8600d5114d7810bf69ee3267dee (patch)
treec7642421b86e63da2459f780eca42f11b9d9505d
parent7678ae567c428401d5361f20c8d16547ad179258 (diff)
downloadchromium_src-d47aeb51a8aae8600d5114d7810bf69ee3267dee.zip
chromium_src-d47aeb51a8aae8600d5114d7810bf69ee3267dee.tar.gz
chromium_src-d47aeb51a8aae8600d5114d7810bf69ee3267dee.tar.bz2
Avoid calling RWHVWin::GetBackingStore when accelerated compositing is enabled.
It's milliseconds expensive and it's not needed in this case. Review URL: https://chromiumcodereview.appspot.com/10967027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157915 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.cc30
1 files changed, 14 insertions, 16 deletions
diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc
index 9f01a0d..955c49c 100644
--- a/content/browser/renderer_host/render_widget_host_view_win.cc
+++ b/content/browser/renderer_host/render_widget_host_view_win.cc
@@ -1306,6 +1306,14 @@ void RenderWidgetHostViewWin::OnDestroy() {
void RenderWidgetHostViewWin::OnPaint(HDC unused_dc) {
TRACE_EVENT0("browser", "RenderWidgetHostViewWin::OnPaint");
+
+ // Grab the region to paint before creation of paint_dc since it clears the
+ // damage region.
+ base::win::ScopedGDIObject<HRGN> damage_region(CreateRectRgn(0, 0, 0, 0));
+ GetUpdateRgn(damage_region, FALSE);
+
+ CPaintDC paint_dc(m_hWnd);
+
if (!render_widget_host_)
return;
@@ -1316,9 +1324,6 @@ void RenderWidgetHostViewWin::OnPaint(HDC unused_dc) {
// do here is clear borders during resize.
if (compositor_host_window_ &&
render_widget_host_->is_accelerated_compositing_active()) {
- // We initialize paint_dc here so that BeginPaint()/EndPaint()
- // get called to validate the region.
- CPaintDC paint_dc(m_hWnd);
RECT host_rect, child_rect;
GetClientRect(&host_rect);
if (::GetClientRect(compositor_host_window_, &child_rect) &&
@@ -1330,6 +1335,12 @@ void RenderWidgetHostViewWin::OnPaint(HDC unused_dc) {
return;
}
+ if (accelerated_surface_.get() &&
+ render_widget_host_->is_accelerated_compositing_active()) {
+ AcceleratedPaint(paint_dc.m_hDC);
+ return;
+ }
+
about_to_validate_and_paint_ = true;
BackingStoreWin* backing_store = static_cast<BackingStoreWin*>(
render_widget_host_->GetBackingStore(true));
@@ -1339,28 +1350,15 @@ void RenderWidgetHostViewWin::OnPaint(HDC unused_dc) {
// changes and repaint them.
about_to_validate_and_paint_ = false;
- // Grab the region to paint before creation of paint_dc since it clears the
- // damage region.
- base::win::ScopedGDIObject<HRGN> damage_region(CreateRectRgn(0, 0, 0, 0));
- GetUpdateRgn(damage_region, FALSE);
-
if (compositor_host_window_ && hide_compositor_window_at_next_paint_) {
::ShowWindow(compositor_host_window_, SW_HIDE);
hide_compositor_window_at_next_paint_ = false;
}
- CPaintDC paint_dc(m_hWnd);
-
gfx::Rect damaged_rect(paint_dc.m_ps.rcPaint);
if (damaged_rect.IsEmpty())
return;
- if (accelerated_surface_.get() &&
- render_widget_host_->is_accelerated_compositing_active()) {
- AcceleratedPaint(paint_dc.m_hDC);
- return;
- }
-
if (backing_store) {
gfx::Rect bitmap_rect(gfx::Point(), backing_store->size());