| 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 PriorityCalculator::allowEverythingCutoff(), | 219 PriorityCalculator::allowEverythingCutoff(), |
| 220 0, | 220 0, |
| 221 PriorityCalculator::allowNothingCutoff()) | 221 PriorityCalculator::allowNothingCutoff()) |
| 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 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 | 595 |
| 598 #ifndef NDEBUG | 596 #ifndef NDEBUG |
| 599 for (size_t i = 0; i < frame.renderPasses.size(); ++i) { | 597 for (size_t i = 0; i < frame.renderPasses.size(); ++i) { |
| 600 for (size_t j = 0; j < frame.renderPasses[i]->quad_list.size(); ++j) | 598 for (size_t j = 0; j < frame.renderPasses[i]->quad_list.size(); ++j) |
| 601 DCHECK(frame.renderPasses[i]->quad_list[j]->shared_quad_state); | 599 DCHECK(frame.renderPasses[i]->quad_list[j]->shared_quad_state); |
| 602 DCHECK(frame.renderPassesById.find(frame.renderPasses[i]->id) | 600 DCHECK(frame.renderPassesById.find(frame.renderPasses[i]->id) |
| 603 != frame.renderPassesById.end()); | 601 != frame.renderPassesById.end()); |
| 604 } | 602 } |
| 605 #endif | 603 #endif |
| 606 | 604 |
| 607 if (!m_hasTransparentBackground) { | 605 if (!activeTree()->has_transparent_background()) { |
| 608 frame.renderPasses.last()->has_transparent_background = false; | 606 frame.renderPasses.last()->has_transparent_background = false; |
| 609 appendQuadsToFillScreen(frame.renderPasses.last(), rootLayer(), m_backgr
oundColor, occlusionTracker); | 607 appendQuadsToFillScreen(frame.renderPasses.last(), rootLayer(), activeTr
ee()->background_color(), occlusionTracker); |
| 610 } | 608 } |
| 611 | 609 |
| 612 if (drawFrame) | 610 if (drawFrame) |
| 613 occlusionTracker.overdrawMetrics().recordMetrics(this); | 611 occlusionTracker.overdrawMetrics().recordMetrics(this); |
| 614 | 612 |
| 615 removeRenderPasses(CullRenderPassesWithNoQuads(), frame); | 613 removeRenderPasses(CullRenderPassesWithNoQuads(), frame); |
| 616 m_renderer->decideRenderPassAllocationsForFrame(frame.renderPasses); | 614 m_renderer->decideRenderPassAllocationsForFrame(frame.renderPasses); |
| 617 removeRenderPasses(CullRenderPassesWithCachedTextures(*m_renderer), frame); | 615 removeRenderPasses(CullRenderPassesWithCachedTextures(*m_renderer), frame); |
| 618 | 616 |
| 619 return drawFrame; | 617 return drawFrame; |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 981 | 979 |
| 982 if (layerImpl->scrollable()) | 980 if (layerImpl->scrollable()) |
| 983 return layerImpl; | 981 return layerImpl; |
| 984 | 982 |
| 985 if (layerImpl->drawsContent() && layerImpl->parent() && layerImpl->parent()-
>scrollable()) | 983 if (layerImpl->drawsContent() && layerImpl->parent() && layerImpl->parent()-
>scrollable()) |
| 986 return layerImpl->parent(); | 984 return layerImpl->parent(); |
| 987 | 985 |
| 988 return 0; | 986 return 0; |
| 989 } | 987 } |
| 990 | 988 |
| 991 void LayerTreeHostImpl::setRootLayer(scoped_ptr<LayerImpl> layer) | |
| 992 { | |
| 993 m_activeTree->SetRootLayer(layer.Pass()); | |
| 994 setNeedsUpdateDrawProperties(); | |
| 995 } | |
| 996 | |
| 997 void LayerTreeHostImpl::createPendingTree() | 989 void LayerTreeHostImpl::createPendingTree() |
| 998 { | 990 { |
| 999 CHECK(!m_pendingTree); | 991 CHECK(!m_pendingTree); |
| 1000 m_pendingTree = LayerTreeImpl::create(this); | 992 m_pendingTree = LayerTreeImpl::create(this); |
| 1001 m_client->onCanDrawStateChanged(canDraw()); | 993 m_client->onCanDrawStateChanged(canDraw()); |
| 1002 m_client->onHasPendingTreeStateChanged(pendingTree()); | 994 m_client->onHasPendingTreeStateChanged(pendingTree()); |
| 1003 } | 995 } |
| 1004 | 996 |
| 1005 void LayerTreeHostImpl::activatePendingTreeIfNeeded() | 997 void LayerTreeHostImpl::activatePendingTreeIfNeeded() |
| 1006 { | 998 { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1027 void LayerTreeHostImpl::activatePendingTree() | 1019 void LayerTreeHostImpl::activatePendingTree() |
| 1028 { | 1020 { |
| 1029 CHECK(m_pendingTree); | 1021 CHECK(m_pendingTree); |
| 1030 m_activeTree.swap(m_pendingTree); | 1022 m_activeTree.swap(m_pendingTree); |
| 1031 // TODO(enne): consider recycling this tree to prevent layer churn | 1023 // TODO(enne): consider recycling this tree to prevent layer churn |
| 1032 m_pendingTree.reset(); | 1024 m_pendingTree.reset(); |
| 1033 m_client->onCanDrawStateChanged(canDraw()); | 1025 m_client->onCanDrawStateChanged(canDraw()); |
| 1034 m_client->onHasPendingTreeStateChanged(pendingTree()); | 1026 m_client->onHasPendingTreeStateChanged(pendingTree()); |
| 1035 } | 1027 } |
| 1036 | 1028 |
| 1037 scoped_ptr<LayerImpl> LayerTreeHostImpl::detachLayerTree() | |
| 1038 { | |
| 1039 scoped_ptr<LayerImpl> layer = m_activeTree->DetachLayerTree(); | |
| 1040 return layer.Pass(); | |
| 1041 } | |
| 1042 | |
| 1043 void LayerTreeHostImpl::setVisible(bool visible) | 1029 void LayerTreeHostImpl::setVisible(bool visible) |
| 1044 { | 1030 { |
| 1045 DCHECK(m_proxy->isImplThread()); | 1031 DCHECK(m_proxy->isImplThread()); |
| 1046 | 1032 |
| 1047 if (m_visible == visible) | 1033 if (m_visible == visible) |
| 1048 return; | 1034 return; |
| 1049 m_visible = visible; | 1035 m_visible = visible; |
| 1050 didVisibilityChange(this, m_visible); | 1036 didVisibilityChange(this, m_visible); |
| 1051 enforceManagedMemoryPolicy(m_managedMemoryPolicy); | 1037 enforceManagedMemoryPolicy(m_managedMemoryPolicy); |
| 1052 | 1038 |
| (...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1706 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); | 1692 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); |
| 1707 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1693 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
| 1708 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1694 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
| 1709 m_client->setNeedsRedrawOnImplThread(); | 1695 m_client->setNeedsRedrawOnImplThread(); |
| 1710 | 1696 |
| 1711 for (size_t i = 0; i < layer->children().size(); ++i) | 1697 for (size_t i = 0; i < layer->children().size(); ++i) |
| 1712 animateScrollbarsRecursive(layer->children()[i], time); | 1698 animateScrollbarsRecursive(layer->children()[i], time); |
| 1713 } | 1699 } |
| 1714 | 1700 |
| 1715 } // namespace cc | 1701 } // namespace cc |
| OLD | NEW |