diff options
author | nduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-28 13:02:27 +0000 |
---|---|---|
committer | nduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-28 13:02:27 +0000 |
commit | 4f0a5006b7917f6fe043af8bdbd6a29a1f9adf51 (patch) | |
tree | b3c5cc6ebe246d07f6aed7f63f6c126464842490 /cc/layer_tree_host_impl.cc | |
parent | 8652113bd85320faa0ba013749acda934cfbe908 (diff) | |
download | chromium_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.cc | 25 |
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())); |