Loading services/core/java/com/android/server/wm/DisplayContent.java +1 −1 Original line number Diff line number Diff line Loading @@ -3353,7 +3353,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } } mWmService.mLatencyTracker.onActionStart(ACTION_ROTATE_SCREEN); controller.mTransitionMetricsReporter.associate(t, controller.mTransitionMetricsReporter.associate(t.getToken(), startTime -> mWmService.mLatencyTracker.onActionEnd(ACTION_ROTATE_SCREEN)); startAsyncRotation(false /* shouldDebounce */); } Loading services/core/java/com/android/server/wm/Transition.java +35 −7 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ import com.android.server.wm.utils.RotationAnimationUtils; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.Objects; Loading @@ -107,7 +108,7 @@ import java.util.function.Predicate; * Represents a logical transition. * @see TransitionController */ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListener { class Transition implements BLASTSyncEngine.TransactionReadyListener { private static final String TAG = "Transition"; private static final String TRACE_NAME_PLAY_TRANSITION = "PlayTransition"; Loading Loading @@ -158,6 +159,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe private @TransitionFlags int mFlags; private final TransitionController mController; private final BLASTSyncEngine mSyncEngine; private final Token mToken; private RemoteTransition mRemoteTransition = null; /** Only use for clean-up after binder death! */ Loading Loading @@ -220,10 +222,26 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe mFlags = flags; mController = controller; mSyncEngine = syncEngine; mToken = new Token(this); controller.mTransitionTracer.logState(this); } @Nullable static Transition fromBinder(@NonNull IBinder token) { try { return ((Token) token).mTransition.get(); } catch (ClassCastException e) { Slog.w(TAG, "Invalid transition token: " + token, e); return null; } } @NonNull IBinder getToken() { return mToken; } void addFlag(int flag) { mFlags |= flag; } Loading Loading @@ -1034,7 +1052,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, "Calling onTransitionReady: %s", info); mController.getTransitionPlayer().onTransitionReady( this, info, transaction, mFinishTransaction); mToken, info, transaction, mFinishTransaction); if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER)) { Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, TRACE_NAME_PLAY_TRANSITION, System.identityHashCode(this)); Loading Loading @@ -1067,7 +1085,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe if (mFinishTransaction != null) { mFinishTransaction.apply(); } mController.finishTransition(this); mController.finishTransition(mToken); } /** @see RecentsAnimationController#attachNavigationBarToApp */ Loading Loading @@ -1850,10 +1868,6 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe return isCollecting() && mSyncId >= 0; } static Transition fromBinder(IBinder binder) { return (Transition) binder; } @VisibleForTesting static class ChangeInfo { private static final int FLAG_NONE = 0; Loading Loading @@ -2345,4 +2359,18 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe } } } private static class Token extends Binder { final WeakReference<Transition> mTransition; Token(Transition transition) { mTransition = new WeakReference<>(transition); } @Override public String toString() { return "Token{" + Integer.toHexString(System.identityHashCode(this)) + " " + mTransition.get() + "}"; } } } services/core/java/com/android/server/wm/TransitionController.java +3 −2 Original line number Diff line number Diff line Loading @@ -458,8 +458,9 @@ class TransitionController { info = new ActivityManager.RunningTaskInfo(); startTask.fillTaskInfo(info); } mTransitionPlayer.requestStartTransition(transition, new TransitionRequestInfo( transition.mType, info, remoteTransition, displayChange)); mTransitionPlayer.requestStartTransition(transition.getToken(), new TransitionRequestInfo(transition.mType, info, remoteTransition, displayChange)); transition.setRemoteTransition(remoteTransition); } catch (RemoteException e) { Slog.e(TAG, "Error requesting transition", e); Loading services/core/java/com/android/server/wm/WindowOrganizerController.java +2 −2 Original line number Diff line number Diff line Loading @@ -307,7 +307,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub nextTransition.setAllReady(); } }); return nextTransition; return nextTransition.getToken(); } transition = mTransitionController.createTransition(type); } Loading @@ -316,7 +316,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub if (needsSetReady) { transition.setAllReady(); } return transition; return transition.getToken(); } } finally { Binder.restoreCallingIdentity(ident); Loading services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -369,7 +369,7 @@ public class WallpaperControllerTests extends WindowTestsBase { final SurfaceControl.Transaction t = mock(SurfaceControl.Transaction.class); token.finishSync(t, false /* cancel */); transit.onTransactionReady(transit.getSyncId(), t); dc.mTransitionController.finishTransition(transit); dc.mTransitionController.finishTransition(transit.getToken()); assertFalse(wallpaperWindow.isVisible()); assertFalse(token.isVisible()); Loading Loading
services/core/java/com/android/server/wm/DisplayContent.java +1 −1 Original line number Diff line number Diff line Loading @@ -3353,7 +3353,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } } mWmService.mLatencyTracker.onActionStart(ACTION_ROTATE_SCREEN); controller.mTransitionMetricsReporter.associate(t, controller.mTransitionMetricsReporter.associate(t.getToken(), startTime -> mWmService.mLatencyTracker.onActionEnd(ACTION_ROTATE_SCREEN)); startAsyncRotation(false /* shouldDebounce */); } Loading
services/core/java/com/android/server/wm/Transition.java +35 −7 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ import com.android.server.wm.utils.RotationAnimationUtils; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.Objects; Loading @@ -107,7 +108,7 @@ import java.util.function.Predicate; * Represents a logical transition. * @see TransitionController */ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListener { class Transition implements BLASTSyncEngine.TransactionReadyListener { private static final String TAG = "Transition"; private static final String TRACE_NAME_PLAY_TRANSITION = "PlayTransition"; Loading Loading @@ -158,6 +159,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe private @TransitionFlags int mFlags; private final TransitionController mController; private final BLASTSyncEngine mSyncEngine; private final Token mToken; private RemoteTransition mRemoteTransition = null; /** Only use for clean-up after binder death! */ Loading Loading @@ -220,10 +222,26 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe mFlags = flags; mController = controller; mSyncEngine = syncEngine; mToken = new Token(this); controller.mTransitionTracer.logState(this); } @Nullable static Transition fromBinder(@NonNull IBinder token) { try { return ((Token) token).mTransition.get(); } catch (ClassCastException e) { Slog.w(TAG, "Invalid transition token: " + token, e); return null; } } @NonNull IBinder getToken() { return mToken; } void addFlag(int flag) { mFlags |= flag; } Loading Loading @@ -1034,7 +1052,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe ProtoLog.v(ProtoLogGroup.WM_DEBUG_WINDOW_TRANSITIONS, "Calling onTransitionReady: %s", info); mController.getTransitionPlayer().onTransitionReady( this, info, transaction, mFinishTransaction); mToken, info, transaction, mFinishTransaction); if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER)) { Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, TRACE_NAME_PLAY_TRANSITION, System.identityHashCode(this)); Loading Loading @@ -1067,7 +1085,7 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe if (mFinishTransaction != null) { mFinishTransaction.apply(); } mController.finishTransition(this); mController.finishTransition(mToken); } /** @see RecentsAnimationController#attachNavigationBarToApp */ Loading Loading @@ -1850,10 +1868,6 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe return isCollecting() && mSyncId >= 0; } static Transition fromBinder(IBinder binder) { return (Transition) binder; } @VisibleForTesting static class ChangeInfo { private static final int FLAG_NONE = 0; Loading Loading @@ -2345,4 +2359,18 @@ class Transition extends Binder implements BLASTSyncEngine.TransactionReadyListe } } } private static class Token extends Binder { final WeakReference<Transition> mTransition; Token(Transition transition) { mTransition = new WeakReference<>(transition); } @Override public String toString() { return "Token{" + Integer.toHexString(System.identityHashCode(this)) + " " + mTransition.get() + "}"; } } }
services/core/java/com/android/server/wm/TransitionController.java +3 −2 Original line number Diff line number Diff line Loading @@ -458,8 +458,9 @@ class TransitionController { info = new ActivityManager.RunningTaskInfo(); startTask.fillTaskInfo(info); } mTransitionPlayer.requestStartTransition(transition, new TransitionRequestInfo( transition.mType, info, remoteTransition, displayChange)); mTransitionPlayer.requestStartTransition(transition.getToken(), new TransitionRequestInfo(transition.mType, info, remoteTransition, displayChange)); transition.setRemoteTransition(remoteTransition); } catch (RemoteException e) { Slog.e(TAG, "Error requesting transition", e); Loading
services/core/java/com/android/server/wm/WindowOrganizerController.java +2 −2 Original line number Diff line number Diff line Loading @@ -307,7 +307,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub nextTransition.setAllReady(); } }); return nextTransition; return nextTransition.getToken(); } transition = mTransitionController.createTransition(type); } Loading @@ -316,7 +316,7 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub if (needsSetReady) { transition.setAllReady(); } return transition; return transition.getToken(); } } finally { Binder.restoreCallingIdentity(ident); Loading
services/tests/wmtests/src/com/android/server/wm/WallpaperControllerTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -369,7 +369,7 @@ public class WallpaperControllerTests extends WindowTestsBase { final SurfaceControl.Transaction t = mock(SurfaceControl.Transaction.class); token.finishSync(t, false /* cancel */); transit.onTransactionReady(transit.getSyncId(), t); dc.mTransitionController.finishTransition(transit); dc.mTransitionController.finishTransition(transit.getToken()); assertFalse(wallpaperWindow.isVisible()); assertFalse(token.isVisible()); Loading