diff options
author | vangelis@chromium.org <vangelis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-02 06:48:18 +0000 |
---|---|---|
committer | vangelis@chromium.org <vangelis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-02 06:48:18 +0000 |
commit | cc66e687d0f014c8fc10190746915c40f269533e (patch) | |
tree | 63f50e88649fac6b294d7c1b9566e56b581a7dec /content | |
parent | 2945cafd30bf4a0d1c0f05514fe9c15a434bee05 (diff) | |
download | chromium_src-cc66e687d0f014c8fc10190746915c40f269533e.zip chromium_src-cc66e687d0f014c8fc10190746915c40f269533e.tar.gz chromium_src-cc66e687d0f014c8fc10190746915c40f269533e.tar.bz2 |
Suppress unecessary repaints on a SwapComplete callback.
Avoid calling DoDeferredUpdate on a SwapComplete callback if there are no other invalidations on the
page or a pending animation.
BUG=153452
Review URL: https://chromiumcodereview.appspot.com/11038010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159646 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/renderer/render_widget.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index bc0b3f0..9c9901c 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc @@ -534,6 +534,15 @@ void RenderWidget::OnSwapBuffersComplete() { return; } + // Do not call DoDeferredUpdate unless there's animation work to be done or + // a real invalidation. This prevents rendering in response to a swapbuffers + // callback coming back after we've navigated away from the page that + // generated it. + if (!animation_update_pending_ && !paint_aggregator_.HasPendingUpdate()) { + TRACE_EVENT0("renderer", "EarlyOut_NoPendingUpdate"); + return; + } + // Continue painting if necessary... DoDeferredUpdateAndSendInputAck(); } |