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 <algorithm> | 7 #include <algorithm> |
8 #include <stack> | 8 #include <stack> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 partial_texture_update_requests_(0), | 125 partial_texture_update_requests_(0), |
126 did_complete_scale_animation_(false), | 126 did_complete_scale_animation_(false), |
127 in_paint_layer_contents_(false), | 127 in_paint_layer_contents_(false), |
128 id_(s_layer_tree_host_sequence_number.GetNext() + 1), | 128 id_(s_layer_tree_host_sequence_number.GetNext() + 1), |
129 next_commit_forces_redraw_(false), | 129 next_commit_forces_redraw_(false), |
130 shared_bitmap_manager_(shared_bitmap_manager), | 130 shared_bitmap_manager_(shared_bitmap_manager), |
131 gpu_memory_buffer_manager_(gpu_memory_buffer_manager), | 131 gpu_memory_buffer_manager_(gpu_memory_buffer_manager), |
132 task_graph_runner_(task_graph_runner), | 132 task_graph_runner_(task_graph_runner), |
133 surface_id_namespace_(0u), | 133 surface_id_namespace_(0u), |
134 next_surface_sequence_(1u) { | 134 next_surface_sequence_(1u) { |
135 if (settings_.accelerated_animation_enabled) | 135 if (settings_.accelerated_animation_enabled && |
| 136 !settings.use_compositor_animation_timelines) |
136 animation_registrar_ = AnimationRegistrar::Create(); | 137 animation_registrar_ = AnimationRegistrar::Create(); |
137 rendering_stats_instrumentation_->set_record_rendering_stats( | 138 rendering_stats_instrumentation_->set_record_rendering_stats( |
138 debug_state_.RecordRenderingStats()); | 139 debug_state_.RecordRenderingStats()); |
139 | 140 |
140 if (settings_.use_compositor_animation_timelines) { | 141 if (settings_.use_compositor_animation_timelines) { |
141 animation_host_ = AnimationHost::Create(false); | 142 animation_host_ = AnimationHost::Create(false); |
142 animation_host_->SetLayerTreeMutatorsClient(this); | 143 animation_host_->SetLayerTreeMutatorsClient(this); |
143 } | 144 } |
144 } | 145 } |
145 | 146 |
(...skipping 21 matching lines...) Expand all Loading... |
167 void LayerTreeHost::InitializeForTesting(scoped_ptr<Proxy> proxy_for_testing) { | 168 void LayerTreeHost::InitializeForTesting(scoped_ptr<Proxy> proxy_for_testing) { |
168 InitializeProxy(proxy_for_testing.Pass()); | 169 InitializeProxy(proxy_for_testing.Pass()); |
169 } | 170 } |
170 | 171 |
171 void LayerTreeHost::InitializeProxy(scoped_ptr<Proxy> proxy) { | 172 void LayerTreeHost::InitializeProxy(scoped_ptr<Proxy> proxy) { |
172 TRACE_EVENT0("cc", "LayerTreeHost::InitializeForReal"); | 173 TRACE_EVENT0("cc", "LayerTreeHost::InitializeForReal"); |
173 | 174 |
174 proxy_ = proxy.Pass(); | 175 proxy_ = proxy.Pass(); |
175 proxy_->Start(); | 176 proxy_->Start(); |
176 if (settings_.accelerated_animation_enabled) { | 177 if (settings_.accelerated_animation_enabled) { |
177 animation_registrar_->set_supports_scroll_animations( | 178 if (animation_registrar_) |
178 proxy_->SupportsImplScrolling()); | 179 animation_registrar_->set_supports_scroll_animations( |
| 180 proxy_->SupportsImplScrolling()); |
| 181 |
| 182 if (animation_host_) |
| 183 animation_host_->SetSupportsScrollAnimations( |
| 184 proxy_->SupportsImplScrolling()); |
179 } | 185 } |
180 } | 186 } |
181 | 187 |
182 LayerTreeHost::~LayerTreeHost() { | 188 LayerTreeHost::~LayerTreeHost() { |
183 TRACE_EVENT0("cc", "LayerTreeHost::~LayerTreeHost"); | 189 TRACE_EVENT0("cc", "LayerTreeHost::~LayerTreeHost"); |
184 | 190 |
185 if (animation_host_) | 191 if (animation_host_) |
186 animation_host_->SetLayerTreeMutatorsClient(nullptr); | 192 animation_host_->SetLayerTreeMutatorsClient(nullptr); |
187 | 193 |
188 if (root_layer_.get()) | 194 if (root_layer_.get()) |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
549 proxy_->SetNextCommitWaitsForActivation(); | 555 proxy_->SetNextCommitWaitsForActivation(); |
550 } | 556 } |
551 | 557 |
552 void LayerTreeHost::SetNextCommitForcesRedraw() { | 558 void LayerTreeHost::SetNextCommitForcesRedraw() { |
553 next_commit_forces_redraw_ = true; | 559 next_commit_forces_redraw_ = true; |
554 } | 560 } |
555 | 561 |
556 void LayerTreeHost::SetAnimationEvents( | 562 void LayerTreeHost::SetAnimationEvents( |
557 scoped_ptr<AnimationEventsVector> events) { | 563 scoped_ptr<AnimationEventsVector> events) { |
558 DCHECK(proxy_->IsMainThread()); | 564 DCHECK(proxy_->IsMainThread()); |
559 animation_registrar_->SetAnimationEvents(events.Pass()); | 565 if (animation_host_) |
| 566 animation_host_->SetAnimationEvents(events.Pass()); |
| 567 else |
| 568 animation_registrar_->SetAnimationEvents(events.Pass()); |
560 } | 569 } |
561 | 570 |
562 void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { | 571 void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { |
563 if (root_layer_.get() == root_layer.get()) | 572 if (root_layer_.get() == root_layer.get()) |
564 return; | 573 return; |
565 | 574 |
566 if (root_layer_.get()) | 575 if (root_layer_.get()) |
567 root_layer_->SetLayerTreeHost(NULL); | 576 root_layer_->SetLayerTreeHost(NULL); |
568 root_layer_ = root_layer; | 577 root_layer_ = root_layer; |
569 if (root_layer_.get()) { | 578 if (root_layer_.get()) { |
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 top_controls_manager_weak_ptr_, | 1157 top_controls_manager_weak_ptr_, |
1149 constraints, | 1158 constraints, |
1150 current, | 1159 current, |
1151 animate)); | 1160 animate)); |
1152 } | 1161 } |
1153 | 1162 |
1154 void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { | 1163 void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { |
1155 if (!settings_.accelerated_animation_enabled) | 1164 if (!settings_.accelerated_animation_enabled) |
1156 return; | 1165 return; |
1157 | 1166 |
1158 if (animation_registrar_->AnimateLayers(monotonic_time)) | 1167 if (animation_host_) { |
1159 animation_registrar_->UpdateAnimationState(true, NULL); | 1168 if (animation_host_->AnimateLayers(monotonic_time)) |
| 1169 animation_host_->UpdateAnimationState(true, NULL); |
| 1170 } else if (animation_registrar_) { |
| 1171 if (animation_registrar_->AnimateLayers(monotonic_time)) |
| 1172 animation_registrar_->UpdateAnimationState(true, NULL); |
| 1173 } |
1160 } | 1174 } |
1161 | 1175 |
1162 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { | 1176 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { |
1163 DCHECK(client); | 1177 DCHECK(client); |
1164 | 1178 |
1165 UIResourceId next_id = next_ui_resource_id_++; | 1179 UIResourceId next_id = next_ui_resource_id_++; |
1166 DCHECK(ui_resource_client_map_.find(next_id) == | 1180 DCHECK(ui_resource_client_map_.find(next_id) == |
1167 ui_resource_client_map_.end()); | 1181 ui_resource_client_map_.end()); |
1168 | 1182 |
1169 bool resource_lost = false; | 1183 bool resource_lost = false; |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1352 | 1366 |
1353 void LayerTreeHost::SetLayerScrollOffsetMutated( | 1367 void LayerTreeHost::SetLayerScrollOffsetMutated( |
1354 int layer_id, | 1368 int layer_id, |
1355 bool active_tree, | 1369 bool active_tree, |
1356 const gfx::ScrollOffset& scroll_offset) { | 1370 const gfx::ScrollOffset& scroll_offset) { |
1357 LayerAnimationValueObserver* layer = LayerById(layer_id); | 1371 LayerAnimationValueObserver* layer = LayerById(layer_id); |
1358 DCHECK(layer); | 1372 DCHECK(layer); |
1359 layer->OnScrollOffsetAnimated(scroll_offset); | 1373 layer->OnScrollOffsetAnimated(scroll_offset); |
1360 } | 1374 } |
1361 | 1375 |
| 1376 bool LayerTreeHost::IsAnimatingFilterProperty(const Layer* layer) const { |
| 1377 return animation_host_ |
| 1378 ? animation_host_->IsAnimatingFilterProperty(layer->id()) |
| 1379 : false; |
| 1380 } |
| 1381 |
| 1382 bool LayerTreeHost::IsAnimatingOpacityProperty(const Layer* layer) const { |
| 1383 return animation_host_ |
| 1384 ? animation_host_->IsAnimatingOpacityProperty(layer->id()) |
| 1385 : false; |
| 1386 } |
| 1387 |
| 1388 bool LayerTreeHost::IsAnimatingTransformProperty(const Layer* layer) const { |
| 1389 return animation_host_ |
| 1390 ? animation_host_->IsAnimatingTransformProperty(layer->id()) |
| 1391 : false; |
| 1392 } |
| 1393 |
| 1394 bool LayerTreeHost::AnimationsPreserveAxisAlignment(const Layer* layer) const { |
| 1395 return animation_host_ |
| 1396 ? animation_host_->AnimationsPreserveAxisAlignment(layer->id()) |
| 1397 : true; |
| 1398 } |
| 1399 |
| 1400 bool LayerTreeHost::HasAnyAnimation(const Layer* layer) const { |
| 1401 return animation_host_ ? animation_host_->HasAnyAnimation(layer->id()) |
| 1402 : false; |
| 1403 } |
| 1404 |
| 1405 bool LayerTreeHost::HasActiveAnimation(const Layer* layer) const { |
| 1406 return animation_host_ ? animation_host_->HasActiveAnimation(layer->id()) |
| 1407 : false; |
| 1408 } |
| 1409 |
1362 } // namespace cc | 1410 } // namespace cc |
OLD | NEW |