diff options
author | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-27 23:07:56 +0000 |
---|---|---|
committer | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-27 23:07:56 +0000 |
commit | 7d5076ccec7ea4dd83b5aeed0469d7ba0dc013a4 (patch) | |
tree | 57785e2315c36146a7c16251d7f5f2afe6b313b5 /android_webview/browser | |
parent | a2d2f42ca69bd4cd09a2ad873befaff0f9da8e55 (diff) | |
download | chromium_src-7d5076ccec7ea4dd83b5aeed0469d7ba0dc013a4.zip chromium_src-7d5076ccec7ea4dd83b5aeed0469d7ba0dc013a4.tar.gz chromium_src-7d5076ccec7ea4dd83b5aeed0469d7ba0dc013a4.tar.bz2 |
Block SetContinuousInvalidate during BeginImplFrame
This is moving some of BrowserViewRenderer::block_invalidate_
logic into content SynchronousCompositor. In short, during
DemandDraw, SynchronousCompositor will only call
SetContinuousInvalidate once at the very end of the draw, to
prevent the unnecessary state flip leads to an unwanted
invalidate.
This logic originally lives in BrowserViewRenderer. Moving it
to SynchronousCompositor will allow HardwareRenderer to be
refactored out of BrowserViewRenderer
BUG=344087
Review URL: https://codereview.chromium.org/182493002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253965 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/browser')
-rw-r--r-- | android_webview/browser/browser_view_renderer.cc | 10 | ||||
-rw-r--r-- | android_webview/browser/browser_view_renderer.h | 4 |
2 files changed, 3 insertions, 11 deletions
diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc index 4f5669e..1750b44 100644 --- a/android_webview/browser/browser_view_renderer.cc +++ b/android_webview/browser/browser_view_renderer.cc @@ -109,10 +109,7 @@ void BrowserViewRenderer::DrawGL(AwDrawGLInfo* draw_info) { hardware_renderer_.reset(new HardwareRenderer(shared_renderer_state_)); } - { - base::AutoReset<bool> auto_reset(&block_invalidates_, true); - hardware_renderer_->DrawGL(draw_info); - } + hardware_renderer_->DrawGL(draw_info); const DrawGLResult result = shared_renderer_state_->GetDrawGLResult(); if (result.frame_id == draw_gl_input_.frame_id) { @@ -173,7 +170,6 @@ skia::RefPtr<SkPicture> BrowserViewRenderer::CapturePicture(int width, void BrowserViewRenderer::EnableOnNewPicture(bool enabled) { on_new_picture_enable_ = enabled; - EnsureContinuousInvalidation(false); } void BrowserViewRenderer::ClearView() { @@ -338,7 +334,6 @@ void BrowserViewRenderer::DidUpdateContent() { "BrowserViewRenderer::DidUpdateContent", TRACE_EVENT_SCOPE_THREAD); clear_view_ = false; - EnsureContinuousInvalidation(false); if (on_new_picture_enable_) client_->OnNewPicture(); } @@ -490,9 +485,8 @@ void BrowserViewRenderer::ForceFakeCompositeSW() { bool BrowserViewRenderer::CompositeSW(SkCanvas* canvas) { DCHECK(has_compositor_); - fallback_tick_.Cancel(); - block_invalidates_ = true; bool result = shared_renderer_state_->CompositorDemandDrawSw(canvas); + fallback_tick_.Cancel(); block_invalidates_ = false; EnsureContinuousInvalidation(false); return result; diff --git a/android_webview/browser/browser_view_renderer.h b/android_webview/browser/browser_view_renderer.h index e5b6e16..5f43089 100644 --- a/android_webview/browser/browser_view_renderer.h +++ b/android_webview/browser/browser_view_renderer.h @@ -170,9 +170,7 @@ class BrowserViewRenderer : public content::SynchronousCompositorClient { // states. bool compositor_needs_continuous_invalidate_; - // Used to block additional invalidates while one is already pending or before - // compositor draw which may switch continuous_invalidate on and off in the - // process. + // Used to block additional invalidates while one is already pending. bool block_invalidates_; // Holds a callback to FallbackTickFired while it is pending. |