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 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::canDraw no renderer"); | 272 TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::canDraw no renderer"); |
273 return false; | 273 return false; |
274 } | 274 } |
275 if (m_contentsTexturesPurged) { | 275 if (m_contentsTexturesPurged) { |
276 TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::canDraw contents textures
purged"); | 276 TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::canDraw contents textures
purged"); |
277 return false; | 277 return false; |
278 } | 278 } |
279 return true; | 279 return true; |
280 } | 280 } |
281 | 281 |
282 OutputSurface* LayerTreeHostImpl::outputSurface() const | 282 GraphicsContext* LayerTreeHostImpl::context() const |
283 { | 283 { |
284 return m_outputSurface.get(); | 284 return m_context.get(); |
285 } | 285 } |
286 | 286 |
287 void LayerTreeHostImpl::animate(base::TimeTicks monotonicTime, base::Time wallCl
ockTime) | 287 void LayerTreeHostImpl::animate(base::TimeTicks monotonicTime, base::Time wallCl
ockTime) |
288 { | 288 { |
289 animatePageScale(monotonicTime); | 289 animatePageScale(monotonicTime); |
290 animateLayers(monotonicTime, wallClockTime); | 290 animateLayers(monotonicTime, wallClockTime); |
291 animateScrollbars(monotonicTime); | 291 animateScrollbars(monotonicTime); |
292 } | 292 } |
293 | 293 |
294 void LayerTreeHostImpl::manageTiles() | 294 void LayerTreeHostImpl::manageTiles() |
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const | 884 const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const |
885 { | 885 { |
886 return m_deviceViewportSize; | 886 return m_deviceViewportSize; |
887 } | 887 } |
888 | 888 |
889 const LayerTreeSettings& LayerTreeHostImpl::settings() const | 889 const LayerTreeSettings& LayerTreeHostImpl::settings() const |
890 { | 890 { |
891 return m_settings; | 891 return m_settings; |
892 } | 892 } |
893 | 893 |
894 void LayerTreeHostImpl::didLoseOutputSurface() | 894 void LayerTreeHostImpl::didLoseContext() |
895 { | 895 { |
896 m_client->didLoseOutputSurfaceOnImplThread(); | 896 m_client->didLoseContextOnImplThread(); |
897 } | 897 } |
898 | 898 |
899 void LayerTreeHostImpl::onSwapBuffersComplete() | 899 void LayerTreeHostImpl::onSwapBuffersComplete() |
900 { | 900 { |
901 m_client->onSwapBuffersCompleteOnImplThread(); | 901 m_client->onSwapBuffersCompleteOnImplThread(); |
902 } | 902 } |
903 | 903 |
904 void LayerTreeHostImpl::readback(void* pixels, const gfx::Rect& rect) | 904 void LayerTreeHostImpl::readback(void* pixels, const gfx::Rect& rect) |
905 { | 905 { |
906 DCHECK(m_renderer); | 906 DCHECK(m_renderer); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 enforceManagedMemoryPolicy(m_managedMemoryPolicy); | 976 enforceManagedMemoryPolicy(m_managedMemoryPolicy); |
977 | 977 |
978 if (!m_renderer) | 978 if (!m_renderer) |
979 return; | 979 return; |
980 | 980 |
981 m_renderer->setVisible(visible); | 981 m_renderer->setVisible(visible); |
982 | 982 |
983 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers); | 983 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers); |
984 } | 984 } |
985 | 985 |
986 bool LayerTreeHostImpl::initializeRenderer(scoped_ptr<OutputSurface> outputSurfa
ce) | 986 bool LayerTreeHostImpl::initializeRenderer(scoped_ptr<GraphicsContext> context) |
987 { | 987 { |
988 // Since we will create a new resource provider, we cannot continue to use | 988 // Since we will create a new resource provider, we cannot continue to use |
989 // the old resources (i.e. renderSurfaces and texture IDs). Clear them | 989 // the old resources (i.e. renderSurfaces and texture IDs). Clear them |
990 // before we destroy the old resource provider. | 990 // before we destroy the old resource provider. |
991 if (m_rootLayerImpl) { | 991 if (m_rootLayerImpl) { |
992 clearRenderSurfaces(); | 992 clearRenderSurfaces(); |
993 sendDidLoseOutputSurfaceRecursive(m_rootLayerImpl.get()); | 993 sendDidLoseContextRecursive(m_rootLayerImpl.get()); |
994 } | 994 } |
995 // Note: order is important here. | 995 // Note: order is important here. |
996 m_renderer.reset(); | 996 m_renderer.reset(); |
997 m_tileManager.reset(); | 997 m_tileManager.reset(); |
998 m_resourceProvider.reset(); | 998 m_resourceProvider.reset(); |
999 m_outputSurface.reset(); | 999 m_context.reset(); |
1000 | 1000 |
1001 if (!outputSurface->bindToClient(this)) | 1001 if (!context->bindToClient(this)) |
1002 return false; | 1002 return false; |
1003 | 1003 |
1004 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out
putSurface.get()); | 1004 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(con
text.get()); |
1005 if (!resourceProvider) | 1005 if (!resourceProvider) |
1006 return false; | 1006 return false; |
1007 | 1007 |
1008 if (m_settings.implSidePainting) | 1008 if (m_settings.implSidePainting) |
1009 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin
gs.numRasterThreads)); | 1009 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin
gs.numRasterThreads)); |
1010 | 1010 |
1011 if (outputSurface->context3D()) | 1011 if (context->context3D()) |
1012 m_renderer = GLRenderer::create(this, resourceProvider.get()); | 1012 m_renderer = GLRenderer::create(this, resourceProvider.get()); |
1013 else if (outputSurface->softwareDevice()) | 1013 else if (context->softwareDevice()) |
1014 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp
utSurface->softwareDevice()); | 1014 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), cont
ext->softwareDevice()); |
1015 if (!m_renderer) | 1015 if (!m_renderer) |
1016 return false; | 1016 return false; |
1017 | 1017 |
1018 m_resourceProvider = resourceProvider.Pass(); | 1018 m_resourceProvider = resourceProvider.Pass(); |
1019 m_outputSurface = outputSurface.Pass(); | 1019 m_context = context.Pass(); |
1020 | 1020 |
1021 if (!m_visible) | 1021 if (!m_visible) |
1022 m_renderer->setVisible(m_visible); | 1022 m_renderer->setVisible(m_visible); |
1023 | 1023 |
1024 m_client->onCanDrawStateChanged(canDraw()); | 1024 m_client->onCanDrawStateChanged(canDraw()); |
1025 | 1025 |
1026 return true; | 1026 return true; |
1027 } | 1027 } |
1028 | 1028 |
1029 void LayerTreeHostImpl::setContentsTexturesPurged() | 1029 void LayerTreeHostImpl::setContentsTexturesPurged() |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1549 m_client->setNeedsRedrawOnImplThread(); | 1549 m_client->setNeedsRedrawOnImplThread(); |
1550 | 1550 |
1551 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers); | 1551 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers); |
1552 } | 1552 } |
1553 | 1553 |
1554 base::TimeDelta LayerTreeHostImpl::lowFrequencyAnimationInterval() const | 1554 base::TimeDelta LayerTreeHostImpl::lowFrequencyAnimationInterval() const |
1555 { | 1555 { |
1556 return base::TimeDelta::FromSeconds(1); | 1556 return base::TimeDelta::FromSeconds(1); |
1557 } | 1557 } |
1558 | 1558 |
1559 void LayerTreeHostImpl::sendDidLoseOutputSurfaceRecursive(LayerImpl* current) | 1559 void LayerTreeHostImpl::sendDidLoseContextRecursive(LayerImpl* current) |
1560 { | 1560 { |
1561 DCHECK(current); | 1561 DCHECK(current); |
1562 current->didLoseOutputSurface(); | 1562 current->didLoseContext(); |
1563 if (current->maskLayer()) | 1563 if (current->maskLayer()) |
1564 sendDidLoseOutputSurfaceRecursive(current->maskLayer()); | 1564 sendDidLoseContextRecursive(current->maskLayer()); |
1565 if (current->replicaLayer()) | 1565 if (current->replicaLayer()) |
1566 sendDidLoseOutputSurfaceRecursive(current->replicaLayer()); | 1566 sendDidLoseContextRecursive(current->replicaLayer()); |
1567 for (size_t i = 0; i < current->children().size(); ++i) | 1567 for (size_t i = 0; i < current->children().size(); ++i) |
1568 sendDidLoseOutputSurfaceRecursive(current->children()[i]); | 1568 sendDidLoseContextRecursive(current->children()[i]); |
1569 } | 1569 } |
1570 | 1570 |
1571 static void clearRenderSurfacesOnLayerImplRecursive(LayerImpl* current) | 1571 static void clearRenderSurfacesOnLayerImplRecursive(LayerImpl* current) |
1572 { | 1572 { |
1573 DCHECK(current); | 1573 DCHECK(current); |
1574 for (size_t i = 0; i < current->children().size(); ++i) | 1574 for (size_t i = 0; i < current->children().size(); ++i) |
1575 clearRenderSurfacesOnLayerImplRecursive(current->children()[i]); | 1575 clearRenderSurfacesOnLayerImplRecursive(current->children()[i]); |
1576 current->clearRenderSurface(); | 1576 current->clearRenderSurface(); |
1577 } | 1577 } |
1578 | 1578 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1632 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); | 1632 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); |
1633 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1633 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
1634 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1634 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
1635 m_client->setNeedsRedrawOnImplThread(); | 1635 m_client->setNeedsRedrawOnImplThread(); |
1636 | 1636 |
1637 for (size_t i = 0; i < layer->children().size(); ++i) | 1637 for (size_t i = 0; i < layer->children().size(); ++i) |
1638 animateScrollbarsRecursive(layer->children()[i], time); | 1638 animateScrollbarsRecursive(layer->children()[i], time); |
1639 } | 1639 } |
1640 | 1640 |
1641 } // namespace cc | 1641 } // namespace cc |
OLD | NEW |