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

Side by Side Diff: third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp

Issue 1778223002: Revert of Takeover MT initiated animations from the compositor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2661
Patch Set: Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "platform/scroll/ScrollAnimatorCompositorCoordinator.h" 5 #include "platform/scroll/ScrollAnimatorCompositorCoordinator.h"
6 6
7 #include "cc/animation/scroll_offset_animation_curve.h" 7 #include "cc/animation/scroll_offset_animation_curve.h"
8 #include "platform/RuntimeEnabledFeatures.h" 8 #include "platform/RuntimeEnabledFeatures.h"
9 #include "platform/animation/CompositorAnimationPlayer.h" 9 #include "platform/animation/CompositorAnimationPlayer.h"
10 #include "platform/animation/CompositorAnimationTimeline.h" 10 #include "platform/animation/CompositorAnimationTimeline.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 bool ScrollAnimatorCompositorCoordinator::hasAnimationThatRequiresService() cons t 58 bool ScrollAnimatorCompositorCoordinator::hasAnimationThatRequiresService() cons t
59 { 59 {
60 switch (m_runState) { 60 switch (m_runState) {
61 case RunState::Idle: 61 case RunState::Idle:
62 case RunState::RunningOnCompositor: 62 case RunState::RunningOnCompositor:
63 return false; 63 return false;
64 case RunState::PostAnimationCleanup: 64 case RunState::PostAnimationCleanup:
65 case RunState::WaitingToSendToCompositor: 65 case RunState::WaitingToSendToCompositor:
66 case RunState::RunningOnMainThread: 66 case RunState::RunningOnMainThread:
67 case RunState::RunningOnCompositorButNeedsUpdate: 67 case RunState::RunningOnCompositorButNeedsUpdate:
68 case RunState::RunningOnCompositorButNeedsTakeover:
69 case RunState::WaitingToCancelOnCompositor: 68 case RunState::WaitingToCancelOnCompositor:
70 return true; 69 return true;
71 } 70 }
72 ASSERT_NOT_REACHED(); 71 ASSERT_NOT_REACHED();
73 return false; 72 return false;
74 } 73 }
75 74
76 bool ScrollAnimatorCompositorCoordinator::addAnimation( 75 bool ScrollAnimatorCompositorCoordinator::addAnimation(
77 PassOwnPtr<CompositorAnimation> animation) 76 PassOwnPtr<CompositorAnimation> animation)
78 { 77 {
(...skipping 30 matching lines...) Expand all
109 } 108 }
110 } 109 }
111 110
112 void ScrollAnimatorCompositorCoordinator::cancelAnimation() 111 void ScrollAnimatorCompositorCoordinator::cancelAnimation()
113 { 112 {
114 switch (m_runState) { 113 switch (m_runState) {
115 case RunState::Idle: 114 case RunState::Idle:
116 case RunState::WaitingToCancelOnCompositor: 115 case RunState::WaitingToCancelOnCompositor:
117 case RunState::PostAnimationCleanup: 116 case RunState::PostAnimationCleanup:
118 break; 117 break;
119 case RunState::RunningOnCompositorButNeedsTakeover:
120 case RunState::WaitingToSendToCompositor: 118 case RunState::WaitingToSendToCompositor:
121 if (m_compositorAnimationId) { 119 if (m_compositorAnimationId) {
122 // We still have a previous animation running on the compositor. 120 // We still have a previous animation running on the compositor.
123 m_runState = RunState::WaitingToCancelOnCompositor; 121 m_runState = RunState::WaitingToCancelOnCompositor;
124 } else { 122 } else {
125 resetAnimationState(); 123 resetAnimationState();
126 } 124 }
127 break; 125 break;
128 case RunState::RunningOnMainThread: 126 case RunState::RunningOnMainThread:
129 m_runState = RunState::PostAnimationCleanup; 127 m_runState = RunState::PostAnimationCleanup;
130 break; 128 break;
131 case RunState::RunningOnCompositorButNeedsUpdate: 129 case RunState::RunningOnCompositorButNeedsUpdate:
132 case RunState::RunningOnCompositor: 130 case RunState::RunningOnCompositor:
133 m_runState = RunState::WaitingToCancelOnCompositor; 131 m_runState = RunState::WaitingToCancelOnCompositor;
134 132
135 // Get serviced the next time compositor updates are allowed. 133 // Get serviced the next time compositor updates are allowed.
136 scrollableArea()->registerForAnimation(); 134 scrollableArea()->registerForAnimation();
137 } 135 }
138 } 136 }
139 137
140 void ScrollAnimatorCompositorCoordinator::takeoverCompositorAnimation()
141 {
142 switch (m_runState) {
143 case RunState::Idle:
144 case RunState::WaitingToCancelOnCompositor:
145 case RunState::PostAnimationCleanup:
146 case RunState::RunningOnCompositorButNeedsTakeover:
147 case RunState::WaitingToSendToCompositor:
148 case RunState::RunningOnMainThread:
149 break;
150 case RunState::RunningOnCompositorButNeedsUpdate:
151 case RunState::RunningOnCompositor:
152 // We call abortAnimation that makes changes to the animation running on
153 // the compositor. Thus, this function should only be called when in
154 // CompositingClean state.
155 abortAnimation();
156
157 m_runState = RunState::RunningOnCompositorButNeedsTakeover;
158
159 // Get serviced the next time compositor updates are allowed.
160 scrollableArea()->registerForAnimation();
161 }
162 }
163
164 void ScrollAnimatorCompositorCoordinator::compositorAnimationFinished( 138 void ScrollAnimatorCompositorCoordinator::compositorAnimationFinished(
165 int groupId) 139 int groupId)
166 { 140 {
167 if (m_compositorAnimationGroupId != groupId) 141 if (m_compositorAnimationGroupId != groupId)
168 return; 142 return;
169 143
170 m_compositorAnimationId = 0; 144 m_compositorAnimationId = 0;
171 m_compositorAnimationGroupId = 0; 145 m_compositorAnimationGroupId = 0;
172 146
173 switch (m_runState) { 147 switch (m_runState) {
174 case RunState::Idle: 148 case RunState::Idle:
175 case RunState::PostAnimationCleanup: 149 case RunState::PostAnimationCleanup:
176 case RunState::RunningOnMainThread: 150 case RunState::RunningOnMainThread:
177 ASSERT_NOT_REACHED(); 151 ASSERT_NOT_REACHED();
178 break; 152 break;
179 case RunState::WaitingToSendToCompositor: 153 case RunState::WaitingToSendToCompositor:
180 break; 154 break;
181 case RunState::RunningOnCompositor: 155 case RunState::RunningOnCompositor:
182 case RunState::RunningOnCompositorButNeedsUpdate: 156 case RunState::RunningOnCompositorButNeedsUpdate:
183 case RunState::RunningOnCompositorButNeedsTakeover:
184 case RunState::WaitingToCancelOnCompositor: 157 case RunState::WaitingToCancelOnCompositor:
185 m_runState = RunState::PostAnimationCleanup; 158 m_runState = RunState::PostAnimationCleanup;
186 // Get serviced the next time compositor updates are allowed. 159 // Get serviced the next time compositor updates are allowed.
187 if (scrollableArea()) 160 if (scrollableArea())
188 scrollableArea()->registerForAnimation(); 161 scrollableArea()->registerForAnimation();
189 else 162 else
190 resetAnimationState(); 163 resetAnimationState();
191 } 164 }
192 } 165 }
193 166
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 // animation. 213 // animation.
241 notifyCompositorAnimationFinished(group); 214 notifyCompositorAnimationFinished(group);
242 } 215 }
243 216
244 CompositorAnimationPlayer* ScrollAnimatorCompositorCoordinator::compositorPlayer () const 217 CompositorAnimationPlayer* ScrollAnimatorCompositorCoordinator::compositorPlayer () const
245 { 218 {
246 return m_compositorPlayer.get(); 219 return m_compositorPlayer.get();
247 } 220 }
248 221
249 } // namespace blink 222 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698