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

Commit 868fb617 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

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



Change-Id: Iee13e621e86a086ba57854263f550cdd57f69bee
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8b8c1f72 a78af2d5
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();
                }
            }
        };