Merge "Start edge extension animations in sync" into tm-dev
This commit is contained in:
@@ -158,7 +158,7 @@ class SurfaceAnimationRunner {
|
|||||||
void continueStartingAnimations() {
|
void continueStartingAnimations() {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
mAnimationStartDeferred = false;
|
mAnimationStartDeferred = false;
|
||||||
if (!mPendingAnimations.isEmpty()) {
|
if (!mPendingAnimations.isEmpty() && mPreProcessingAnimations.isEmpty()) {
|
||||||
mChoreographer.postFrameCallback(this::startAnimations);
|
mChoreographer.postFrameCallback(this::startAnimations);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -204,7 +204,7 @@ class SurfaceAnimationRunner {
|
|||||||
|
|
||||||
mPreProcessingAnimations.remove(animationLeash);
|
mPreProcessingAnimations.remove(animationLeash);
|
||||||
mPendingAnimations.put(animationLeash, runningAnim);
|
mPendingAnimations.put(animationLeash, runningAnim);
|
||||||
if (!mAnimationStartDeferred) {
|
if (!mAnimationStartDeferred && mPreProcessingAnimations.isEmpty()) {
|
||||||
mChoreographer.postFrameCallback(this::startAnimations);
|
mChoreographer.postFrameCallback(this::startAnimations);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -214,7 +214,7 @@ class SurfaceAnimationRunner {
|
|||||||
|
|
||||||
if (!requiresEdgeExtension) {
|
if (!requiresEdgeExtension) {
|
||||||
mPendingAnimations.put(animationLeash, runningAnim);
|
mPendingAnimations.put(animationLeash, runningAnim);
|
||||||
if (!mAnimationStartDeferred) {
|
if (!mAnimationStartDeferred && mPreProcessingAnimations.isEmpty()) {
|
||||||
mChoreographer.postFrameCallback(this::startAnimations);
|
mChoreographer.postFrameCallback(this::startAnimations);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,6 +330,14 @@ class SurfaceAnimationRunner {
|
|||||||
|
|
||||||
private void startAnimations(long frameTimeNanos) {
|
private void startAnimations(long frameTimeNanos) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
|
if (!mPreProcessingAnimations.isEmpty()) {
|
||||||
|
// We only want to start running animations once all mPreProcessingAnimations have
|
||||||
|
// been processed to ensure preprocessed animations start in sync.
|
||||||
|
// NOTE: This means we might delay running animations that require preprocessing if
|
||||||
|
// new animations that also require preprocessing are requested before the previous
|
||||||
|
// ones have finished (see b/227449117).
|
||||||
|
return;
|
||||||
|
}
|
||||||
startPendingAnimationsLocked();
|
startPendingAnimationsLocked();
|
||||||
}
|
}
|
||||||
mPowerManagerInternal.setPowerBoost(Boost.INTERACTION, 0);
|
mPowerManagerInternal.setPowerBoost(Boost.INTERACTION, 0);
|
||||||
@@ -553,4 +561,4 @@ class SurfaceAnimationRunner {
|
|||||||
return mAnimationHandler;
|
return mAnimationHandler;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user