summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorvangelis@chromium.org <vangelis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-02 06:48:18 +0000
committervangelis@chromium.org <vangelis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-02 06:48:18 +0000
commitcc66e687d0f014c8fc10190746915c40f269533e (patch)
tree63f50e88649fac6b294d7c1b9566e56b581a7dec /content
parent2945cafd30bf4a0d1c0f05514fe9c15a434bee05 (diff)
downloadchromium_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.cc9
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();
}