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

This commit is contained in:
Treehugger Robot
2023-06-14 08:17:35 +00:00
committed by Android (Google) Code Review
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.