Merge "Fix re-entrant issue in Keyguard / Mixed handler" into udc-dev am: b4b4f2042d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23638653

Change-Id: I1b9cd5d60f71793442cad898790289b2f8887de9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-06-14 09:03:43 +00:00
committed by Automerger Merge Worker
2 changed files with 7 additions and 5 deletions

View File

@@ -156,6 +156,8 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler
"start keyguard %s transition, info = %s", description, info);
try {
mStartedTransitions.put(transition,
new StartedTransition(info, finishTransaction, remoteHandler));
remoteHandler.startAnimation(transition, info, startTransaction,
new IRemoteTransitionFinishedCallback.Stub() {
@Override
@@ -164,14 +166,13 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler
if (sct != null) {
finishTransaction.merge(sct);
}
mMainExecutor.execute(() -> {
// Post our finish callback to let startAnimation finish first.
mMainExecutor.executeDelayed(() -> {
mStartedTransitions.remove(transition);
finishCallback.onTransitionFinished(wct, null);
});
}, 0);
}
});
mStartedTransitions.put(transition,
new StartedTransition(info, finishTransaction, remoteHandler));
} catch (RemoteException e) {
Log.wtf(TAG, "RemoteException thrown from local IRemoteTransition", e);
return false;

View File

@@ -589,11 +589,12 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
finishCallback.onTransitionFinished(wct, wctCB);
}
};
mixed.mInFlightSubAnimations++;
if (!mKeyguardHandler.startAnimation(
mixed.mTransition, info, startTransaction, finishTransaction, finishCB)) {
mixed.mInFlightSubAnimations--;
return false;
}
mixed.mInFlightSubAnimations++;
// Sync pip state.
if (mPipHandler != null) {
// We don't know when to apply `startTransaction` so use a separate transaction here.