| 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" |
| 11 #include "base/json/json_writer.h" | 11 #include "base/json/json_writer.h" |
| 12 #include "cc/append_quads_data.h" | 12 #include "cc/append_quads_data.h" |
| 13 #include "cc/compositor_frame_metadata.h" |
| 13 #include "cc/damage_tracker.h" | 14 #include "cc/damage_tracker.h" |
| 14 #include "cc/debug_rect_history.h" | 15 #include "cc/debug_rect_history.h" |
| 15 #include "cc/delay_based_time_source.h" | 16 #include "cc/delay_based_time_source.h" |
| 16 #include "cc/delegating_renderer.h" | 17 #include "cc/delegating_renderer.h" |
| 17 #include "cc/frame_rate_counter.h" | 18 #include "cc/frame_rate_counter.h" |
| 18 #include "cc/gl_renderer.h" | 19 #include "cc/gl_renderer.h" |
| 19 #include "cc/heads_up_display_layer_impl.h" | 20 #include "cc/heads_up_display_layer_impl.h" |
| 20 #include "cc/layer_iterator.h" | 21 #include "cc/layer_iterator.h" |
| 21 #include "cc/layer_tree_host.h" | 22 #include "cc/layer_tree_host.h" |
| 22 #include "cc/layer_tree_host_common.h" | 23 #include "cc/layer_tree_host_common.h" |
| (...skipping 851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 874 | 875 |
| 875 // TODO(piman): We may need to do some validation on this ack before process
ing it. | 876 // TODO(piman): We may need to do some validation on this ack before process
ing it. |
| 876 m_renderer->receiveCompositorFrameAck(ack); | 877 m_renderer->receiveCompositorFrameAck(ack); |
| 877 } | 878 } |
| 878 | 879 |
| 879 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*) | 880 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*) |
| 880 { | 881 { |
| 881 m_client->onCanDrawStateChanged(canDraw()); | 882 m_client->onCanDrawStateChanged(canDraw()); |
| 882 } | 883 } |
| 883 | 884 |
| 885 CompositorFrameMetadata LayerTreeHostImpl::makeCompositorFrameMetadata() const |
| 886 { |
| 887 if (!rootScrollLayer()) |
| 888 return CompositorFrameMetadata(); |
| 889 |
| 890 CompositorFrameMetadata metadata; |
| 891 metadata.root_scroll_offset = rootScrollLayer()->scrollOffset() + rootScroll
Layer()->scrollDelta(); |
| 892 metadata.page_scale_factor = m_pinchZoomViewport.totalPageScaleFactor(); |
| 893 metadata.viewport_size = m_pinchZoomViewport.bounds().size(); |
| 894 metadata.root_layer_size = rootScrollLayer()->bounds(); |
| 895 metadata.min_page_scale_factor = m_pinchZoomViewport.minPageScaleFactor(); |
| 896 metadata.max_page_scale_factor = m_pinchZoomViewport.maxPageScaleFactor(); |
| 897 if (!m_settings.pageScalePinchZoomEnabled) { |
| 898 metadata.root_scroll_offset.Scale(1 / m_pinchZoomViewport.pageScaleFacto
r()); |
| 899 metadata.root_layer_size.Scale(1 / m_pinchZoomViewport.pageScaleFactor()
); |
| 900 } |
| 901 |
| 902 return metadata; |
| 903 } |
| 904 |
| 884 void LayerTreeHostImpl::drawLayers(FrameData& frame) | 905 void LayerTreeHostImpl::drawLayers(FrameData& frame) |
| 885 { | 906 { |
| 886 TRACE_EVENT0("cc", "LayerTreeHostImpl::drawLayers"); | 907 TRACE_EVENT0("cc", "LayerTreeHostImpl::drawLayers"); |
| 887 DCHECK(canDraw()); | 908 DCHECK(canDraw()); |
| 888 DCHECK(!frame.renderPasses.empty()); | 909 DCHECK(!frame.renderPasses.empty()); |
| 889 | 910 |
| 890 // FIXME: use the frame begin time from the overall compositor scheduler. | 911 // FIXME: use the frame begin time from the overall compositor scheduler. |
| 891 // This value is currently inaccessible because it is up in Chromium's | 912 // This value is currently inaccessible because it is up in Chromium's |
| 892 // RenderWidget. | 913 // RenderWidget. |
| 893 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now()); | 914 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now()); |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1057 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out
putSurface.get()); | 1078 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out
putSurface.get()); |
| 1058 if (!resourceProvider) | 1079 if (!resourceProvider) |
| 1059 return false; | 1080 return false; |
| 1060 | 1081 |
| 1061 if (m_settings.implSidePainting) | 1082 if (m_settings.implSidePainting) |
| 1062 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin
gs.numRasterThreads)); | 1083 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin
gs.numRasterThreads)); |
| 1063 | 1084 |
| 1064 if (outputSurface->Capabilities().has_parent_compositor) | 1085 if (outputSurface->Capabilities().has_parent_compositor) |
| 1065 m_renderer = DelegatingRenderer::Create(this, resourceProvider.get()); | 1086 m_renderer = DelegatingRenderer::Create(this, resourceProvider.get()); |
| 1066 else if (outputSurface->Context3D()) | 1087 else if (outputSurface->Context3D()) |
| 1067 m_renderer = GLRenderer::create(this, resourceProvider.get()); | 1088 m_renderer = GLRenderer::create(this, outputSurface.get(), resourceProvi
der.get()); |
| 1068 else if (outputSurface->SoftwareDevice()) | 1089 else if (outputSurface->SoftwareDevice()) |
| 1069 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp
utSurface->SoftwareDevice()); | 1090 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp
utSurface->SoftwareDevice()); |
| 1070 if (!m_renderer) | 1091 if (!m_renderer) |
| 1071 return false; | 1092 return false; |
| 1072 | 1093 |
| 1073 m_resourceProvider = resourceProvider.Pass(); | 1094 m_resourceProvider = resourceProvider.Pass(); |
| 1074 m_outputSurface = outputSurface.Pass(); | 1095 m_outputSurface = outputSurface.Pass(); |
| 1075 | 1096 |
| 1076 if (!m_visible) | 1097 if (!m_visible) |
| 1077 m_renderer->setVisible(m_visible); | 1098 m_renderer->setVisible(m_visible); |
| (...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1736 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); | 1757 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); |
| 1737 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1758 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
| 1738 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1759 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
| 1739 m_client->setNeedsRedrawOnImplThread(); | 1760 m_client->setNeedsRedrawOnImplThread(); |
| 1740 | 1761 |
| 1741 for (size_t i = 0; i < layer->children().size(); ++i) | 1762 for (size_t i = 0; i < layer->children().size(); ++i) |
| 1742 animateScrollbarsRecursive(layer->children()[i], time); | 1763 animateScrollbarsRecursive(layer->children()[i], time); |
| 1743 } | 1764 } |
| 1744 | 1765 |
| 1745 } // namespace cc | 1766 } // namespace cc |
| OLD | NEW |