Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 247 | 247 |
| 248 // This function commits the LayerTreeHost to an impl tree. When modifying | 248 // This function commits the LayerTreeHost to an impl tree. When modifying |
| 249 // this function, keep in mind that the function *runs* on the impl thread! Any | 249 // this function, keep in mind that the function *runs* on the impl thread! Any |
| 250 // code that is logically a main thread operation, e.g. deletion of a Layer, | 250 // code that is logically a main thread operation, e.g. deletion of a Layer, |
| 251 // should be delayed until the LayerTreeHost::commitComplete, which will run | 251 // should be delayed until the LayerTreeHost::commitComplete, which will run |
| 252 // after the commit, but on the main thread. | 252 // after the commit, but on the main thread. |
| 253 void LayerTreeHost::finishCommitOnImplThread(LayerTreeHostImpl* hostImpl) | 253 void LayerTreeHost::finishCommitOnImplThread(LayerTreeHostImpl* hostImpl) |
| 254 { | 254 { |
| 255 DCHECK(m_proxy->isImplThread()); | 255 DCHECK(m_proxy->isImplThread()); |
| 256 | 256 |
| 257 // If there are linked evicted backings, these backings' resources may be pu t into the | |
| 258 // impl tree, so we can't draw yet. Determine this before clearing all evict ed backings. | |
| 259 bool newImplTreeHasNoEvictedResources = !m_contentsTextureManager->linkedEvi ctedBackingsExist(); | |
|
enne (OOO)
2013/01/17 17:31:14
Could you explain why this code moved from ThreadP
reveman
2013/01/17 18:49:49
We need to call ResetContentsTexturesPurged() on t
enne (OOO)
2013/01/17 18:57:17
Ah, makes perfect sense. Thanks for the explanati
| |
| 260 | |
| 257 m_contentsTextureManager->updateBackingsInDrawingImplTree(); | 261 m_contentsTextureManager->updateBackingsInDrawingImplTree(); |
| 258 m_contentsTextureManager->reduceMemory(hostImpl->resourceProvider()); | 262 m_contentsTextureManager->reduceMemory(hostImpl->resourceProvider()); |
| 259 | 263 |
| 260 // 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 |
| 261 // 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, |
| 262 // synchronization can happen directly to the active tree. | 266 // synchronization can happen directly to the active tree. |
| 263 LayerTreeImpl* syncTree; | 267 LayerTreeImpl* syncTree; |
| 264 bool needsFullTreeSync = false; | 268 bool needsFullTreeSync = false; |
| 265 if (m_settings.implSidePainting) { | 269 if (m_settings.implSidePainting) { |
| 266 // Commits should not occur while there is already a pending tree. | 270 // Commits should not occur while there is already a pending tree. |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 293 syncTree->set_source_frame_number(commitNumber()); | 297 syncTree->set_source_frame_number(commitNumber()); |
| 294 syncTree->set_background_color(m_backgroundColor); | 298 syncTree->set_background_color(m_backgroundColor); |
| 295 syncTree->set_has_transparent_background(m_hasTransparentBackground); | 299 syncTree->set_has_transparent_background(m_hasTransparentBackground); |
| 296 | 300 |
| 297 hostImpl->setViewportSize(layoutViewportSize(), deviceViewportSize()); | 301 hostImpl->setViewportSize(layoutViewportSize(), deviceViewportSize()); |
| 298 hostImpl->setDeviceScaleFactor(deviceScaleFactor()); | 302 hostImpl->setDeviceScaleFactor(deviceScaleFactor()); |
| 299 hostImpl->setPageScaleFactorAndLimits(m_pageScaleFactor, m_minPageScaleFacto r, m_maxPageScaleFactor); | 303 hostImpl->setPageScaleFactorAndLimits(m_pageScaleFactor, m_minPageScaleFacto r, m_maxPageScaleFactor); |
| 300 hostImpl->setDebugState(m_debugState); | 304 hostImpl->setDebugState(m_debugState); |
| 301 hostImpl->savePaintTime(m_renderingStats.totalPaintTime); | 305 hostImpl->savePaintTime(m_renderingStats.totalPaintTime); |
| 302 | 306 |
| 307 if (newImplTreeHasNoEvictedResources) { | |
| 308 if (syncTree->ContentsTexturesPurged()) | |
| 309 syncTree->ResetContentsTexturesPurged(); | |
| 310 } | |
| 311 | |
| 303 m_commitNumber++; | 312 m_commitNumber++; |
| 304 } | 313 } |
| 305 | 314 |
| 306 void LayerTreeHost::willCommit() | 315 void LayerTreeHost::willCommit() |
| 307 { | 316 { |
| 308 m_client->willCommit(); | 317 m_client->willCommit(); |
| 309 | 318 |
| 310 if (m_debugState.showHudInfo()) { | 319 if (m_debugState.showHudInfo()) { |
| 311 if (!m_hudLayer) | 320 if (!m_hudLayer) |
| 312 m_hudLayer = HeadsUpDisplayLayer::create(); | 321 m_hudLayer = HeadsUpDisplayLayer::create(); |
| (...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 861 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex) | 870 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex) |
| 862 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime); | 871 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime); |
| 863 } | 872 } |
| 864 | 873 |
| 865 skia::RefPtr<SkPicture> LayerTreeHost::capturePicture() | 874 skia::RefPtr<SkPicture> LayerTreeHost::capturePicture() |
| 866 { | 875 { |
| 867 return m_proxy->capturePicture(); | 876 return m_proxy->capturePicture(); |
| 868 } | 877 } |
| 869 | 878 |
| 870 } // namespace cc | 879 } // namespace cc |
| OLD | NEW |