Remove unused paramater to finish
the finishWCTCallback forces a sync transaction on finish and this conflicts with normal transition stuff, so we actually never use it. This CL removes it since it is deadcode. Bug: 293889797 Test: N/A, code is dead already. Change-Id: I27da152c8c9ec7be1ac22a236ceface4e5d497b9 Merged-In: I27da152c8c9ec7be1ac22a236ceface4e5d497b9
This commit is contained in:
@@ -80,13 +80,8 @@ interface IWindowOrganizerController {
|
||||
* Finishes a transition. This must be called for all created transitions.
|
||||
* @param transitionToken Which transition to finish
|
||||
* @param t Changes to make before finishing but in the same SF Transaction. Can be null.
|
||||
* @param callback Called when t is finished applying.
|
||||
* @return An ID for the sync operation (see {@link #applySyncTransaction}. This will be
|
||||
* negative if no sync transaction was attached (null t or callback)
|
||||
*/
|
||||
int finishTransition(in IBinder transitionToken,
|
||||
in @nullable WindowContainerTransaction t,
|
||||
in IWindowContainerTransactionCallback callback);
|
||||
void finishTransition(in IBinder transitionToken, in @nullable WindowContainerTransaction t);
|
||||
|
||||
/** @return An interface enabling the management of task organizers. */
|
||||
ITaskOrganizerController getTaskOrganizerController();
|
||||
|
||||
@@ -115,19 +115,15 @@ public class WindowOrganizer {
|
||||
* Finishes a running transition.
|
||||
* @param transitionToken The transition to finish. Can't be null.
|
||||
* @param t A set of window operations to apply before finishing.
|
||||
* @param callback A sync callback (if provided). See {@link #applySyncTransaction}.
|
||||
* @return An ID for the sync operation if performed. See {@link #applySyncTransaction}.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SuppressLint("ExecutorRegistration")
|
||||
@RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS)
|
||||
public int finishTransition(@NonNull IBinder transitionToken,
|
||||
@Nullable WindowContainerTransaction t,
|
||||
@Nullable WindowContainerTransactionCallback callback) {
|
||||
public void finishTransition(@NonNull IBinder transitionToken,
|
||||
@Nullable WindowContainerTransaction t) {
|
||||
try {
|
||||
return getWindowOrganizerController().finishTransition(transitionToken, t,
|
||||
callback != null ? callback.mInterface : null);
|
||||
getWindowOrganizerController().finishTransition(transitionToken, t);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
@@ -186,6 +186,6 @@ public class ActivityEmbeddingController implements Transitions.TransitionHandle
|
||||
if (callback == null) {
|
||||
throw new IllegalStateException("No finish callback found");
|
||||
}
|
||||
callback.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
callback.onTransitionFinished(null /* wct */);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mDesktopModeWindowDecoration.hideResizeVeil();
|
||||
mTransitions.getMainExecutor().execute(
|
||||
() -> finishCallback.onTransitionFinished(null, null));
|
||||
() -> finishCallback.onTransitionFinished(null));
|
||||
}
|
||||
});
|
||||
animator.start();
|
||||
@@ -272,7 +272,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
||||
startT.apply();
|
||||
|
||||
mTransitions.getMainExecutor().execute(
|
||||
() -> finishCallback.onTransitionFinished(null, null));
|
||||
() -> finishCallback.onTransitionFinished(null));
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -324,7 +324,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
||||
mOnAnimationFinishedCallback.accept(finishT);
|
||||
}
|
||||
mTransitions.getMainExecutor().execute(
|
||||
() -> finishCallback.onTransitionFinished(null, null));
|
||||
() -> finishCallback.onTransitionFinished(null));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -378,7 +378,7 @@ public class EnterDesktopTaskTransitionHandler implements Transitions.Transition
|
||||
mOnAnimationFinishedCallback.accept(finishT);
|
||||
}
|
||||
mTransitions.getMainExecutor().execute(
|
||||
() -> finishCallback.onTransitionFinished(null, null));
|
||||
() -> finishCallback.onTransitionFinished(null));
|
||||
}
|
||||
});
|
||||
animator.start();
|
||||
|
||||
@@ -168,7 +168,7 @@ public class ExitDesktopTaskTransitionHandler implements Transitions.TransitionH
|
||||
mOnAnimationFinishedCallback.accept(finishT);
|
||||
}
|
||||
mTransitions.getMainExecutor().execute(
|
||||
() -> finishCallback.onTransitionFinished(null, null));
|
||||
() -> finishCallback.onTransitionFinished(null));
|
||||
}
|
||||
});
|
||||
animator.start();
|
||||
|
||||
@@ -104,7 +104,7 @@ class ToggleResizeDesktopTaskTransitionHandler(
|
||||
.setWindowCrop(leash, endBounds.width(), endBounds.height())
|
||||
.show(leash)
|
||||
windowDecor.hideResizeVeil()
|
||||
finishCallback.onTransitionFinished(null, null)
|
||||
finishCallback.onTransitionFinished(null)
|
||||
boundsAnimator = null
|
||||
}
|
||||
)
|
||||
|
||||
@@ -130,7 +130,7 @@ public class FreeformTaskTransitionHandler
|
||||
if (!animations.isEmpty()) return;
|
||||
mMainExecutor.execute(() -> {
|
||||
mAnimations.remove(transition);
|
||||
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(null /* wct */);
|
||||
});
|
||||
};
|
||||
for (TransitionInfo.Change change : info.getChanges()) {
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.android.wm.shell.keyguard;
|
||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM;
|
||||
import static android.view.WindowManager.KEYGUARD_VISIBILITY_TRANSIT_FLAGS;
|
||||
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
|
||||
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_APPEARING;
|
||||
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_OCCLUDING;
|
||||
import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_UNOCCLUDING;
|
||||
import static android.view.WindowManager.TRANSIT_SLEEP;
|
||||
@@ -169,7 +168,7 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler
|
||||
// Post our finish callback to let startAnimation finish first.
|
||||
mMainExecutor.executeDelayed(() -> {
|
||||
mStartedTransitions.remove(transition);
|
||||
finishCallback.onTransitionFinished(wct, null);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
}, 0);
|
||||
}
|
||||
});
|
||||
@@ -206,7 +205,7 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler
|
||||
// implementing an AIDL interface.
|
||||
Log.wtf(TAG, "RemoteException thrown from KeyguardService transition", e);
|
||||
}
|
||||
nextFinishCallback.onTransitionFinished(null, null);
|
||||
nextFinishCallback.onTransitionFinished(null);
|
||||
} else if (nextInfo.getType() == TRANSIT_SLEEP) {
|
||||
// An empty SLEEP transition comes in as a signal to abort transitions whenever a sleep
|
||||
// token is held. In cases where keyguard is showing, we are running the animation for
|
||||
|
||||
@@ -447,7 +447,7 @@ public class PipTransition extends PipTransitionController {
|
||||
// handler if there is a pending PiP animation.
|
||||
final Transitions.TransitionFinishCallback finishCallback = mFinishCallback;
|
||||
mFinishCallback = null;
|
||||
finishCallback.onTransitionFinished(wct, null /* callback */);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -456,7 +456,7 @@ public class PipTransition extends PipTransitionController {
|
||||
// for example, when app crashes while in PiP and exit transition has not started
|
||||
mCurrentPipTaskToken = null;
|
||||
if (mFinishCallback == null) return;
|
||||
mFinishCallback.onTransitionFinished(null /* wct */, null /* callback */);
|
||||
mFinishCallback.onTransitionFinished(null /* wct */);
|
||||
mFinishCallback = null;
|
||||
mFinishTransaction = null;
|
||||
}
|
||||
@@ -586,7 +586,7 @@ public class PipTransition extends PipTransitionController {
|
||||
final boolean useLocalLeash = activitySc != null;
|
||||
final boolean toFullscreen = pipChange.getEndAbsBounds().equals(
|
||||
mPipBoundsState.getDisplayBounds());
|
||||
mFinishCallback = (wct, wctCB) -> {
|
||||
mFinishCallback = (wct) -> {
|
||||
mPipOrganizer.onExitPipFinished(taskInfo);
|
||||
|
||||
// TODO(b/286346098): remove the OPEN app flicker completely
|
||||
@@ -610,7 +610,7 @@ public class PipTransition extends PipTransitionController {
|
||||
mPipAnimationController.resetAnimatorState();
|
||||
finishTransaction.remove(pipLeash);
|
||||
}
|
||||
finishCallback.onTransitionFinished(wct, wctCB);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
};
|
||||
mFinishTransaction = finishTransaction;
|
||||
|
||||
@@ -750,7 +750,7 @@ public class PipTransition extends PipTransitionController {
|
||||
finishTransaction.setWindowCrop(info.getChanges().get(0).getLeash(),
|
||||
mPipDisplayLayoutState.getDisplayBounds());
|
||||
mPipOrganizer.onExitPipFinished(taskInfo);
|
||||
finishCallback.onTransitionFinished(null, null);
|
||||
finishCallback.onTransitionFinished(null);
|
||||
}
|
||||
|
||||
/** Whether we should handle the given {@link TransitionInfo} animation as entering PIP. */
|
||||
@@ -1045,7 +1045,7 @@ public class PipTransition extends PipTransitionController {
|
||||
startTransaction.apply();
|
||||
|
||||
mPipOrganizer.onExitPipFinished(taskInfo);
|
||||
finishCallback.onTransitionFinished(null, null);
|
||||
finishCallback.onTransitionFinished(null);
|
||||
}
|
||||
|
||||
private void resetPrevPip(@NonNull TransitionInfo.Change prevPipTaskChange,
|
||||
|
||||
@@ -771,7 +771,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler {
|
||||
Slog.e(TAG, "Error sending appeared tasks to recents animation", e);
|
||||
}
|
||||
}
|
||||
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(null /* wct */);
|
||||
}
|
||||
|
||||
/** For now, just set-up a jump-cut to the new activity. */
|
||||
@@ -937,7 +937,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler {
|
||||
}
|
||||
}
|
||||
cleanUp();
|
||||
finishCB.onTransitionFinished(wct.isEmpty() ? null : wct, null /* wctCB */);
|
||||
finishCB.onTransitionFinished(wct.isEmpty() ? null : wct);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -43,7 +43,6 @@ import android.window.RemoteTransition;
|
||||
import android.window.TransitionInfo;
|
||||
import android.window.WindowContainerToken;
|
||||
import android.window.WindowContainerTransaction;
|
||||
import android.window.WindowContainerTransactionCallback;
|
||||
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.common.TransactionPool;
|
||||
@@ -109,7 +108,7 @@ class SplitScreenTransitions {
|
||||
if (pendingTransition.mCanceled) {
|
||||
// The pending transition was canceled, so skip playing animation.
|
||||
startTransaction.apply();
|
||||
onFinish(null /* wct */, null /* wctCB */);
|
||||
onFinish(null /* wct */);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -211,7 +210,7 @@ class SplitScreenTransitions {
|
||||
}
|
||||
}
|
||||
t.apply();
|
||||
onFinish(null /* wct */, null /* wctCB */);
|
||||
onFinish(null /* wct */);
|
||||
}
|
||||
|
||||
/** Play animation for drag divider dismiss transition. */
|
||||
@@ -238,7 +237,7 @@ class SplitScreenTransitions {
|
||||
mAnimations.remove(va);
|
||||
if (animated) {
|
||||
mTransitions.getMainExecutor().execute(() -> {
|
||||
onFinish(null /* wct */, null /* wctCB */);
|
||||
onFinish(null /* wct */);
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -250,7 +249,7 @@ class SplitScreenTransitions {
|
||||
}
|
||||
}
|
||||
startTransaction.apply();
|
||||
onFinish(null /* wct */, null /* wctCB */);
|
||||
onFinish(null /* wct */);
|
||||
}
|
||||
|
||||
/** Play animation for resize transition. */
|
||||
@@ -283,7 +282,7 @@ class SplitScreenTransitions {
|
||||
mAnimations.remove(va);
|
||||
if (animated) {
|
||||
mTransitions.getMainExecutor().execute(() -> {
|
||||
onFinish(null /* wct */, null /* wctCB */);
|
||||
onFinish(null /* wct */);
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -291,7 +290,7 @@ class SplitScreenTransitions {
|
||||
}
|
||||
|
||||
startTransaction.apply();
|
||||
onFinish(null /* wct */, null /* wctCB */);
|
||||
onFinish(null /* wct */);
|
||||
}
|
||||
|
||||
boolean isPendingTransition(IBinder transition) {
|
||||
@@ -391,7 +390,7 @@ class SplitScreenTransitions {
|
||||
if (mPendingResize != null) {
|
||||
mPendingResize.cancel(null);
|
||||
mAnimations.clear();
|
||||
onFinish(null /* wct */, null /* wctCB */);
|
||||
onFinish(null /* wct */);
|
||||
}
|
||||
|
||||
IBinder transition = mTransitions.startTransition(TRANSIT_CHANGE, wct, handler);
|
||||
@@ -450,7 +449,7 @@ class SplitScreenTransitions {
|
||||
}
|
||||
}
|
||||
|
||||
void onFinish(WindowContainerTransaction wct, WindowContainerTransactionCallback wctCB) {
|
||||
void onFinish(WindowContainerTransaction wct) {
|
||||
if (!mAnimations.isEmpty()) return;
|
||||
|
||||
if (wct == null) wct = new WindowContainerTransaction();
|
||||
@@ -470,7 +469,7 @@ class SplitScreenTransitions {
|
||||
|
||||
mOnFinish.run();
|
||||
if (mFinishCallback != null) {
|
||||
mFinishCallback.onTransitionFinished(wct /* wct */, wctCB /* wctCB */);
|
||||
mFinishCallback.onTransitionFinished(wct /* wct */);
|
||||
mFinishCallback = null;
|
||||
}
|
||||
}
|
||||
@@ -495,7 +494,7 @@ class SplitScreenTransitions {
|
||||
mTransactionPool.release(transaction);
|
||||
mTransitions.getMainExecutor().execute(() -> {
|
||||
mAnimations.remove(va);
|
||||
onFinish(null /* wct */, null /* wctCB */);
|
||||
onFinish(null /* wct */);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -404,7 +404,7 @@ public class TaskViewTransitions implements Transitions.TransitionHandler {
|
||||
}
|
||||
// No animation, just show it immediately.
|
||||
startTransaction.apply();
|
||||
finishCallback.onTransitionFinished(wct, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
startNextTransition();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ import android.view.WindowManager;
|
||||
import android.window.TransitionInfo;
|
||||
import android.window.TransitionRequestInfo;
|
||||
import android.window.WindowContainerTransaction;
|
||||
import android.window.WindowContainerTransactionCallback;
|
||||
|
||||
import com.android.internal.protolog.common.ProtoLog;
|
||||
import com.android.wm.shell.common.split.SplitScreenUtils;
|
||||
@@ -124,14 +123,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
||||
mTransition = transition;
|
||||
}
|
||||
|
||||
void joinFinishArgs(WindowContainerTransaction wct,
|
||||
WindowContainerTransactionCallback wctCB) {
|
||||
if (wctCB != null) {
|
||||
// Technically can probably support 1, but don't want to encourage CB usage since
|
||||
// it creates instabliity, so just throw.
|
||||
throw new IllegalArgumentException("Can't mix transitions that require finish"
|
||||
+ " sync callback");
|
||||
}
|
||||
void joinFinishArgs(WindowContainerTransaction wct) {
|
||||
if (wct != null) {
|
||||
if (mFinishWCT == null) {
|
||||
mFinishWCT = wct;
|
||||
@@ -389,12 +381,12 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
||||
info.getChanges().remove(i);
|
||||
}
|
||||
}
|
||||
Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
|
||||
Transitions.TransitionFinishCallback finishCB = (wct) -> {
|
||||
--mixed.mInFlightSubAnimations;
|
||||
mixed.joinFinishArgs(wct, wctCB);
|
||||
mixed.joinFinishArgs(wct);
|
||||
if (mixed.mInFlightSubAnimations > 0) return;
|
||||
mActiveTransitions.remove(mixed);
|
||||
finishCallback.onTransitionFinished(mixed.mFinishWCT, wctCB);
|
||||
finishCallback.onTransitionFinished(mixed.mFinishWCT);
|
||||
};
|
||||
if (pipChange == null) {
|
||||
if (mixed.mLeftoversHandler != null) {
|
||||
@@ -461,15 +453,15 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
||||
return false;
|
||||
}
|
||||
final boolean isGoingHome = homeIsOpening;
|
||||
Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
|
||||
Transitions.TransitionFinishCallback finishCB = (wct) -> {
|
||||
--mixed.mInFlightSubAnimations;
|
||||
mixed.joinFinishArgs(wct, wctCB);
|
||||
mixed.joinFinishArgs(wct);
|
||||
if (mixed.mInFlightSubAnimations > 0) return;
|
||||
mActiveTransitions.remove(mixed);
|
||||
if (isGoingHome) {
|
||||
mSplitHandler.onTransitionAnimationComplete();
|
||||
}
|
||||
finishCallback.onTransitionFinished(mixed.mFinishWCT, wctCB);
|
||||
finishCallback.onTransitionFinished(mixed.mFinishWCT);
|
||||
};
|
||||
if (isGoingHome || mSplitHandler.getSplitItemPosition(pipChange.getLastParent())
|
||||
!= SPLIT_POSITION_UNDEFINED) {
|
||||
@@ -586,12 +578,12 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
||||
// We need to split the transition into 2 parts: the split part and the display part.
|
||||
mixed.mInFlightSubAnimations = 2;
|
||||
|
||||
Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
|
||||
Transitions.TransitionFinishCallback finishCB = (wct) -> {
|
||||
--mixed.mInFlightSubAnimations;
|
||||
mixed.joinFinishArgs(wct, wctCB);
|
||||
mixed.joinFinishArgs(wct);
|
||||
if (mixed.mInFlightSubAnimations > 0) return;
|
||||
mActiveTransitions.remove(mixed);
|
||||
finishCallback.onTransitionFinished(mixed.mFinishWCT, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(mixed.mFinishWCT);
|
||||
};
|
||||
|
||||
// Dispatch the display change. This will most-likely be taken by the default handler.
|
||||
@@ -614,7 +606,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
||||
@NonNull Transitions.TransitionFinishCallback finishCallback) {
|
||||
// Split-screen is only interested in the recents transition finishing (and merging), so
|
||||
// just wrap finish and start recents animation directly.
|
||||
Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
|
||||
Transitions.TransitionFinishCallback finishCB = (wct) -> {
|
||||
mixed.mInFlightSubAnimations = 0;
|
||||
mActiveTransitions.remove(mixed);
|
||||
// If pair-to-pair switching, the post-recents clean-up isn't needed.
|
||||
@@ -626,7 +618,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
||||
mSplitHandler.onRecentsPairToPairAnimationFinish(wct);
|
||||
}
|
||||
mSplitHandler.onTransitionAnimationComplete();
|
||||
finishCallback.onTransitionFinished(wct, wctCB);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
};
|
||||
mixed.mInFlightSubAnimations = 1;
|
||||
mSplitHandler.onRecentsInSplitAnimationStart(info);
|
||||
@@ -644,11 +636,11 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
||||
@NonNull SurfaceControl.Transaction startTransaction,
|
||||
@NonNull SurfaceControl.Transaction finishTransaction,
|
||||
@NonNull Transitions.TransitionFinishCallback finishCallback) {
|
||||
final Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
|
||||
final Transitions.TransitionFinishCallback finishCB = (wct) -> {
|
||||
mixed.mInFlightSubAnimations--;
|
||||
if (mixed.mInFlightSubAnimations == 0) {
|
||||
mActiveTransitions.remove(mixed);
|
||||
finishCallback.onTransitionFinished(wct, wctCB);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
}
|
||||
};
|
||||
mixed.mInFlightSubAnimations++;
|
||||
@@ -693,11 +685,11 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler,
|
||||
@NonNull SurfaceControl.Transaction startTransaction,
|
||||
@NonNull SurfaceControl.Transaction finishTransaction,
|
||||
@NonNull Transitions.TransitionFinishCallback finishCallback) {
|
||||
final Transitions.TransitionFinishCallback finishCB = (wct, wctCB) -> {
|
||||
final Transitions.TransitionFinishCallback finishCB = (wct) -> {
|
||||
mixed.mInFlightSubAnimations--;
|
||||
if (mixed.mInFlightSubAnimations > 0) return;
|
||||
mActiveTransitions.remove(mixed);
|
||||
finishCallback.onTransitionFinished(wct, wctCB);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
};
|
||||
mixed.mInFlightSubAnimations = 1;
|
||||
// Sync pip state.
|
||||
|
||||
@@ -300,7 +300,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
|
||||
// immediately finishes since there is no animation for screen-wake.
|
||||
if (info.getType() == WindowManager.TRANSIT_WAKE && !info.isKeyguardGoingAway()) {
|
||||
startTransaction.apply();
|
||||
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(null /* wct */);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -309,7 +309,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
|
||||
|| (info.getFlags() & WindowManager.TRANSIT_FLAG_INVISIBLE) != 0) {
|
||||
startTransaction.apply();
|
||||
finishTransaction.apply();
|
||||
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(null /* wct */);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -323,7 +323,7 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler {
|
||||
final Runnable onAnimFinish = () -> {
|
||||
if (!animations.isEmpty()) return;
|
||||
mAnimations.remove(transition);
|
||||
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(null /* wct */);
|
||||
};
|
||||
|
||||
final List<Consumer<SurfaceControl.Transaction>> postStartTransactionCallbacks =
|
||||
|
||||
@@ -68,7 +68,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
|
||||
final IBinder.DeathRecipient remoteDied = () -> {
|
||||
Log.e(Transitions.TAG, "Remote transition died, finishing");
|
||||
mMainExecutor.execute(
|
||||
() -> finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */));
|
||||
() -> finishCallback.onTransitionFinished(null /* wct */));
|
||||
};
|
||||
IRemoteTransitionFinishedCallback cb = new IRemoteTransitionFinishedCallback.Stub() {
|
||||
@Override
|
||||
@@ -81,7 +81,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
|
||||
finishTransaction.merge(sct);
|
||||
}
|
||||
mMainExecutor.execute(() -> {
|
||||
finishCallback.onTransitionFinished(wct, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -104,7 +104,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
|
||||
if (mRemote.asBinder() != null) {
|
||||
mRemote.asBinder().unlinkToDeath(remoteDied, 0 /* flags */);
|
||||
}
|
||||
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(null /* wct */);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -122,8 +122,7 @@ public class OneShotRemoteHandler implements Transitions.TransitionHandler {
|
||||
// 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, null /* wctCB */));
|
||||
mMainExecutor.execute(() -> finishCallback.onTransitionFinished(wct));
|
||||
}
|
||||
};
|
||||
try {
|
||||
|
||||
@@ -133,7 +133,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
|
||||
}
|
||||
mMainExecutor.execute(() -> {
|
||||
mRequestedRemotes.remove(transition);
|
||||
finishCallback.onTransitionFinished(wct, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -153,8 +153,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
|
||||
Log.e(Transitions.TAG, "Error running remote transition.", e);
|
||||
unhandleDeath(remote.asBinder(), finishCallback);
|
||||
mRequestedRemotes.remove(transition);
|
||||
mMainExecutor.execute(
|
||||
() -> finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */));
|
||||
mMainExecutor.execute(() -> finishCallback.onTransitionFinished(null /* wct */));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -210,7 +209,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
|
||||
+ "that the mergeTarget's RemoteTransition impl erroneously "
|
||||
+ "accepted/ran the merge request after finishing the mergeTarget");
|
||||
}
|
||||
finishCallback.onTransitionFinished(wct, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(wct);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -316,8 +315,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler {
|
||||
}
|
||||
}
|
||||
for (int i = mPendingFinishCallbacks.size() - 1; i >= 0; --i) {
|
||||
mPendingFinishCallbacks.get(i).onTransitionFinished(
|
||||
null /* wct */, null /* wctCB */);
|
||||
mPendingFinishCallbacks.get(i).onTransitionFinished(null /* wct */);
|
||||
}
|
||||
mPendingFinishCallbacks.clear();
|
||||
});
|
||||
|
||||
@@ -43,7 +43,7 @@ class SleepHandler implements Transitions.TransitionHandler {
|
||||
@NonNull Transitions.TransitionFinishCallback finishCallback) {
|
||||
mSleepTransitions.remove(transition);
|
||||
startTransaction.apply();
|
||||
finishCallback.onTransitionFinished(null, null);
|
||||
finishCallback.onTransitionFinished(null);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,6 @@ import android.window.TransitionInfo;
|
||||
import android.window.TransitionMetrics;
|
||||
import android.window.TransitionRequestInfo;
|
||||
import android.window.WindowContainerTransaction;
|
||||
import android.window.WindowContainerTransactionCallback;
|
||||
import android.window.WindowOrganizer;
|
||||
|
||||
import androidx.annotation.BinderThread;
|
||||
@@ -829,7 +828,7 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
ready.mStartT.apply();
|
||||
}
|
||||
// finish now since there's nothing to animate. Calls back into processReadyQueue
|
||||
onFinish(ready, null, null);
|
||||
onFinish(ready, null);
|
||||
return;
|
||||
}
|
||||
playTransition(ready);
|
||||
@@ -849,7 +848,7 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
+ " in case they can be merged", ready, playing);
|
||||
mTracer.logMergeRequested(ready.mInfo.getDebugId(), playing.mInfo.getDebugId());
|
||||
playing.mHandler.mergeAnimation(ready.mToken, ready.mInfo, ready.mStartT,
|
||||
playing.mToken, (wct, cb) -> onMerged(playing, ready));
|
||||
playing.mToken, (wct) -> onMerged(playing, ready));
|
||||
}
|
||||
|
||||
private void onMerged(@NonNull ActiveTransition playing, @NonNull ActiveTransition merged) {
|
||||
@@ -899,7 +898,7 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " try firstHandler %s",
|
||||
active.mHandler);
|
||||
boolean consumed = active.mHandler.startAnimation(active.mToken, active.mInfo,
|
||||
active.mStartT, active.mFinishT, (wct, cb) -> onFinish(active, wct, cb));
|
||||
active.mStartT, active.mFinishT, (wct) -> onFinish(active, wct));
|
||||
if (consumed) {
|
||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " animated by firstHandler");
|
||||
mTracer.logDispatched(active.mInfo.getDebugId(), active.mHandler);
|
||||
@@ -908,7 +907,7 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
}
|
||||
// Otherwise give every other handler a chance
|
||||
active.mHandler = dispatchTransition(active.mToken, active.mInfo, active.mStartT,
|
||||
active.mFinishT, (wct, cb) -> onFinish(active, wct, cb), active.mHandler);
|
||||
active.mFinishT, (wct) -> onFinish(active, wct), active.mHandler);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -985,8 +984,7 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
}
|
||||
|
||||
private void onFinish(ActiveTransition active,
|
||||
@Nullable WindowContainerTransaction wct,
|
||||
@Nullable WindowContainerTransactionCallback wctCB) {
|
||||
@Nullable WindowContainerTransaction wct) {
|
||||
final Track track = mTracks.get(active.getTrack());
|
||||
if (track.mActiveTransition != active) {
|
||||
Log.e(TAG, "Trying to finish a non-running transition. Either remote crashed or "
|
||||
@@ -1035,11 +1033,11 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
// Now perform all the finish callbacks (starting with the playing one and then all the
|
||||
// transitions merged into it).
|
||||
releaseSurfaces(active.mInfo);
|
||||
mOrganizer.finishTransition(active.mToken, wct, wctCB);
|
||||
mOrganizer.finishTransition(active.mToken, wct);
|
||||
if (active.mMerged != null) {
|
||||
for (int iM = 0; iM < active.mMerged.size(); ++iM) {
|
||||
ActiveTransition merged = active.mMerged.get(iM);
|
||||
mOrganizer.finishTransition(merged.mToken, null /* wct */, null /* wctCB */);
|
||||
mOrganizer.finishTransition(merged.mToken, null /* wct */);
|
||||
releaseSurfaces(merged.mInfo);
|
||||
}
|
||||
active.mMerged.clear();
|
||||
@@ -1178,7 +1176,7 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
forceFinish.mHandler.onTransitionConsumed(
|
||||
forceFinish.mToken, true /* aborted */, null /* finishTransaction */);
|
||||
}
|
||||
onFinish(forceFinish, null, null);
|
||||
onFinish(forceFinish, null);
|
||||
}
|
||||
}
|
||||
if (track.isIdle() || mReadyDuringSync.isEmpty()) {
|
||||
@@ -1198,7 +1196,7 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " Attempt to merge sync %s"
|
||||
+ " into %s via a SLEEP proxy", nextSync, playing);
|
||||
playing.mHandler.mergeAnimation(nextSync.mToken, dummyInfo, dummyT,
|
||||
playing.mToken, (wct, cb) -> {});
|
||||
playing.mToken, (wct) -> {});
|
||||
// it's possible to complete immediately. If that happens, just repeat the signal
|
||||
// loop until we either finish everything or start playing an animation that isn't
|
||||
// finishing immediately.
|
||||
@@ -1226,11 +1224,8 @@ public class Transitions implements RemoteCallable<Transitions>,
|
||||
* The transition must not touch the surfaces after this has been called.
|
||||
*
|
||||
* @param wct A WindowContainerTransaction to run along with the transition clean-up.
|
||||
* @param wctCB A sync callback that will be run when the transition clean-up is done and
|
||||
* wct has been applied.
|
||||
*/
|
||||
void onTransitionFinished(@Nullable WindowContainerTransaction wct,
|
||||
@Nullable WindowContainerTransactionCallback wctCB);
|
||||
void onTransitionFinished(@Nullable WindowContainerTransaction wct);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -169,7 +169,7 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene
|
||||
animator.stop();
|
||||
}
|
||||
|
||||
mFinishCallback.onTransitionFinished(null, null);
|
||||
mFinishCallback.onTransitionFinished(null);
|
||||
mFinishCallback = null;
|
||||
mTransition = null;
|
||||
}
|
||||
@@ -193,7 +193,7 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene
|
||||
}
|
||||
// Apply changes happening during the unfold animation immediately
|
||||
t.apply();
|
||||
finishCallback.onTransitionFinished(null, null);
|
||||
finishCallback.onTransitionFinished(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ public class VeiledResizeTaskPositioner implements DragPositioningCallback,
|
||||
startTransaction.apply();
|
||||
mDesktopWindowDecoration.hideResizeVeil();
|
||||
mCtrlType = CTRL_TYPE_UNDEFINED;
|
||||
finishCallback.onTransitionFinished(null, null);
|
||||
finishCallback.onTransitionFinished(null);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ public class ActivityEmbeddingAnimationRunnerTests extends ActivityEmbeddingAnim
|
||||
.build();
|
||||
final Animator animator = mAnimRunner.createAnimator(
|
||||
info, mStartTransaction, mFinishTransaction,
|
||||
() -> mFinishCallback.onTransitionFinished(null /* wct */, null /* wctCB */),
|
||||
() -> mFinishCallback.onTransitionFinished(null /* wct */),
|
||||
new ArrayList());
|
||||
|
||||
// The animation should be empty when it is behind starting window.
|
||||
|
||||
@@ -75,7 +75,7 @@ abstract class ActivityEmbeddingAnimationTestBase extends ShellTestCase {
|
||||
assertNotNull(mAnimRunner);
|
||||
mAnimSpec = mAnimRunner.mAnimationSpec;
|
||||
assertNotNull(mAnimSpec);
|
||||
mFinishCallback = (wct, wctCB) -> {};
|
||||
mFinishCallback = (wct) -> {};
|
||||
spyOn(mController);
|
||||
spyOn(mAnimRunner);
|
||||
spyOn(mAnimSpec);
|
||||
|
||||
@@ -217,12 +217,10 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
|
||||
doReturn(animator).when(mAnimRunner).createAnimator(any(), any(), any(), any(), any());
|
||||
mController.startAnimation(mTransition, info, mStartTransaction,
|
||||
mFinishTransaction, mFinishCallback);
|
||||
verify(mFinishCallback, never()).onTransitionFinished(any(), any());
|
||||
verify(mFinishCallback, never()).onTransitionFinished(any());
|
||||
mController.mergeAnimation(mTransition, info, new SurfaceControl.Transaction(),
|
||||
mTransition,
|
||||
(wct, cb) -> {
|
||||
});
|
||||
verify(mFinishCallback).onTransitionFinished(any(), any());
|
||||
mTransition, (wct) -> {});
|
||||
verify(mFinishCallback).onTransitionFinished(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -238,9 +236,9 @@ public class ActivityEmbeddingControllerTests extends ActivityEmbeddingAnimation
|
||||
mController.startAnimation(mTransition, info, mStartTransaction,
|
||||
mFinishTransaction, mFinishCallback);
|
||||
|
||||
verify(mFinishCallback, never()).onTransitionFinished(any(), any());
|
||||
verify(mFinishCallback, never()).onTransitionFinished(any());
|
||||
mController.onAnimationFinished(mTransition);
|
||||
verify(mFinishCallback).onTransitionFinished(any(), any());
|
||||
verify(mFinishCallback).onTransitionFinished(any());
|
||||
|
||||
// Should not call finish when the finish has already been called.
|
||||
assertThrows(IllegalStateException.class,
|
||||
|
||||
@@ -176,7 +176,7 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
assertEquals(1, mDefaultHandler.activeCount());
|
||||
mDefaultHandler.finishAll();
|
||||
mMainExecutor.flushAll();
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), any(), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -299,7 +299,7 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
assertTrue(remoteCalled[0]);
|
||||
mDefaultHandler.finishAll();
|
||||
mMainExecutor.flushAll();
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), eq(remoteFinishWCT), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), eq(remoteFinishWCT));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -449,7 +449,7 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
assertTrue(remoteCalled[0]);
|
||||
mDefaultHandler.finishAll();
|
||||
mMainExecutor.flushAll();
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), any(), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -524,20 +524,20 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
// default handler doesn't merge by default, so it shouldn't increment active count.
|
||||
assertEquals(1, mDefaultHandler.activeCount());
|
||||
assertEquals(0, mDefaultHandler.mergeCount());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken1), any(), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any(), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken1), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any());
|
||||
|
||||
mDefaultHandler.finishAll();
|
||||
mMainExecutor.flushAll();
|
||||
// first transition finished
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any(), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any(), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any());
|
||||
// But now the "queued" transition is running
|
||||
assertEquals(1, mDefaultHandler.activeCount());
|
||||
|
||||
mDefaultHandler.finishAll();
|
||||
mMainExecutor.flushAll();
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any(), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -565,15 +565,15 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
// it should still only have 1 active, but then show 1 merged
|
||||
assertEquals(1, mDefaultHandler.activeCount());
|
||||
assertEquals(1, mDefaultHandler.mergeCount());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken1), any(), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken1), any());
|
||||
// We don't tell organizer it is finished yet (since we still want to maintain ordering)
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any(), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any());
|
||||
|
||||
mDefaultHandler.finishAll();
|
||||
mMainExecutor.flushAll();
|
||||
// transition + merged all finished.
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any(), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any(), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any());
|
||||
// Make sure nothing was queued
|
||||
assertEquals(0, mDefaultHandler.activeCount());
|
||||
}
|
||||
@@ -599,8 +599,7 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
requestStartTransition(transitions, transitTokenNotReady);
|
||||
|
||||
mDefaultHandler.setSimulateMerge(true);
|
||||
mDefaultHandler.mFinishes.get(0).second.onTransitionFinished(
|
||||
null /* wct */, null /* wctCB */);
|
||||
mDefaultHandler.mFinishes.get(0).second.onTransitionFinished(null /* wct */);
|
||||
|
||||
// Make sure that the non-ready transition is not merged.
|
||||
assertEquals(0, mDefaultHandler.mergeCount());
|
||||
@@ -823,8 +822,8 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
mDefaultHandler.finishAll();
|
||||
mMainExecutor.flushAll();
|
||||
// first transition finished
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any(), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any(), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken1), any());
|
||||
verify(mOrganizer, times(0)).finishTransition(eq(transitToken2), any());
|
||||
// But now the "queued" transition is running
|
||||
assertEquals(1, mDefaultHandler.activeCount());
|
||||
|
||||
@@ -835,7 +834,7 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
|
||||
mDefaultHandler.finishAll();
|
||||
mMainExecutor.flushAll();
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any(), any());
|
||||
verify(mOrganizer, times(1)).finishTransition(eq(transitToken2), any());
|
||||
|
||||
// runnable2 and runnable3 are executed after the second transition finishes because there
|
||||
// are no other active transitions, runnable1 isn't executed again.
|
||||
@@ -1449,13 +1448,13 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
if (mFinishOnSync && info.getType() == TRANSIT_SLEEP) {
|
||||
for (int i = 0; i < mFinishes.size(); ++i) {
|
||||
if (mFinishes.get(i).first != mergeTarget) continue;
|
||||
mFinishes.remove(i).second.onTransitionFinished(null, null);
|
||||
mFinishes.remove(i).second.onTransitionFinished(null);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!(mSimulateMerge || mShouldMerge.contains(transition))) return;
|
||||
mMerged.add(transition);
|
||||
finishCallback.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
finishCallback.onTransitionFinished(null /* wct */);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -1478,7 +1477,7 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
mFinishes;
|
||||
mFinishes = new ArrayList<>();
|
||||
for (int i = finishes.size() - 1; i >= 0; --i) {
|
||||
finishes.get(i).second.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
finishes.get(i).second.onTransitionFinished(null /* wct */);
|
||||
}
|
||||
mShouldMerge.clear();
|
||||
}
|
||||
@@ -1486,7 +1485,7 @@ public class ShellTransitionTests extends ShellTestCase {
|
||||
void finishOne() {
|
||||
Pair<IBinder, Transitions.TransitionFinishCallback> fin = mFinishes.remove(0);
|
||||
mMerged.clear();
|
||||
fin.second.onTransitionFinished(null /* wct */, null /* wctCB */);
|
||||
fin.second.onTransitionFinished(null /* wct */);
|
||||
}
|
||||
|
||||
int activeCount() {
|
||||
|
||||
@@ -382,18 +382,13 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public int finishTransition(@NonNull IBinder transitionToken,
|
||||
@Nullable WindowContainerTransaction t,
|
||||
@Nullable IWindowContainerTransactionCallback callback) {
|
||||
public void finishTransition(@NonNull IBinder transitionToken,
|
||||
@Nullable WindowContainerTransaction t) {
|
||||
enforceTaskPermission("finishTransition()");
|
||||
final CallerInfo caller = new CallerInfo();
|
||||
final long ident = Binder.clearCallingIdentity();
|
||||
try {
|
||||
synchronized (mGlobalLock) {
|
||||
int syncId = -1;
|
||||
if (t != null && callback != null) {
|
||||
syncId = startSyncWithOrganizer(callback);
|
||||
}
|
||||
final Transition transition = Transition.fromBinder(transitionToken);
|
||||
// apply the incoming transaction before finish in case it alters the visibility
|
||||
// of the participants.
|
||||
@@ -402,14 +397,10 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
|
||||
// changes of the transition participants will only set visible-requested
|
||||
// and still let finishTransition handle the participants.
|
||||
mTransitionController.mFinishingTransition = transition;
|
||||
applyTransaction(t, syncId, null /*transition*/, caller, transition);
|
||||
applyTransaction(t, -1 /* syncId */, null /*transition*/, caller, transition);
|
||||
}
|
||||
mTransitionController.finishTransition(transition);
|
||||
mTransitionController.mFinishingTransition = null;
|
||||
if (syncId >= 0) {
|
||||
setSyncReady(syncId);
|
||||
}
|
||||
return syncId;
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(ident);
|
||||
|
||||
Reference in New Issue
Block a user