Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Side by Side Diff: cc/layer_tree_host.cc

Issue 12094094: cc: Don't do full tree sync unless needed with impl painting. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | cc/layer_tree_host_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layer_tree_host.h" 5 #include "cc/layer_tree_host.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 // impl tree, so we can't draw yet. Determine this before clearing all evict ed backings. 258 // impl tree, so we can't draw yet. Determine this before clearing all evict ed backings.
259 bool newImplTreeHasNoEvictedResources = !m_contentsTextureManager->linkedEvi ctedBackingsExist(); 259 bool newImplTreeHasNoEvictedResources = !m_contentsTextureManager->linkedEvi ctedBackingsExist();
260 260
261 m_contentsTextureManager->updateBackingsInDrawingImplTree(); 261 m_contentsTextureManager->updateBackingsInDrawingImplTree();
262 m_contentsTextureManager->reduceMemory(hostImpl->resourceProvider()); 262 m_contentsTextureManager->reduceMemory(hostImpl->resourceProvider());
263 263
264 // In impl-side painting, synchronize to the pending tree so that it has 264 // In impl-side painting, synchronize to the pending tree so that it has
265 // time to raster before being displayed. If no pending tree is needed, 265 // time to raster before being displayed. If no pending tree is needed,
266 // synchronization can happen directly to the active tree. 266 // synchronization can happen directly to the active tree.
267 LayerTreeImpl* syncTree; 267 LayerTreeImpl* syncTree;
268 bool needsFullTreeSync = false;
269 if (m_settings.implSidePainting) { 268 if (m_settings.implSidePainting) {
270 // Commits should not occur while there is already a pending tree. 269 // Commits should not occur while there is already a pending tree.
271 DCHECK(!hostImpl->pendingTree()); 270 DCHECK(!hostImpl->pendingTree());
272 hostImpl->createPendingTree(); 271 hostImpl->createPendingTree();
273 syncTree = hostImpl->pendingTree(); 272 syncTree = hostImpl->pendingTree();
274 // TODO(enne): we could recycle old active trees and keep track for
275 // multiple main thread frames whether a sync is needed
276 needsFullTreeSync = true;
277 } else { 273 } else {
278 syncTree = hostImpl->activeTree(); 274 syncTree = hostImpl->activeTree();
279 needsFullTreeSync = m_needsFullTreeSync;
280 } 275 }
281 276
282 if (needsFullTreeSync) 277 if (m_needsFullTreeSync)
283 syncTree->SetRootLayer(TreeSynchronizer::synchronizeTrees(rootLayer(), s yncTree->DetachLayerTree(), syncTree)); 278 syncTree->SetRootLayer(TreeSynchronizer::synchronizeTrees(rootLayer(), s yncTree->DetachLayerTree(), syncTree));
284 { 279 {
285 TRACE_EVENT0("cc", "LayerTreeHost::pushProperties"); 280 TRACE_EVENT0("cc", "LayerTreeHost::pushProperties");
286 TreeSynchronizer::pushProperties(rootLayer(), syncTree->RootLayer()); 281 TreeSynchronizer::pushProperties(rootLayer(), syncTree->RootLayer());
287 } 282 }
288 283
284 syncTree->set_needs_full_tree_sync(m_needsFullTreeSync);
289 m_needsFullTreeSync = false; 285 m_needsFullTreeSync = false;
290 286
291 if (m_rootLayer && m_hudLayer) 287 if (m_rootLayer && m_hudLayer)
292 syncTree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>(LayerTreeH ostCommon::findLayerInSubtree(syncTree->RootLayer(), m_hudLayer->id()))); 288 syncTree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>(LayerTreeH ostCommon::findLayerInSubtree(syncTree->RootLayer(), m_hudLayer->id())));
293 else 289 else
294 syncTree->set_hud_layer(0); 290 syncTree->set_hud_layer(0);
295 291
296 syncTree->set_source_frame_number(commitNumber()); 292 syncTree->set_source_frame_number(commitNumber());
297 syncTree->set_background_color(m_backgroundColor); 293 syncTree->set_background_color(m_backgroundColor);
298 syncTree->set_has_transparent_background(m_hasTransparentBackground); 294 syncTree->set_has_transparent_background(m_hasTransparentBackground);
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex) 862 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex)
867 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime); 863 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime);
868 } 864 }
869 865
870 skia::RefPtr<SkPicture> LayerTreeHost::capturePicture() 866 skia::RefPtr<SkPicture> LayerTreeHost::capturePicture()
871 { 867 {
872 return m_proxy->capturePicture(); 868 return m_proxy->capturePicture();
873 } 869 }
874 870
875 } // namespace cc 871 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698