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_impl.h" | 5 #include "cc/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 , m_scrollDeltaIsInViewportSpace(false) | 212 , m_scrollDeltaIsInViewportSpace(false) |
213 , m_settings(settings) | 213 , m_settings(settings) |
214 , m_debugState(settings.initialDebugState) | 214 , m_debugState(settings.initialDebugState) |
215 , m_deviceScaleFactor(1) | 215 , m_deviceScaleFactor(1) |
216 , m_visible(true) | 216 , m_visible(true) |
217 , m_contentsTexturesPurged(false) | 217 , m_contentsTexturesPurged(false) |
218 , m_managedMemoryPolicy(PrioritizedResourceManager::defaultMemoryAllocationL
imit(), | 218 , m_managedMemoryPolicy(PrioritizedResourceManager::defaultMemoryAllocationL
imit(), |
219 ManagedMemoryPolicy::CUTOFF_ALLOW_EVERYTHING, | 219 ManagedMemoryPolicy::CUTOFF_ALLOW_EVERYTHING, |
220 0, | 220 0, |
221 ManagedMemoryPolicy::CUTOFF_ALLOW_NOTHING) | 221 ManagedMemoryPolicy::CUTOFF_ALLOW_NOTHING) |
222 , m_backgroundColor(0) | |
223 , m_hasTransparentBackground(false) | |
224 , m_needsUpdateDrawProperties(false) | 222 , m_needsUpdateDrawProperties(false) |
225 , m_pinchGestureActive(false) | 223 , m_pinchGestureActive(false) |
226 , m_fpsCounter(FrameRateCounter::create(m_proxy->hasImplThread())) | 224 , m_fpsCounter(FrameRateCounter::create(m_proxy->hasImplThread())) |
227 , m_debugRectHistory(DebugRectHistory::create()) | 225 , m_debugRectHistory(DebugRectHistory::create()) |
228 , m_numImplThreadScrolls(0) | 226 , m_numImplThreadScrolls(0) |
229 , m_numMainThreadScrolls(0) | 227 , m_numMainThreadScrolls(0) |
230 , m_cumulativeNumLayersDrawn(0) | 228 , m_cumulativeNumLayersDrawn(0) |
231 , m_cumulativeNumMissingTiles(0) | 229 , m_cumulativeNumMissingTiles(0) |
232 , m_lastSentMemoryVisibleBytes(0) | 230 , m_lastSentMemoryVisibleBytes(0) |
233 , m_lastSentMemoryVisibleAndNearbyBytes(0) | 231 , m_lastSentMemoryVisibleAndNearbyBytes(0) |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
607 | 605 |
608 #ifndef NDEBUG | 606 #ifndef NDEBUG |
609 for (size_t i = 0; i < frame.renderPasses.size(); ++i) { | 607 for (size_t i = 0; i < frame.renderPasses.size(); ++i) { |
610 for (size_t j = 0; j < frame.renderPasses[i]->quad_list.size(); ++j) | 608 for (size_t j = 0; j < frame.renderPasses[i]->quad_list.size(); ++j) |
611 DCHECK(frame.renderPasses[i]->quad_list[j]->shared_quad_state); | 609 DCHECK(frame.renderPasses[i]->quad_list[j]->shared_quad_state); |
612 DCHECK(frame.renderPassesById.find(frame.renderPasses[i]->id) | 610 DCHECK(frame.renderPassesById.find(frame.renderPasses[i]->id) |
613 != frame.renderPassesById.end()); | 611 != frame.renderPassesById.end()); |
614 } | 612 } |
615 #endif | 613 #endif |
616 | 614 |
617 if (!m_hasTransparentBackground) { | 615 if (!activeTree()->has_transparent_background()) { |
618 frame.renderPasses.last()->has_transparent_background = false; | 616 frame.renderPasses.last()->has_transparent_background = false; |
619 appendQuadsToFillScreen(frame.renderPasses.last(), rootLayer(), m_backgr
oundColor, occlusionTracker); | 617 appendQuadsToFillScreen(frame.renderPasses.last(), rootLayer(), activeTr
ee()->background_color(), occlusionTracker); |
620 } | 618 } |
621 | 619 |
622 if (drawFrame) | 620 if (drawFrame) |
623 occlusionTracker.overdrawMetrics().recordMetrics(this); | 621 occlusionTracker.overdrawMetrics().recordMetrics(this); |
624 | 622 |
625 removeRenderPasses(CullRenderPassesWithNoQuads(), frame); | 623 removeRenderPasses(CullRenderPassesWithNoQuads(), frame); |
626 m_renderer->decideRenderPassAllocationsForFrame(frame.renderPasses); | 624 m_renderer->decideRenderPassAllocationsForFrame(frame.renderPasses); |
627 removeRenderPasses(CullRenderPassesWithCachedTextures(*m_renderer), frame); | 625 removeRenderPasses(CullRenderPassesWithCachedTextures(*m_renderer), frame); |
628 | 626 |
629 return drawFrame; | 627 return drawFrame; |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
993 | 991 |
994 if (layerImpl->scrollable()) | 992 if (layerImpl->scrollable()) |
995 return layerImpl; | 993 return layerImpl; |
996 | 994 |
997 if (layerImpl->drawsContent() && layerImpl->parent() && layerImpl->parent()-
>scrollable()) | 995 if (layerImpl->drawsContent() && layerImpl->parent() && layerImpl->parent()-
>scrollable()) |
998 return layerImpl->parent(); | 996 return layerImpl->parent(); |
999 | 997 |
1000 return 0; | 998 return 0; |
1001 } | 999 } |
1002 | 1000 |
1003 void LayerTreeHostImpl::setRootLayer(scoped_ptr<LayerImpl> layer) | |
1004 { | |
1005 m_activeTree->SetRootLayer(layer.Pass()); | |
1006 setNeedsUpdateDrawProperties(); | |
1007 } | |
1008 | |
1009 void LayerTreeHostImpl::createPendingTree() | 1001 void LayerTreeHostImpl::createPendingTree() |
1010 { | 1002 { |
1011 CHECK(!m_pendingTree); | 1003 CHECK(!m_pendingTree); |
1012 m_pendingTree = LayerTreeImpl::create(this); | 1004 m_pendingTree = LayerTreeImpl::create(this); |
1013 m_client->onCanDrawStateChanged(canDraw()); | 1005 m_client->onCanDrawStateChanged(canDraw()); |
1014 m_client->onHasPendingTreeStateChanged(pendingTree()); | 1006 m_client->onHasPendingTreeStateChanged(pendingTree()); |
1015 } | 1007 } |
1016 | 1008 |
1017 void LayerTreeHostImpl::activatePendingTreeIfNeeded() | 1009 void LayerTreeHostImpl::activatePendingTreeIfNeeded() |
1018 { | 1010 { |
(...skipping 20 matching lines...) Expand all Loading... |
1039 void LayerTreeHostImpl::activatePendingTree() | 1031 void LayerTreeHostImpl::activatePendingTree() |
1040 { | 1032 { |
1041 CHECK(m_pendingTree); | 1033 CHECK(m_pendingTree); |
1042 m_activeTree.swap(m_pendingTree); | 1034 m_activeTree.swap(m_pendingTree); |
1043 // TODO(enne): consider recycling this tree to prevent layer churn | 1035 // TODO(enne): consider recycling this tree to prevent layer churn |
1044 m_pendingTree.reset(); | 1036 m_pendingTree.reset(); |
1045 m_client->onCanDrawStateChanged(canDraw()); | 1037 m_client->onCanDrawStateChanged(canDraw()); |
1046 m_client->onHasPendingTreeStateChanged(pendingTree()); | 1038 m_client->onHasPendingTreeStateChanged(pendingTree()); |
1047 } | 1039 } |
1048 | 1040 |
1049 scoped_ptr<LayerImpl> LayerTreeHostImpl::detachLayerTree() | |
1050 { | |
1051 scoped_ptr<LayerImpl> layer = m_activeTree->DetachLayerTree(); | |
1052 return layer.Pass(); | |
1053 } | |
1054 | |
1055 void LayerTreeHostImpl::setVisible(bool visible) | 1041 void LayerTreeHostImpl::setVisible(bool visible) |
1056 { | 1042 { |
1057 DCHECK(m_proxy->isImplThread()); | 1043 DCHECK(m_proxy->isImplThread()); |
1058 | 1044 |
1059 if (m_visible == visible) | 1045 if (m_visible == visible) |
1060 return; | 1046 return; |
1061 m_visible = visible; | 1047 m_visible = visible; |
1062 didVisibilityChange(this, m_visible); | 1048 didVisibilityChange(this, m_visible); |
1063 enforceManagedMemoryPolicy(m_managedMemoryPolicy); | 1049 enforceManagedMemoryPolicy(m_managedMemoryPolicy); |
1064 | 1050 |
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1718 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); | 1704 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); |
1719 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1705 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
1720 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1706 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
1721 m_client->setNeedsRedrawOnImplThread(); | 1707 m_client->setNeedsRedrawOnImplThread(); |
1722 | 1708 |
1723 for (size_t i = 0; i < layer->children().size(); ++i) | 1709 for (size_t i = 0; i < layer->children().size(); ++i) |
1724 animateScrollbarsRecursive(layer->children()[i], time); | 1710 animateScrollbarsRecursive(layer->children()[i], time); |
1725 } | 1711 } |
1726 | 1712 |
1727 } // namespace cc | 1713 } // namespace cc |
OLD | NEW |