diff options
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java | 2 | ||||
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java | 16 |
2 files changed, 15 insertions, 3 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java index e8894a836663..b60e361caad8 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenTransitions.java @@ -451,6 +451,8 @@ class SplitScreenTransitions { mPendingResize.onConsumed(aborted); mPendingResize = null; } + + // TODO: handle transition consumed for active remote handler } void onFinish(WindowContainerTransaction wct) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java index 4355ed2bd3bf..94519a0d118c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/OneShotRemoteHandler.java @@ -74,6 +74,9 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler { @Override public void onTransitionFinished(WindowContainerTransaction wct, SurfaceControl.Transaction sct) { + ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, + "Finished one-shot remote transition %s for (#%d).", mRemote, + info.getDebugId()); if (mRemote.asBinder() != null) { mRemote.asBinder().unlinkToDeath(remoteDied, 0 /* flags */); } @@ -82,8 +85,8 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler { } mMainExecutor.execute(() -> { finishCallback.onTransitionFinished(wct); + mRemote = null; }); - mRemote = null; } }; Transitions.setRunningRemoteTransitionDelegate(mRemote.getAppThread()); @@ -115,17 +118,24 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler { public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info, @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget, @NonNull Transitions.TransitionFinishCallback finishCallback) { + ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, "Merging registered One-shot remote" + + " transition %s for (#%d).", mRemote, info.getDebugId()); IRemoteTransitionFinishedCallback cb = new IRemoteTransitionFinishedCallback.Stub() { @Override public void onTransitionFinished(WindowContainerTransaction wct, SurfaceControl.Transaction sct) { + ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, + "Finished merging one-shot remote transition %s for (#%d).", mRemote, + info.getDebugId()); // We have merged, since we sent the transaction over binder, the one in this // process won't be cleared if the remote applied it. We don't actually know if the // remote applied the transaction, but applying twice will break surfaceflinger // so just assume the worst-case and clear the local transaction. t.clear(); - mMainExecutor.execute(() -> finishCallback.onTransitionFinished(wct)); - mRemote = null; + mMainExecutor.execute(() -> { + finishCallback.onTransitionFinished(wct); + mRemote = null; + }); } }; try { |