Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(294)

Unified Diff: ui/compositor/layer_animator.cc

Issue 1944623002: CC Animation: Use ElementId to attach CC animation players. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@erasedomids
Patch Set: Let CC clients generate their own ElementIds locally. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/compositor/layer_animator.cc
diff --git a/ui/compositor/layer_animator.cc b/ui/compositor/layer_animator.cc
index b3474964bcfeb46668c57344a8926907631d27b6..dd2ea4afaf7e5f52005b91bfe00aa0ca03ec3e1b 100644
--- a/ui/compositor/layer_animator.cc
+++ b/ui/compositor/layer_animator.cc
@@ -139,9 +139,12 @@ void LayerAnimator::SwitchToLayer(scoped_refptr<cc::Layer> new_layer) {
element_animations_state_ = nullptr;
if (delegate_)
- DetachLayerFromAnimationPlayer();
- if (new_layer)
- AttachLayerToAnimationPlayer(new_layer->id());
+ DetachElementFromAnimationPlayer();
+ if (new_layer) {
+ if (!new_layer->element_id())
+ new_layer->SetElementId(Layer::NextElementId());
+ AttachElementToAnimationPlayer(new_layer->element_id());
+ }
}
void LayerAnimator::SetCompositor(Compositor* compositor) {
@@ -157,14 +160,14 @@ void LayerAnimator::SetCompositor(Compositor* compositor) {
// AnimationHost::GetElementAnimationsForLayerId.
if (element_animations_state_) {
DCHECK_EQ(element_animations_state_->element_id(),
- delegate_->GetCcLayer()->id());
+ delegate_->GetCcLayer()->element_id());
timeline->animation_host()->RegisterElementAnimations(
element_animations_state_.get());
}
timeline->AttachPlayer(animation_player_);
- AttachLayerToAnimationPlayer(delegate_->GetCcLayer()->id());
+ AttachElementToAnimationPlayer(delegate_->GetCcLayer()->element_id());
// Release ElementAnimations state.
element_animations_state_ = nullptr;
@@ -176,30 +179,33 @@ void LayerAnimator::ResetCompositor(Compositor* compositor) {
cc::AnimationTimeline* timeline = compositor->GetAnimationTimeline();
DCHECK(timeline);
- const int layer_id = animation_player_->element_id();
+ const cc::ElementId element_id = animation_player_->element_id();
// Store a reference to ElementAnimations (if any)
// so it may be picked up in LayerAnimator::SetCompositor.
- if (layer_id) {
+ if (element_id) {
element_animations_state_ =
- timeline->animation_host()->GetElementAnimationsForElementId(layer_id);
+ timeline->animation_host()->GetElementAnimationsForElementId(
+ element_id);
}
- DetachLayerFromAnimationPlayer();
+ DetachElementFromAnimationPlayer();
timeline->DetachPlayer(animation_player_);
}
-void LayerAnimator::AttachLayerToAnimationPlayer(int layer_id) {
+void LayerAnimator::AttachElementToAnimationPlayer(cc::ElementId element_id) {
+ DCHECK(element_id);
+
if (!animation_player_->element_id())
- animation_player_->AttachElement(layer_id);
+ animation_player_->AttachElement(element_id);
else
- DCHECK_EQ(animation_player_->element_id(), layer_id);
+ DCHECK_EQ(animation_player_->element_id(), element_id);
animation_player_->set_animation_delegate(this);
}
-void LayerAnimator::DetachLayerFromAnimationPlayer() {
+void LayerAnimator::DetachElementFromAnimationPlayer() {
animation_player_->set_animation_delegate(nullptr);
if (animation_player_->element_id())

Powered by Google App Engine
This is Rietveld 408576698