Merge "Cancel current animation instead of candidate" into tm-qpr-dev am: 6eda179081

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

Change-Id: I06cf296709bdf62e3507f19d0876f695bfc12bbe
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-04-13 22:48:46 +00:00
committed by Automerger Merge Worker
2 changed files with 17 additions and 14 deletions

View File

@@ -260,22 +260,20 @@ public class KeyguardService extends Service {
);
}
public void mergeAnimation(IBinder transition, TransitionInfo info,
SurfaceControl.Transaction t, IBinder mergeTarget,
IRemoteTransitionFinishedCallback finishCallback) {
public void mergeAnimation(IBinder candidateTransition, TransitionInfo candidateInfo,
SurfaceControl.Transaction candidateT, IBinder currentTransition,
IRemoteTransitionFinishedCallback candidateFinishCallback) {
try {
final IRemoteTransitionFinishedCallback origFinishCB;
final IRemoteTransitionFinishedCallback currentFinishCB;
synchronized (mFinishCallbacks) {
origFinishCB = mFinishCallbacks.remove(transition);
currentFinishCB = mFinishCallbacks.remove(currentTransition);
}
info.releaseAllSurfaces();
t.close();
if (origFinishCB == null) {
// already finished (or not started yet), so do nothing.
if (currentFinishCB == null) {
Slog.e(TAG, "Called mergeAnimation, but finish callback is missing");
return;
}
runner.onAnimationCancelled(false /* isKeyguardOccluded */);
origFinishCB.onTransitionFinished(null /* wct */, null /* t */);
currentFinishCB.onTransitionFinished(null /* wct */, null /* t */);
} catch (RemoteException e) {
// nothing, we'll just let it finish on its own I guess.
}

View File

@@ -951,10 +951,15 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
@Override
public void onAnimationCancelled(boolean isKeyguardOccluded) {
if (mOccludeByDreamAnimator != null) {
mOccludeByDreamAnimator.cancel();
}
setOccluded(isKeyguardOccluded /* isOccluded */, false /* animate */);
mContext.getMainExecutor().execute(() -> {
if (mOccludeByDreamAnimator != null) {
mOccludeByDreamAnimator.cancel();
}
});
// The value of isKeyguardOccluded here may come from mergeAnimation, which
// isn't reliable. In all cases, after running or cancelling this animation,
// keyguard should be occluded.
setOccluded(true /* isOccluded */, false /* animate */);
if (DEBUG) {
Log.d(TAG, "Occlude by Dream animation cancelled. Occluded state is now: "
+ mOccluded);