| 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 GraphicsContext* LayerTreeHostImpl::context() const | 282 OutputSurface* LayerTreeHostImpl::outputSurface() const |
| 283 { | 283 { |
| 284 return m_context.get(); | 284 return m_outputSurface.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::didLoseContext() | 894 void LayerTreeHostImpl::didLoseOutputSurface() |
| 895 { | 895 { |
| 896 m_client->didLoseContextOnImplThread(); | 896 m_client->didLoseOutputSurfaceOnImplThread(); |
| 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<GraphicsContext> context) | 986 bool LayerTreeHostImpl::initializeRenderer(scoped_ptr<OutputSurface> outputSurfa
ce) |
| 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 sendDidLoseContextRecursive(m_rootLayerImpl.get()); | 993 sendDidLoseOutputSurfaceRecursive(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_context.reset(); | 999 m_outputSurface.reset(); |
| 1000 | 1000 |
| 1001 if (!context->bindToClient(this)) | 1001 if (!outputSurface->bindToClient(this)) |
| 1002 return false; | 1002 return false; |
| 1003 | 1003 |
| 1004 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(con
text.get()); | 1004 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out
putSurface.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 (context->context3D()) | 1011 if (outputSurface->context3D()) |
| 1012 m_renderer = GLRenderer::create(this, resourceProvider.get()); | 1012 m_renderer = GLRenderer::create(this, resourceProvider.get()); |
| 1013 else if (context->softwareDevice()) | 1013 else if (outputSurface->softwareDevice()) |
| 1014 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), cont
ext->softwareDevice()); | 1014 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp
utSurface->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_context = context.Pass(); | 1019 m_outputSurface = outputSurface.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::sendDidLoseContextRecursive(LayerImpl* current) | 1559 void LayerTreeHostImpl::sendDidLoseOutputSurfaceRecursive(LayerImpl* current) |
| 1560 { | 1560 { |
| 1561 DCHECK(current); | 1561 DCHECK(current); |
| 1562 current->didLoseContext(); | 1562 current->didLoseOutputSurface(); |
| 1563 if (current->maskLayer()) | 1563 if (current->maskLayer()) |
| 1564 sendDidLoseContextRecursive(current->maskLayer()); | 1564 sendDidLoseOutputSurfaceRecursive(current->maskLayer()); |
| 1565 if (current->replicaLayer()) | 1565 if (current->replicaLayer()) |
| 1566 sendDidLoseContextRecursive(current->replicaLayer()); | 1566 sendDidLoseOutputSurfaceRecursive(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 sendDidLoseContextRecursive(current->children()[i]); | 1568 sendDidLoseOutputSurfaceRecursive(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 |