summaryrefslogtreecommitdiffstats
path: root/cc/layer_tree_host_impl.cc
diff options
context:
space:
mode:
authornduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-28 13:02:27 +0000
committernduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-28 13:02:27 +0000
commit4f0a5006b7917f6fe043af8bdbd6a29a1f9adf51 (patch)
treeb3c5cc6ebe246d07f6aed7f63f6c126464842490 /cc/layer_tree_host_impl.cc
parent8652113bd85320faa0ba013749acda934cfbe908 (diff)
downloadchromium_src-4f0a5006b7917f6fe043af8bdbd6a29a1f9adf51.zip
chromium_src-4f0a5006b7917f6fe043af8bdbd6a29a1f9adf51.tar.gz
chromium_src-4f0a5006b7917f6fe043af8bdbd6a29a1f9adf51.tar.bz2
[cc] Add tracing for tree activation state
R=reveman BUG=172139 NOTRY=True Review URL: https://chromiumcodereview.appspot.com/12095008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179136 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/layer_tree_host_impl.cc')
-rw-r--r--cc/layer_tree_host_impl.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
index 37ae8f4..42aa953 100644
--- a/cc/layer_tree_host_impl.cc
+++ b/cc/layer_tree_host_impl.cc
@@ -920,6 +920,7 @@ void LayerTreeHostImpl::createPendingTree()
m_pendingTree = LayerTreeImpl::create(this);
m_client->onCanDrawStateChanged(canDraw());
m_client->onHasPendingTreeStateChanged(pendingTree());
+ TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree", m_pendingTree.get());
}
void LayerTreeHostImpl::checkForCompletedTileUploads()
@@ -929,6 +930,25 @@ void LayerTreeHostImpl::checkForCompletedTileUploads()
m_tileManager->CheckForCompletedTileUploads();
}
+scoped_ptr<base::Value> LayerTreeHostImpl::activationStateAsValue() const
+{
+ scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
+ state->SetBoolean("visible_resources_ready", pendingTree()->AreVisibleResourcesReady());
+ state->Set("tile_manager", m_tileManager->AsValue().release());
+ return state.PassAs<base::Value>();
+}
+
+namespace {
+
+std::string ValueToString(scoped_ptr<base::Value> value)
+{
+ std::string str;
+ base::JSONWriter::Write(value.get(), &str);
+ return str;
+}
+
+}
+
void LayerTreeHostImpl::activatePendingTreeIfNeeded()
{
if (!pendingTree())
@@ -938,6 +958,10 @@ void LayerTreeHostImpl::activatePendingTreeIfNeeded()
pendingTree()->UpdateDrawProperties(LayerTreeImpl::UPDATE_PENDING_TREE);
+ TRACE_EVENT_ASYNC_STEP1("cc",
+ "PendingTree", m_pendingTree.get(), "activate",
+ "state", ValueToString(activationStateAsValue()));
+
// It's always fine to activate to an empty tree. Otherwise, only
// activate once all visible resources in pending tree are ready
// or tile manager has no work scheduled for pending tree.
@@ -952,6 +976,7 @@ void LayerTreeHostImpl::activatePendingTreeIfNeeded()
void LayerTreeHostImpl::activatePendingTree()
{
CHECK(m_pendingTree);
+ TRACE_EVENT_ASYNC_END0("cc", "PendingTree", m_pendingTree.get());
m_activeTree->PushPersistedState(m_pendingTree.get());
m_activeTree->SetRootLayer(TreeSynchronizer::synchronizeTrees(m_pendingTree->RootLayer(), m_activeTree->DetachLayerTree(), m_activeTree.get()));