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 |