Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46d182f9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Use CounterRotator for wallpaper animation targets when unlocking" into...

Merge "Use CounterRotator for wallpaper animation targets when unlocking" into udc-dev am: 247df587 am: a78af2d5 am: c0538131

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



Change-Id: If6bce77e07879a151defe3c82079dcc8193bf082
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents d04681ff c0538131
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -185,6 +185,9 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler
                        @Override
                        public void onTransitionFinished(
                                WindowContainerTransaction wct, SurfaceControl.Transaction sct) {
                            if (sct != null) {
                                finishTransaction.merge(sct);
                            }
                            mMainExecutor.execute(() -> {
                                mStartedTransitions.remove(transition);
                                finishCallback.onTransitionFinished(wct, null);
+0 −3
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.wm.shell.flicker.splitscreen

import android.platform.test.annotations.Postsubmit
import android.tools.common.NavBar
import android.tools.common.Rotation
import android.tools.common.flicker.subject.region.RegionSubject
import android.tools.device.flicker.junit.FlickerParametersRunnerFactory
import android.tools.device.flicker.legacy.FlickerBuilder
@@ -105,8 +104,6 @@ class UnlockKeyguardToSplitScreen(override val flicker: FlickerTest) :
        @JvmStatic
        fun getParams(): List<FlickerTest> {
            return FlickerTestFactory.nonRotationTests(
                    // TODO(b/283963801) address entireScreenCovered test faliure in landscape.
                    supportedRotations = listOf(Rotation.ROTATION_0),
                    supportedNavigationModes = listOf(NavBar.MODE_GESTURAL)
            )
        }
+37 −4
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_OCCLUDE;
import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_OCCLUDE_BY_DREAM;
import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_UNOCCLUDE;
import static android.view.WindowManager.TRANSIT_OLD_NONE;
import static android.view.WindowManager.TRANSIT_TO_BACK;
import static android.view.WindowManager.TransitionFlags;
import static android.view.WindowManager.TransitionOldType;
import static android.view.WindowManager.TransitionType;
@@ -49,6 +50,7 @@ import android.os.RemoteException;
import android.os.Trace;
import android.util.ArrayMap;
import android.util.Log;
import android.util.RotationUtils;
import android.util.Slog;
import android.view.IRemoteAnimationFinishedCallback;
import android.view.IRemoteAnimationRunner;
@@ -73,6 +75,7 @@ import com.android.systemui.SystemUIApplication;
import com.android.systemui.settings.DisplayTracker;
import com.android.wm.shell.transition.ShellTransitions;
import com.android.wm.shell.transition.Transitions;
import com.android.wm.shell.util.CounterRotator;
import com.android.wm.shell.util.TransitionUtil;

import java.util.ArrayList;
@@ -103,7 +106,8 @@ public class KeyguardService extends Service {
    }

    private static RemoteAnimationTarget[] wrap(TransitionInfo info, boolean wallpapers,
            SurfaceControl.Transaction t, ArrayMap<SurfaceControl, SurfaceControl> leashMap) {
            SurfaceControl.Transaction t, ArrayMap<SurfaceControl, SurfaceControl> leashMap,
            CounterRotator counterWallpaper) {
        final ArrayList<RemoteAnimationTarget> out = new ArrayList<>();
        for (int i = 0; i < info.getChanges().size(); i++) {
            boolean changeIsWallpaper =
@@ -133,6 +137,25 @@ public class KeyguardService extends Service {
                    (change.getFlags() & TransitionInfo.FLAG_SHOW_WALLPAPER) != 0,
                    info, t, leashMap);

            if (changeIsWallpaper) {
                int rotateDelta = RotationUtils.deltaRotation(change.getStartRotation(),
                        change.getEndRotation());
                if (rotateDelta != 0 && change.getParent() != null
                        && change.getMode() == TRANSIT_TO_BACK) {
                    final TransitionInfo.Change parent = info.getChange(change.getParent());
                    if (parent != null) {
                        float displayW = parent.getEndAbsBounds().width();
                        float displayH = parent.getEndAbsBounds().height();
                        counterWallpaper.setup(t, parent.getLeash(), rotateDelta, displayW,
                                displayH);
                    }
                    if (counterWallpaper.getSurface() != null) {
                        t.setLayer(counterWallpaper.getSurface(), -1);
                        counterWallpaper.addChild(t, leashMap.get(change.getLeash()));
                    }
                }
            }

            out.add(target);
        }
        return out.toArray(new RemoteAnimationTarget[out.size()]);
@@ -163,6 +186,8 @@ public class KeyguardService extends Service {
        return new IRemoteTransition.Stub() {

            private final ArrayMap<SurfaceControl, SurfaceControl> mLeashMap = new ArrayMap<>();
            private final CounterRotator mCounterRotator = new CounterRotator();


            @GuardedBy("mLeashMap")
            private IRemoteTransitionFinishedCallback mFinishCallback = null;
@@ -175,9 +200,9 @@ public class KeyguardService extends Service {

                synchronized (mLeashMap) {
                    final RemoteAnimationTarget[] apps =
                            wrap(info, false /* wallpapers */, t, mLeashMap);
                            wrap(info, false /* wallpapers */, t, mLeashMap, mCounterRotator);
                    final RemoteAnimationTarget[] wallpapers =
                            wrap(info, true /* wallpapers */, t, mLeashMap);
                            wrap(info, true /* wallpapers */, t, mLeashMap, mCounterRotator);
                    final RemoteAnimationTarget[] nonApps = new RemoteAnimationTarget[0];

                    // Set alpha back to 1 for the independent changes because we will be animating
@@ -231,11 +256,19 @@ public class KeyguardService extends Service {

            @GuardedBy("mLeashMap")
            private void finish() throws RemoteException {
                SurfaceControl.Transaction finishTransaction = null;
                if (mCounterRotator.getSurface() != null
                        && mCounterRotator.getSurface().isValid()) {
                    finishTransaction = new SurfaceControl.Transaction();
                    mCounterRotator.cleanUp(finishTransaction);
                }
                mLeashMap.clear();
                final IRemoteTransitionFinishedCallback finishCallback = mFinishCallback;
                if (finishCallback != null) {
                    mFinishCallback = null;
                    finishCallback.onTransitionFinished(null /* wct */, null /* t */);
                    finishCallback.onTransitionFinished(null /* wct */, finishTransaction);
                } else if (finishTransaction != null) {
                    finishTransaction.apply();
                }
            }
        };