diff options
author | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-21 03:40:58 +0000 |
---|---|---|
committer | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-21 03:40:58 +0000 |
commit | d47aeb51a8aae8600d5114d7810bf69ee3267dee (patch) | |
tree | c7642421b86e63da2459f780eca42f11b9d9505d | |
parent | 7678ae567c428401d5361f20c8d16547ad179258 (diff) | |
download | chromium_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.cc | 30 |
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()); |