| 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 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 proxy_->SetNextCommitWaitsForActivation(); | 537 proxy_->SetNextCommitWaitsForActivation(); |
| 538 } | 538 } |
| 539 | 539 |
| 540 void LayerTreeHost::SetNextCommitForcesRedraw() { | 540 void LayerTreeHost::SetNextCommitForcesRedraw() { |
| 541 next_commit_forces_redraw_ = true; | 541 next_commit_forces_redraw_ = true; |
| 542 } | 542 } |
| 543 | 543 |
| 544 void LayerTreeHost::SetAnimationEvents( | 544 void LayerTreeHost::SetAnimationEvents( |
| 545 scoped_ptr<AnimationEventsVector> events) { | 545 scoped_ptr<AnimationEventsVector> events) { |
| 546 DCHECK(proxy_->IsMainThread()); | 546 DCHECK(proxy_->IsMainThread()); |
| 547 for (size_t event_index = 0; event_index < events->size(); ++event_index) { | 547 animation_registrar_->SetAnimationEvents(events.Pass()); |
| 548 int event_layer_id = (*events)[event_index].layer_id; | |
| 549 | |
| 550 // Use the map of all controllers, not just active ones, since non-active | |
| 551 // controllers may still receive events for impl-only animations. | |
| 552 const AnimationRegistrar::AnimationControllerMap& animation_controllers = | |
| 553 animation_registrar_->all_animation_controllers(); | |
| 554 auto iter = animation_controllers.find(event_layer_id); | |
| 555 if (iter != animation_controllers.end()) { | |
| 556 switch ((*events)[event_index].type) { | |
| 557 case AnimationEvent::STARTED: | |
| 558 (*iter).second->NotifyAnimationStarted((*events)[event_index]); | |
| 559 break; | |
| 560 | |
| 561 case AnimationEvent::FINISHED: | |
| 562 (*iter).second->NotifyAnimationFinished((*events)[event_index]); | |
| 563 break; | |
| 564 | |
| 565 case AnimationEvent::ABORTED: | |
| 566 (*iter).second->NotifyAnimationAborted((*events)[event_index]); | |
| 567 break; | |
| 568 | |
| 569 case AnimationEvent::PROPERTY_UPDATE: | |
| 570 (*iter).second->NotifyAnimationPropertyUpdate((*events)[event_index]); | |
| 571 break; | |
| 572 } | |
| 573 } | |
| 574 } | |
| 575 } | 548 } |
| 576 | 549 |
| 577 void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { | 550 void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { |
| 578 if (root_layer_.get() == root_layer.get()) | 551 if (root_layer_.get() == root_layer.get()) |
| 579 return; | 552 return; |
| 580 | 553 |
| 581 if (root_layer_.get()) | 554 if (root_layer_.get()) |
| 582 root_layer_->SetLayerTreeHost(NULL); | 555 root_layer_->SetLayerTreeHost(NULL); |
| 583 root_layer_ = root_layer; | 556 root_layer_ = root_layer; |
| 584 if (root_layer_.get()) { | 557 if (root_layer_.get()) { |
| (...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1158 // Top controls are only used in threaded mode. | 1131 // Top controls are only used in threaded mode. |
| 1159 proxy_->ImplThreadTaskRunner()->PostTask( | 1132 proxy_->ImplThreadTaskRunner()->PostTask( |
| 1160 FROM_HERE, | 1133 FROM_HERE, |
| 1161 base::Bind(&TopControlsManager::UpdateTopControlsState, | 1134 base::Bind(&TopControlsManager::UpdateTopControlsState, |
| 1162 top_controls_manager_weak_ptr_, | 1135 top_controls_manager_weak_ptr_, |
| 1163 constraints, | 1136 constraints, |
| 1164 current, | 1137 current, |
| 1165 animate)); | 1138 animate)); |
| 1166 } | 1139 } |
| 1167 | 1140 |
| 1168 void LayerTreeHost::AsValueInto(base::trace_event::TracedValue* state) const { | |
| 1169 state->BeginDictionary("proxy"); | |
| 1170 proxy_->AsValueInto(state); | |
| 1171 state->EndDictionary(); | |
| 1172 } | |
| 1173 | |
| 1174 void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { | 1141 void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { |
| 1175 if (!settings_.accelerated_animation_enabled || | 1142 if (!settings_.accelerated_animation_enabled) |
| 1176 animation_registrar_->active_animation_controllers().empty()) | |
| 1177 return; | 1143 return; |
| 1178 | 1144 |
| 1179 TRACE_EVENT0("cc", "LayerTreeHost::AnimateLayers"); | 1145 if (animation_registrar_->AnimateLayers(monotonic_time)) |
| 1180 | 1146 animation_registrar_->UpdateAnimationState(true, NULL); |
| 1181 AnimationRegistrar::AnimationControllerMap active_controllers_copy = | |
| 1182 animation_registrar_->active_animation_controllers(); | |
| 1183 for (auto& it : active_controllers_copy) { | |
| 1184 it.second->Animate(monotonic_time); | |
| 1185 bool start_ready_animations = true; | |
| 1186 it.second->UpdateState(start_ready_animations, NULL); | |
| 1187 } | |
| 1188 } | 1147 } |
| 1189 | 1148 |
| 1190 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { | 1149 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { |
| 1191 DCHECK(client); | 1150 DCHECK(client); |
| 1192 | 1151 |
| 1193 UIResourceId next_id = next_ui_resource_id_++; | 1152 UIResourceId next_id = next_ui_resource_id_++; |
| 1194 DCHECK(ui_resource_client_map_.find(next_id) == | 1153 DCHECK(ui_resource_client_map_.find(next_id) == |
| 1195 ui_resource_client_map_.end()); | 1154 ui_resource_client_map_.end()); |
| 1196 | 1155 |
| 1197 bool resource_lost = false; | 1156 bool resource_lost = false; |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1312 bool children_need_begin_frames) const { | 1271 bool children_need_begin_frames) const { |
| 1313 proxy_->SetChildrenNeedBeginFrames(children_need_begin_frames); | 1272 proxy_->SetChildrenNeedBeginFrames(children_need_begin_frames); |
| 1314 } | 1273 } |
| 1315 | 1274 |
| 1316 void LayerTreeHost::SendBeginFramesToChildren( | 1275 void LayerTreeHost::SendBeginFramesToChildren( |
| 1317 const BeginFrameArgs& args) const { | 1276 const BeginFrameArgs& args) const { |
| 1318 client_->SendBeginFramesToChildren(args); | 1277 client_->SendBeginFramesToChildren(args); |
| 1319 } | 1278 } |
| 1320 | 1279 |
| 1321 } // namespace cc | 1280 } // namespace cc |
| OLD | NEW |