| 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/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 #include "cc/proto/gfx_conversions.h" | 44 #include "cc/proto/gfx_conversions.h" |
| 45 #include "cc/proto/layer_tree_host.pb.h" | 45 #include "cc/proto/layer_tree_host.pb.h" |
| 46 #include "cc/resources/ui_resource_request.h" | 46 #include "cc/resources/ui_resource_request.h" |
| 47 #include "cc/scheduler/begin_frame_source.h" | 47 #include "cc/scheduler/begin_frame_source.h" |
| 48 #include "cc/trees/draw_property_utils.h" | 48 #include "cc/trees/draw_property_utils.h" |
| 49 #include "cc/trees/layer_tree_host_client.h" | 49 #include "cc/trees/layer_tree_host_client.h" |
| 50 #include "cc/trees/layer_tree_host_common.h" | 50 #include "cc/trees/layer_tree_host_common.h" |
| 51 #include "cc/trees/layer_tree_host_impl.h" | 51 #include "cc/trees/layer_tree_host_impl.h" |
| 52 #include "cc/trees/layer_tree_impl.h" | 52 #include "cc/trees/layer_tree_impl.h" |
| 53 #include "cc/trees/proxy_main.h" | 53 #include "cc/trees/proxy_main.h" |
| 54 #include "cc/trees/remote_channel_impl.h" |
| 54 #include "cc/trees/single_thread_proxy.h" | 55 #include "cc/trees/single_thread_proxy.h" |
| 55 #include "cc/trees/tree_synchronizer.h" | 56 #include "cc/trees/tree_synchronizer.h" |
| 56 #include "ui/gfx/geometry/size_conversions.h" | 57 #include "ui/gfx/geometry/size_conversions.h" |
| 57 #include "ui/gfx/geometry/vector2d_conversions.h" | 58 #include "ui/gfx/geometry/vector2d_conversions.h" |
| 58 | 59 |
| 59 namespace { | 60 namespace { |
| 60 static base::StaticAtomicSequenceNumber s_layer_tree_host_sequence_number; | 61 static base::StaticAtomicSequenceNumber s_layer_tree_host_sequence_number; |
| 61 } | 62 } |
| 62 | 63 |
| 63 namespace cc { | 64 namespace cc { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 89 LayerTreeHost::InitParams::~InitParams() { | 90 LayerTreeHost::InitParams::~InitParams() { |
| 90 } | 91 } |
| 91 | 92 |
| 92 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateThreaded( | 93 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateThreaded( |
| 93 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, | 94 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
| 94 InitParams* params) { | 95 InitParams* params) { |
| 95 DCHECK(params->main_task_runner.get()); | 96 DCHECK(params->main_task_runner.get()); |
| 96 DCHECK(impl_task_runner.get()); | 97 DCHECK(impl_task_runner.get()); |
| 97 DCHECK(params->settings); | 98 DCHECK(params->settings); |
| 98 scoped_ptr<LayerTreeHost> layer_tree_host( | 99 scoped_ptr<LayerTreeHost> layer_tree_host( |
| 99 new LayerTreeHost(params, CompositorMode::Threaded)); | 100 new LayerTreeHost(params, CompositorMode::THREADED)); |
| 100 layer_tree_host->InitializeThreaded( | 101 layer_tree_host->InitializeThreaded( |
| 101 params->main_task_runner, impl_task_runner, | 102 params->main_task_runner, impl_task_runner, |
| 102 std::move(params->external_begin_frame_source)); | 103 std::move(params->external_begin_frame_source)); |
| 103 return layer_tree_host; | 104 return layer_tree_host; |
| 104 } | 105 } |
| 105 | 106 |
| 106 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateSingleThreaded( | 107 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateSingleThreaded( |
| 107 LayerTreeHostSingleThreadClient* single_thread_client, | 108 LayerTreeHostSingleThreadClient* single_thread_client, |
| 108 InitParams* params) { | 109 InitParams* params) { |
| 109 DCHECK(params->settings); | 110 DCHECK(params->settings); |
| 110 scoped_ptr<LayerTreeHost> layer_tree_host( | 111 scoped_ptr<LayerTreeHost> layer_tree_host( |
| 111 new LayerTreeHost(params, CompositorMode::SingleThreaded)); | 112 new LayerTreeHost(params, CompositorMode::SINGLE_THREADED)); |
| 112 layer_tree_host->InitializeSingleThreaded( | 113 layer_tree_host->InitializeSingleThreaded( |
| 113 single_thread_client, params->main_task_runner, | 114 single_thread_client, params->main_task_runner, |
| 114 std::move(params->external_begin_frame_source)); | 115 std::move(params->external_begin_frame_source)); |
| 115 return layer_tree_host; | 116 return layer_tree_host; |
| 116 } | 117 } |
| 117 | 118 |
| 119 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateRemoteServer( |
| 120 RemoteProtoChannel* remote_proto_channel, |
| 121 InitParams* params) { |
| 122 DCHECK(params->main_task_runner.get()); |
| 123 DCHECK(params->settings); |
| 124 DCHECK(remote_proto_channel); |
| 125 |
| 126 // Using an external begin frame source is not supported on the server in |
| 127 // remote mode. |
| 128 DCHECK(!params->settings->use_external_begin_frame_source); |
| 129 DCHECK(!params->external_begin_frame_source); |
| 130 |
| 131 scoped_ptr<LayerTreeHost> layer_tree_host( |
| 132 new LayerTreeHost(params, CompositorMode::REMOTE)); |
| 133 layer_tree_host->InitializeRemoteServer(remote_proto_channel, |
| 134 params->main_task_runner); |
| 135 return layer_tree_host; |
| 136 } |
| 137 |
| 138 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateRemoteClient( |
| 139 RemoteProtoChannel* remote_proto_channel, |
| 140 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
| 141 InitParams* params) { |
| 142 DCHECK(params->main_task_runner.get()); |
| 143 DCHECK(params->settings); |
| 144 DCHECK(remote_proto_channel); |
| 145 |
| 146 // Using an external begin frame source is not supported in remote mode. |
| 147 // TODO(khushalsagar): Add support for providing an external begin frame |
| 148 // source on the client LayerTreeHost. crbug/576962 |
| 149 DCHECK(!params->settings->use_external_begin_frame_source); |
| 150 DCHECK(!params->external_begin_frame_source); |
| 151 |
| 152 scoped_ptr<LayerTreeHost> layer_tree_host( |
| 153 new LayerTreeHost(params, CompositorMode::REMOTE)); |
| 154 layer_tree_host->InitializeRemoteClient( |
| 155 remote_proto_channel, params->main_task_runner, impl_task_runner); |
| 156 return layer_tree_host; |
| 157 } |
| 158 |
| 118 LayerTreeHost::LayerTreeHost(InitParams* params, CompositorMode mode) | 159 LayerTreeHost::LayerTreeHost(InitParams* params, CompositorMode mode) |
| 119 : micro_benchmark_controller_(this), | 160 : micro_benchmark_controller_(this), |
| 120 next_ui_resource_id_(1), | 161 next_ui_resource_id_(1), |
| 121 compositor_mode_(mode), | 162 compositor_mode_(mode), |
| 122 needs_full_tree_sync_(true), | 163 needs_full_tree_sync_(true), |
| 123 needs_meta_info_recomputation_(true), | 164 needs_meta_info_recomputation_(true), |
| 124 client_(params->client), | 165 client_(params->client), |
| 125 source_frame_number_(0), | 166 source_frame_number_(0), |
| 126 meta_information_sequence_number_(1), | 167 meta_information_sequence_number_(1), |
| 127 rendering_stats_instrumentation_(RenderingStatsInstrumentation::Create()), | 168 rendering_stats_instrumentation_(RenderingStatsInstrumentation::Create()), |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 void LayerTreeHost::InitializeSingleThreaded( | 222 void LayerTreeHost::InitializeSingleThreaded( |
| 182 LayerTreeHostSingleThreadClient* single_thread_client, | 223 LayerTreeHostSingleThreadClient* single_thread_client, |
| 183 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 224 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
| 184 scoped_ptr<BeginFrameSource> external_begin_frame_source) { | 225 scoped_ptr<BeginFrameSource> external_begin_frame_source) { |
| 185 task_runner_provider_ = TaskRunnerProvider::Create(main_task_runner, nullptr); | 226 task_runner_provider_ = TaskRunnerProvider::Create(main_task_runner, nullptr); |
| 186 InitializeProxy(SingleThreadProxy::Create(this, single_thread_client, | 227 InitializeProxy(SingleThreadProxy::Create(this, single_thread_client, |
| 187 task_runner_provider_.get()), | 228 task_runner_provider_.get()), |
| 188 std::move(external_begin_frame_source)); | 229 std::move(external_begin_frame_source)); |
| 189 } | 230 } |
| 190 | 231 |
| 232 void LayerTreeHost::InitializeRemoteServer( |
| 233 RemoteProtoChannel* remote_proto_channel, |
| 234 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner) { |
| 235 task_runner_provider_ = TaskRunnerProvider::Create(main_task_runner, nullptr); |
| 236 InitializeProxy(ProxyMain::CreateRemote(remote_proto_channel, this, |
| 237 task_runner_provider_.get()), |
| 238 nullptr); |
| 239 } |
| 240 |
| 241 void LayerTreeHost::InitializeRemoteClient( |
| 242 RemoteProtoChannel* remote_proto_channel, |
| 243 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
| 244 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { |
| 245 task_runner_provider_ = |
| 246 TaskRunnerProvider::Create(main_task_runner, impl_task_runner); |
| 247 |
| 248 // For the remote mode, the RemoteChannelImpl implements the Proxy, which is |
| 249 // owned by the LayerTreeHost. The RemoteChannelImpl pipes requests which need |
| 250 // to handled locally, for instance the Output Surface creation to the |
| 251 // LayerTreeHost on the client, while the other requests are sent to the |
| 252 // RemoteChannelMain on the server which directs them to ProxyMain and the |
| 253 // remote server LayerTreeHost. |
| 254 InitializeProxy(RemoteChannelImpl::Create(this, remote_proto_channel, |
| 255 task_runner_provider_.get()), |
| 256 nullptr); |
| 257 } |
| 258 |
| 191 void LayerTreeHost::InitializeForTesting( | 259 void LayerTreeHost::InitializeForTesting( |
| 192 scoped_ptr<TaskRunnerProvider> task_runner_provider, | 260 scoped_ptr<TaskRunnerProvider> task_runner_provider, |
| 193 scoped_ptr<Proxy> proxy_for_testing, | 261 scoped_ptr<Proxy> proxy_for_testing, |
| 194 scoped_ptr<BeginFrameSource> external_begin_frame_source) { | 262 scoped_ptr<BeginFrameSource> external_begin_frame_source) { |
| 195 task_runner_provider_ = std::move(task_runner_provider); | 263 task_runner_provider_ = std::move(task_runner_provider); |
| 196 InitializeProxy(std::move(proxy_for_testing), | 264 InitializeProxy(std::move(proxy_for_testing), |
| 197 std::move(external_begin_frame_source)); | 265 std::move(external_begin_frame_source)); |
| 198 } | 266 } |
| 199 | 267 |
| 200 void LayerTreeHost::SetTaskRunnerProviderForTesting( | 268 void LayerTreeHost::SetTaskRunnerProviderForTesting( |
| 201 scoped_ptr<TaskRunnerProvider> task_runner_provider) { | 269 scoped_ptr<TaskRunnerProvider> task_runner_provider) { |
| 202 DCHECK(!task_runner_provider_); | 270 DCHECK(!task_runner_provider_); |
| 203 task_runner_provider_ = std::move(task_runner_provider); | 271 task_runner_provider_ = std::move(task_runner_provider); |
| 204 } | 272 } |
| 205 | 273 |
| 206 void LayerTreeHost::InitializeProxy( | 274 void LayerTreeHost::InitializeProxy( |
| 207 scoped_ptr<Proxy> proxy, | 275 scoped_ptr<Proxy> proxy, |
| 208 scoped_ptr<BeginFrameSource> external_begin_frame_source) { | 276 scoped_ptr<BeginFrameSource> external_begin_frame_source) { |
| 209 TRACE_EVENT0("cc", "LayerTreeHost::InitializeForReal"); | 277 TRACE_EVENT0("cc", "LayerTreeHost::InitializeForReal"); |
| 278 DCHECK(task_runner_provider_); |
| 210 | 279 |
| 211 proxy_ = std::move(proxy); | 280 proxy_ = std::move(proxy); |
| 212 proxy_->Start(std::move(external_begin_frame_source)); | 281 proxy_->Start(std::move(external_begin_frame_source)); |
| 213 if (settings_.accelerated_animation_enabled) { | 282 if (settings_.accelerated_animation_enabled) { |
| 214 if (animation_host_) | 283 if (animation_host_) |
| 215 animation_host_->SetSupportsScrollAnimations( | 284 animation_host_->SetSupportsScrollAnimations( |
| 216 proxy_->SupportsImplScrolling()); | 285 proxy_->SupportsImplScrolling()); |
| 217 else | 286 else |
| 218 animation_registrar_->set_supports_scroll_animations( | 287 animation_registrar_->set_supports_scroll_animations( |
| 219 proxy_->SupportsImplScrolling()); | 288 proxy_->SupportsImplScrolling()); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 void LayerTreeHost::RequestMainFrameUpdate() { | 346 void LayerTreeHost::RequestMainFrameUpdate() { |
| 278 client_->UpdateLayerTreeHost(); | 347 client_->UpdateLayerTreeHost(); |
| 279 } | 348 } |
| 280 | 349 |
| 281 // This function commits the LayerTreeHost to an impl tree. When modifying | 350 // This function commits the LayerTreeHost to an impl tree. When modifying |
| 282 // this function, keep in mind that the function *runs* on the impl thread! Any | 351 // this function, keep in mind that the function *runs* on the impl thread! Any |
| 283 // code that is logically a main thread operation, e.g. deletion of a Layer, | 352 // code that is logically a main thread operation, e.g. deletion of a Layer, |
| 284 // should be delayed until the LayerTreeHost::CommitComplete, which will run | 353 // should be delayed until the LayerTreeHost::CommitComplete, which will run |
| 285 // after the commit, but on the main thread. | 354 // after the commit, but on the main thread. |
| 286 void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { | 355 void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { |
| 356 DCHECK(!IsRemoteServer()); |
| 287 DCHECK(task_runner_provider_->IsImplThread()); | 357 DCHECK(task_runner_provider_->IsImplThread()); |
| 288 | 358 |
| 289 bool is_new_trace; | 359 bool is_new_trace; |
| 290 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); | 360 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); |
| 291 if (is_new_trace && | 361 if (is_new_trace && |
| 292 frame_viewer_instrumentation::IsTracingLayerTreeSnapshots() && | 362 frame_viewer_instrumentation::IsTracingLayerTreeSnapshots() && |
| 293 root_layer()) { | 363 root_layer()) { |
| 294 LayerTreeHostCommon::CallFunctionForSubtree( | 364 LayerTreeHostCommon::CallFunctionForSubtree( |
| 295 root_layer(), [](Layer* layer) { layer->DidBeginTracing(); }); | 365 root_layer(), [](Layer* layer) { layer->DidBeginTracing(); }); |
| 296 } | 366 } |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 // Note: It is safe to drop all output surface references here as | 533 // Note: It is safe to drop all output surface references here as |
| 464 // LayerTreeHostImpl will not keep a pointer to either the old or | 534 // LayerTreeHostImpl will not keep a pointer to either the old or |
| 465 // new output surface after failing to initialize the new one. | 535 // new output surface after failing to initialize the new one. |
| 466 current_output_surface_ = nullptr; | 536 current_output_surface_ = nullptr; |
| 467 new_output_surface_ = nullptr; | 537 new_output_surface_ = nullptr; |
| 468 client_->DidFailToInitializeOutputSurface(); | 538 client_->DidFailToInitializeOutputSurface(); |
| 469 } | 539 } |
| 470 | 540 |
| 471 scoped_ptr<LayerTreeHostImpl> LayerTreeHost::CreateLayerTreeHostImpl( | 541 scoped_ptr<LayerTreeHostImpl> LayerTreeHost::CreateLayerTreeHostImpl( |
| 472 LayerTreeHostImplClient* client) { | 542 LayerTreeHostImplClient* client) { |
| 543 DCHECK(!IsRemoteServer()); |
| 473 DCHECK(task_runner_provider_->IsImplThread()); | 544 DCHECK(task_runner_provider_->IsImplThread()); |
| 474 scoped_ptr<LayerTreeHostImpl> host_impl = LayerTreeHostImpl::Create( | 545 scoped_ptr<LayerTreeHostImpl> host_impl = LayerTreeHostImpl::Create( |
| 475 settings_, client, task_runner_provider_.get(), | 546 settings_, client, task_runner_provider_.get(), |
| 476 rendering_stats_instrumentation_.get(), shared_bitmap_manager_, | 547 rendering_stats_instrumentation_.get(), shared_bitmap_manager_, |
| 477 gpu_memory_buffer_manager_, task_graph_runner_, id_); | 548 gpu_memory_buffer_manager_, task_graph_runner_, id_); |
| 478 host_impl->SetHasGpuRasterizationTrigger(has_gpu_rasterization_trigger_); | 549 host_impl->SetHasGpuRasterizationTrigger(has_gpu_rasterization_trigger_); |
| 479 host_impl->SetContentIsSuitableForGpuRasterization( | 550 host_impl->SetContentIsSuitableForGpuRasterization( |
| 480 content_is_suitable_for_gpu_rasterization_); | 551 content_is_suitable_for_gpu_rasterization_); |
| 481 shared_bitmap_manager_ = NULL; | 552 shared_bitmap_manager_ = NULL; |
| 482 gpu_memory_buffer_manager_ = NULL; | 553 gpu_memory_buffer_manager_ = NULL; |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 931 if (painted_device_scale_factor == painted_device_scale_factor_) | 1002 if (painted_device_scale_factor == painted_device_scale_factor_) |
| 932 return; | 1003 return; |
| 933 painted_device_scale_factor_ = painted_device_scale_factor; | 1004 painted_device_scale_factor_ = painted_device_scale_factor; |
| 934 | 1005 |
| 935 SetNeedsCommit(); | 1006 SetNeedsCommit(); |
| 936 } | 1007 } |
| 937 | 1008 |
| 938 void LayerTreeHost::UpdateTopControlsState(TopControlsState constraints, | 1009 void LayerTreeHost::UpdateTopControlsState(TopControlsState constraints, |
| 939 TopControlsState current, | 1010 TopControlsState current, |
| 940 bool animate) { | 1011 bool animate) { |
| 941 // Top controls are only used in threaded mode. | 1012 // Top controls are only used in threaded or remote mode. |
| 942 DCHECK(IsThreaded()); | 1013 DCHECK(IsThreaded() || IsRemoteServer()); |
| 943 proxy_->UpdateTopControlsState(constraints, current, animate); | 1014 proxy_->UpdateTopControlsState(constraints, current, animate); |
| 944 } | 1015 } |
| 945 | 1016 |
| 946 void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { | 1017 void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { |
| 947 if (!settings_.accelerated_animation_enabled) | 1018 if (!settings_.accelerated_animation_enabled) |
| 948 return; | 1019 return; |
| 949 | 1020 |
| 950 scoped_ptr<AnimationEvents> events; | 1021 scoped_ptr<AnimationEvents> events; |
| 951 if (animation_host_) { | 1022 if (animation_host_) { |
| 952 events = animation_host_->CreateEvents(); | 1023 events = animation_host_->CreateEvents(); |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1286 return animation_host_ ? animation_host_->HasAnyAnimation(layer->id()) | 1357 return animation_host_ ? animation_host_->HasAnyAnimation(layer->id()) |
| 1287 : false; | 1358 : false; |
| 1288 } | 1359 } |
| 1289 | 1360 |
| 1290 bool LayerTreeHost::HasActiveAnimation(const Layer* layer) const { | 1361 bool LayerTreeHost::HasActiveAnimation(const Layer* layer) const { |
| 1291 return animation_host_ ? animation_host_->HasActiveAnimation(layer->id()) | 1362 return animation_host_ ? animation_host_->HasActiveAnimation(layer->id()) |
| 1292 : false; | 1363 : false; |
| 1293 } | 1364 } |
| 1294 | 1365 |
| 1295 bool LayerTreeHost::IsSingleThreaded() const { | 1366 bool LayerTreeHost::IsSingleThreaded() const { |
| 1296 DCHECK(compositor_mode_ != CompositorMode::SingleThreaded || | 1367 DCHECK(compositor_mode_ != CompositorMode::SINGLE_THREADED || |
| 1297 !task_runner_provider_->HasImplThread()); | 1368 !task_runner_provider_->HasImplThread()); |
| 1298 return compositor_mode_ == CompositorMode::SingleThreaded; | 1369 return compositor_mode_ == CompositorMode::SINGLE_THREADED; |
| 1299 } | 1370 } |
| 1300 | 1371 |
| 1301 bool LayerTreeHost::IsThreaded() const { | 1372 bool LayerTreeHost::IsThreaded() const { |
| 1302 DCHECK(compositor_mode_ != CompositorMode::Threaded || | 1373 DCHECK(compositor_mode_ != CompositorMode::THREADED || |
| 1303 task_runner_provider_->HasImplThread()); | 1374 task_runner_provider_->HasImplThread()); |
| 1304 return compositor_mode_ == CompositorMode::Threaded; | 1375 return compositor_mode_ == CompositorMode::THREADED; |
| 1376 } |
| 1377 |
| 1378 bool LayerTreeHost::IsRemoteServer() const { |
| 1379 // The LayerTreeHost on the server does not have an impl task runner. |
| 1380 return compositor_mode_ == CompositorMode::REMOTE && |
| 1381 !task_runner_provider_->HasImplThread(); |
| 1382 } |
| 1383 |
| 1384 bool LayerTreeHost::IsRemoteClient() const { |
| 1385 return compositor_mode_ == CompositorMode::REMOTE && |
| 1386 task_runner_provider_->HasImplThread(); |
| 1305 } | 1387 } |
| 1306 | 1388 |
| 1307 void LayerTreeHost::ToProtobufForCommit(proto::LayerTreeHost* proto) const { | 1389 void LayerTreeHost::ToProtobufForCommit(proto::LayerTreeHost* proto) const { |
| 1308 // Not all fields are serialized, as they are eiher not needed for a commit, | 1390 // Not all fields are serialized, as they are eiher not needed for a commit, |
| 1309 // or implementation isn't ready yet. | 1391 // or implementation isn't ready yet. |
| 1310 // Unsupported items: | 1392 // Unsupported items: |
| 1311 // - animations | 1393 // - animations |
| 1312 // - UI resources | 1394 // - UI resources |
| 1313 // - instrumentation of stats | 1395 // - instrumentation of stats |
| 1314 // - histograms | 1396 // - histograms |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1448 LayerTreeHostCommon::CallFunctionForSubtree( | 1530 LayerTreeHostCommon::CallFunctionForSubtree( |
| 1449 root_layer(), [seq_num](Layer* layer) { | 1531 root_layer(), [seq_num](Layer* layer) { |
| 1450 layer->set_property_tree_sequence_number(seq_num); | 1532 layer->set_property_tree_sequence_number(seq_num); |
| 1451 }); | 1533 }); |
| 1452 | 1534 |
| 1453 surface_id_namespace_ = proto.surface_id_namespace(); | 1535 surface_id_namespace_ = proto.surface_id_namespace(); |
| 1454 next_surface_sequence_ = proto.next_surface_sequence(); | 1536 next_surface_sequence_ = proto.next_surface_sequence(); |
| 1455 } | 1537 } |
| 1456 | 1538 |
| 1457 } // namespace cc | 1539 } // namespace cc |
| OLD | NEW |