summaryrefslogtreecommitdiffstats
path: root/cc/layer_tree_host.cc
diff options
context:
space:
mode:
authoregraether@chromium.org <egraether@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-20 04:01:26 +0000
committeregraether@chromium.org <egraether@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-20 04:01:26 +0000
commit788fbf72d7fe63eab10e01f2bca86b02b33c263e (patch)
tree3aa48a72e06e8deeb98c7ad9f370a0bdb223d13a /cc/layer_tree_host.cc
parent8af989c23f030663c8b5a297e988970b4910b461 (diff)
downloadchromium_src-788fbf72d7fe63eab10e01f2bca86b02b33c263e.zip
chromium_src-788fbf72d7fe63eab10e01f2bca86b02b33c263e.tar.gz
chromium_src-788fbf72d7fe63eab10e01f2bca86b02b33c263e.tar.bz2
This change adds continuous painting mode to the compositor, which makes it easier to detect how certain DOMNodes and CSSStyles affect painting performance. If active it calls setNeedsDisplay() on every Layer in every frame.
BUG= Review URL: https://chromiumcodereview.appspot.com/11450022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@174105 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/layer_tree_host.cc')
-rw-r--r--cc/layer_tree_host.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/cc/layer_tree_host.cc b/cc/layer_tree_host.cc
index 4a228f4..91276de 100644
--- a/cc/layer_tree_host.cc
+++ b/cc/layer_tree_host.cc
@@ -221,6 +221,28 @@ void LayerTreeHost::acquireLayerTextures()
m_proxy->acquireLayerTextures();
}
+void LayerTreeHost::didBeginFrame()
+{
+ m_client->didBeginFrame();
+
+ if (m_debugState.continuousPainting)
+ setNeedsDisplayOnAllLayersRecursive(m_rootLayer.get());
+}
+
+void LayerTreeHost::setNeedsDisplayOnAllLayersRecursive(Layer* layer)
+{
+ if (!layer)
+ return;
+
+ layer->setNeedsDisplay();
+
+ setNeedsDisplayOnAllLayersRecursive(layer->maskLayer());
+ setNeedsDisplayOnAllLayersRecursive(layer->replicaLayer());
+
+ for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIndex)
+ setNeedsDisplayOnAllLayersRecursive(layer->children()[childIndex].get());
+}
+
void LayerTreeHost::updateAnimations(base::TimeTicks frameBeginTime)
{
m_animating = true;