OLD | NEW |
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 "config.h" | 5 #include "config.h" |
6 #include "platform/scroll/ScrollAnimatorCompositorCoordinator.h" | 6 #include "platform/scroll/ScrollAnimatorCompositorCoordinator.h" |
7 | 7 |
8 #include "platform/RuntimeEnabledFeatures.h" | 8 #include "platform/RuntimeEnabledFeatures.h" |
9 #include "platform/graphics/GraphicsLayer.h" | 9 #include "platform/graphics/GraphicsLayer.h" |
10 #include "platform/scroll/ScrollableArea.h" | 10 #include "platform/scroll/ScrollableArea.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 } | 45 } |
46 | 46 |
47 bool ScrollAnimatorCompositorCoordinator::hasAnimationThatRequiresService() cons
t | 47 bool ScrollAnimatorCompositorCoordinator::hasAnimationThatRequiresService() cons
t |
48 { | 48 { |
49 switch (m_runState) { | 49 switch (m_runState) { |
50 case RunState::Idle: | 50 case RunState::Idle: |
51 case RunState::RunningOnCompositor: | 51 case RunState::RunningOnCompositor: |
52 return false; | 52 return false; |
53 case RunState::WaitingToSendToCompositor: | 53 case RunState::WaitingToSendToCompositor: |
54 case RunState::RunningOnMainThread: | 54 case RunState::RunningOnMainThread: |
| 55 case RunState::RunningOnCompositorButNeedsUpdate: |
55 case RunState::WaitingToCancelOnCompositor: | 56 case RunState::WaitingToCancelOnCompositor: |
56 return true; | 57 return true; |
57 } | 58 } |
58 ASSERT_NOT_REACHED(); | 59 ASSERT_NOT_REACHED(); |
59 return false; | 60 return false; |
60 } | 61 } |
61 | 62 |
62 bool ScrollAnimatorCompositorCoordinator::addAnimation( | 63 bool ScrollAnimatorCompositorCoordinator::addAnimation( |
63 PassOwnPtr<WebCompositorAnimation> animation) | 64 PassOwnPtr<WebCompositorAnimation> animation) |
64 { | 65 { |
(...skipping 12 matching lines...) Expand all Loading... |
77 { | 78 { |
78 if (m_compositorPlayer) { | 79 if (m_compositorPlayer) { |
79 if (m_compositorPlayer->isLayerAttached()) | 80 if (m_compositorPlayer->isLayerAttached()) |
80 m_compositorPlayer->removeAnimation(m_compositorAnimationId); | 81 m_compositorPlayer->removeAnimation(m_compositorAnimationId); |
81 } else { | 82 } else { |
82 if (GraphicsLayer* layer = scrollableArea()->layerForScrolling()) | 83 if (GraphicsLayer* layer = scrollableArea()->layerForScrolling()) |
83 layer->removeAnimation(m_compositorAnimationId); | 84 layer->removeAnimation(m_compositorAnimationId); |
84 } | 85 } |
85 } | 86 } |
86 | 87 |
| 88 void ScrollAnimatorCompositorCoordinator::abortAnimation() |
| 89 { |
| 90 if (m_compositorPlayer) { |
| 91 if (m_compositorPlayer->isLayerAttached()) |
| 92 m_compositorPlayer->abortAnimation(m_compositorAnimationId); |
| 93 } else { |
| 94 if (GraphicsLayer* layer = scrollableArea()->layerForScrolling()) |
| 95 layer->abortAnimation(m_compositorAnimationId); |
| 96 } |
| 97 } |
| 98 |
87 void ScrollAnimatorCompositorCoordinator::cancelAnimation() | 99 void ScrollAnimatorCompositorCoordinator::cancelAnimation() |
88 { | 100 { |
89 switch (m_runState) { | 101 switch (m_runState) { |
90 case RunState::Idle: | 102 case RunState::Idle: |
91 case RunState::WaitingToCancelOnCompositor: | 103 case RunState::WaitingToCancelOnCompositor: |
92 break; | 104 break; |
93 case RunState::WaitingToSendToCompositor: | 105 case RunState::WaitingToSendToCompositor: |
94 if (m_compositorAnimationId) { | 106 if (m_compositorAnimationId) { |
95 // We still have a previous animation running on the compositor. | 107 // We still have a previous animation running on the compositor. |
96 m_runState = RunState::WaitingToCancelOnCompositor; | 108 m_runState = RunState::WaitingToCancelOnCompositor; |
97 } else { | 109 } else { |
98 resetAnimationState(); | 110 resetAnimationState(); |
99 } | 111 } |
100 break; | 112 break; |
101 case RunState::RunningOnMainThread: | 113 case RunState::RunningOnMainThread: |
102 resetAnimationState(); | 114 resetAnimationState(); |
103 break; | 115 break; |
| 116 case RunState::RunningOnCompositorButNeedsUpdate: |
104 case RunState::RunningOnCompositor: | 117 case RunState::RunningOnCompositor: |
105 m_runState = RunState::WaitingToCancelOnCompositor; | 118 m_runState = RunState::WaitingToCancelOnCompositor; |
106 | 119 |
107 // Get serviced the next time compositor updates are allowed. | 120 // Get serviced the next time compositor updates are allowed. |
108 scrollableArea()->registerForAnimation(); | 121 scrollableArea()->registerForAnimation(); |
109 } | 122 } |
110 } | 123 } |
111 | 124 |
112 void ScrollAnimatorCompositorCoordinator::compositorAnimationFinished( | 125 void ScrollAnimatorCompositorCoordinator::compositorAnimationFinished( |
113 int groupId) | 126 int groupId) |
114 { | 127 { |
115 if (m_compositorAnimationGroupId != groupId) | 128 if (m_compositorAnimationGroupId != groupId) |
116 return; | 129 return; |
117 | 130 |
118 m_compositorAnimationId = 0; | 131 m_compositorAnimationId = 0; |
119 m_compositorAnimationGroupId = 0; | 132 m_compositorAnimationGroupId = 0; |
120 | 133 |
121 switch (m_runState) { | 134 switch (m_runState) { |
122 case RunState::Idle: | 135 case RunState::Idle: |
123 case RunState::RunningOnMainThread: | 136 case RunState::RunningOnMainThread: |
124 ASSERT_NOT_REACHED(); | 137 ASSERT_NOT_REACHED(); |
125 break; | 138 break; |
126 case RunState::WaitingToSendToCompositor: | 139 case RunState::WaitingToSendToCompositor: |
127 break; | 140 break; |
128 case RunState::RunningOnCompositor: | 141 case RunState::RunningOnCompositor: |
| 142 case RunState::RunningOnCompositorButNeedsUpdate: |
129 case RunState::WaitingToCancelOnCompositor: | 143 case RunState::WaitingToCancelOnCompositor: |
130 resetAnimationState(); | 144 resetAnimationState(); |
131 } | 145 } |
132 } | 146 } |
133 | 147 |
134 void ScrollAnimatorCompositorCoordinator::reattachCompositorPlayerIfNeeded( | 148 void ScrollAnimatorCompositorCoordinator::reattachCompositorPlayerIfNeeded( |
135 WebCompositorAnimationTimeline* timeline) | 149 WebCompositorAnimationTimeline* timeline) |
136 { | 150 { |
137 int compositorAnimationAttachedToLayerId = 0; | 151 int compositorAnimationAttachedToLayerId = 0; |
138 if (scrollableArea()->layerForScrolling()) | 152 if (scrollableArea()->layerForScrolling()) |
(...skipping 29 matching lines...) Expand all Loading... |
168 { | 182 { |
169 notifyCompositorAnimationFinished(group); | 183 notifyCompositorAnimationFinished(group); |
170 } | 184 } |
171 | 185 |
172 WebCompositorAnimationPlayer* ScrollAnimatorCompositorCoordinator::compositorPla
yer() const | 186 WebCompositorAnimationPlayer* ScrollAnimatorCompositorCoordinator::compositorPla
yer() const |
173 { | 187 { |
174 return m_compositorPlayer.get(); | 188 return m_compositorPlayer.get(); |
175 } | 189 } |
176 | 190 |
177 } // namespace blink | 191 } // namespace blink |
OLD | NEW |