| 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 |