| 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 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 861 | 862 |
| 862 // TODO(piman): We may need to do some validation on this ack before process
ing it. | 863 // TODO(piman): We may need to do some validation on this ack before process
ing it. |
| 863 m_renderer->receiveCompositorFrameAck(ack); | 864 m_renderer->receiveCompositorFrameAck(ack); |
| 864 } | 865 } |
| 865 | 866 |
| 866 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*) | 867 void LayerTreeHostImpl::OnCanDrawStateChangedForTree(LayerTreeImpl*) |
| 867 { | 868 { |
| 868 m_client->onCanDrawStateChanged(canDraw()); | 869 m_client->onCanDrawStateChanged(canDraw()); |
| 869 } | 870 } |
| 870 | 871 |
| 872 CompositorFrameMetadata LayerTreeHostImpl::makeCompositorFrameMetadata() const |
| 873 { |
| 874 if (!rootScrollLayer()) |
| 875 return CompositorFrameMetadata(); |
| 876 |
| 877 CompositorFrameMetadata metadata; |
| 878 metadata.root_scroll_offset = rootScrollLayer()->scrollOffset() + rootScroll
Layer()->scrollDelta(); |
| 879 metadata.page_scale_factor = m_pinchZoomViewport.totalPageScaleFactor(); |
| 880 metadata.viewport_size = m_pinchZoomViewport.bounds().size(); |
| 881 metadata.root_layer_size = rootScrollLayer()->bounds(); |
| 882 metadata.min_page_scale_factor = m_pinchZoomViewport.minPageScaleFactor(); |
| 883 metadata.max_page_scale_factor = m_pinchZoomViewport.maxPageScaleFactor(); |
| 884 if (!m_settings.pageScalePinchZoomEnabled) { |
| 885 metadata.root_scroll_offset.Scale(1 / m_pinchZoomViewport.pageScaleFacto
r()); |
| 886 metadata.root_layer_size.Scale(1 / m_pinchZoomViewport.pageScaleFactor()
); |
| 887 } |
| 888 |
| 889 return metadata; |
| 890 } |
| 891 |
| 871 void LayerTreeHostImpl::drawLayers(FrameData& frame) | 892 void LayerTreeHostImpl::drawLayers(FrameData& frame) |
| 872 { | 893 { |
| 873 TRACE_EVENT0("cc", "LayerTreeHostImpl::drawLayers"); | 894 TRACE_EVENT0("cc", "LayerTreeHostImpl::drawLayers"); |
| 874 DCHECK(canDraw()); | 895 DCHECK(canDraw()); |
| 875 DCHECK(!frame.renderPasses.empty()); | 896 DCHECK(!frame.renderPasses.empty()); |
| 876 | 897 |
| 877 // FIXME: use the frame begin time from the overall compositor scheduler. | 898 // FIXME: use the frame begin time from the overall compositor scheduler. |
| 878 // This value is currently inaccessible because it is up in Chromium's | 899 // This value is currently inaccessible because it is up in Chromium's |
| 879 // RenderWidget. | 900 // RenderWidget. |
| 880 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now()); | 901 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now()); |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1044 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out
putSurface.get()); | 1065 scoped_ptr<ResourceProvider> resourceProvider = ResourceProvider::create(out
putSurface.get()); |
| 1045 if (!resourceProvider) | 1066 if (!resourceProvider) |
| 1046 return false; | 1067 return false; |
| 1047 | 1068 |
| 1048 if (m_settings.implSidePainting) | 1069 if (m_settings.implSidePainting) |
| 1049 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin
gs.numRasterThreads)); | 1070 m_tileManager.reset(new TileManager(this, resourceProvider.get(), m_settin
gs.numRasterThreads)); |
| 1050 | 1071 |
| 1051 if (outputSurface->Capabilities().has_parent_compositor) | 1072 if (outputSurface->Capabilities().has_parent_compositor) |
| 1052 m_renderer = DelegatingRenderer::Create(this, resourceProvider.get()); | 1073 m_renderer = DelegatingRenderer::Create(this, resourceProvider.get()); |
| 1053 else if (outputSurface->Context3D()) | 1074 else if (outputSurface->Context3D()) |
| 1054 m_renderer = GLRenderer::create(this, resourceProvider.get()); | 1075 m_renderer = GLRenderer::create(this, outputSurface.get(), resourceProvi
der.get()); |
| 1055 else if (outputSurface->SoftwareDevice()) | 1076 else if (outputSurface->SoftwareDevice()) |
| 1056 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp
utSurface->SoftwareDevice()); | 1077 m_renderer = SoftwareRenderer::create(this, resourceProvider.get(), outp
utSurface->SoftwareDevice()); |
| 1057 if (!m_renderer) | 1078 if (!m_renderer) |
| 1058 return false; | 1079 return false; |
| 1059 | 1080 |
| 1060 m_resourceProvider = resourceProvider.Pass(); | 1081 m_resourceProvider = resourceProvider.Pass(); |
| 1061 m_outputSurface = outputSurface.Pass(); | 1082 m_outputSurface = outputSurface.Pass(); |
| 1062 | 1083 |
| 1063 if (!m_visible) | 1084 if (!m_visible) |
| 1064 m_renderer->setVisible(m_visible); | 1085 m_renderer->setVisible(m_visible); |
| (...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1723 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); | 1744 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); |
| 1724 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1745 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
| 1725 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1746 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
| 1726 m_client->setNeedsRedrawOnImplThread(); | 1747 m_client->setNeedsRedrawOnImplThread(); |
| 1727 | 1748 |
| 1728 for (size_t i = 0; i < layer->children().size(); ++i) | 1749 for (size_t i = 0; i < layer->children().size(); ++i) |
| 1729 animateScrollbarsRecursive(layer->children()[i], time); | 1750 animateScrollbarsRecursive(layer->children()[i], time); |
| 1730 } | 1751 } |
| 1731 | 1752 |
| 1732 } // namespace cc | 1753 } // namespace cc |
| OLD | NEW |