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

Commit ff507968 authored by Lucas Silva's avatar Lucas Silva
Browse files

Always collect animation flows in KeyguardViewMediator

Instead of tying the flows to the keyguard root view, always collect
them in case the root view hasn't been initialized by the time
systemReady runs. In this case, the animations break.

Fixes: 333074624
Flag: NONE
Test: atest KeyguardViewMediatorTest
Change-Id: Icc24e3c1cc65ddd73d5ed20cbcd69010681ae259
parent 3c196855
Loading
Loading
Loading
Loading
+12 −21
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ import static com.android.systemui.DejankUtils.whitelistIpcs;
import static com.android.systemui.Flags.notifyPowerManagerUserActivityBackground;
import static com.android.systemui.Flags.refactorGetCurrentUser;
import static com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel.DREAMING_ANIMATION_DURATION_MS;
import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -98,7 +97,6 @@ import android.view.SurfaceControl.Transaction;
import android.view.SyncRtSurfaceTransactionApplier;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewRootImpl;
import android.view.WindowManager;
import android.view.WindowManagerPolicyConstants;
import android.view.animation.Animation;
@@ -165,7 +163,6 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -1623,24 +1620,18 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
            adjustStatusBarLocked();
            mDreamOverlayStateController.addCallback(mDreamOverlayStateCallback);

            ViewRootImpl viewRootImpl = mKeyguardViewControllerLazy.get().getViewRootImpl();
            if (viewRootImpl != null) {
            final DreamViewModel dreamViewModel = mDreamViewModel.get();
            final CommunalTransitionViewModel communalViewModel =
                    mCommunalTransitionViewModel.get();
                collectFlow(viewRootImpl.getView(), dreamViewModel.getDreamAlpha(),
                        getRemoteSurfaceAlphaApplier(), mMainDispatcher);
                collectFlow(viewRootImpl.getView(), dreamViewModel.getTransitionEnded(),
                        getFinishedCallbackConsumer(), mMainDispatcher);
                collectFlow(viewRootImpl.getView(), communalViewModel.getShowByDefault(),
                        (showByDefault) ->
                                mShowCommunalByDefault = showByDefault, mMainDispatcher);
                collectFlow(viewRootImpl.getView(),
                        communalViewModel.getTransitionFromOccludedEnded(),
                        getFinishedCallbackConsumer(), mMainDispatcher);
            } else {
                Log.e(TAG, "Keyguard ViewRootImpl is null");
            }

            mJavaAdapter.alwaysCollectFlow(dreamViewModel.getDreamAlpha(),
                    getRemoteSurfaceAlphaApplier());
            mJavaAdapter.alwaysCollectFlow(dreamViewModel.getTransitionEnded(),
                    getFinishedCallbackConsumer());
            mJavaAdapter.alwaysCollectFlow(communalViewModel.getShowByDefault(),
                    (showByDefault) -> mShowCommunalByDefault = showByDefault);
            mJavaAdapter.alwaysCollectFlow(communalViewModel.getTransitionFromOccludedEnded(),
                    getFinishedCallbackConsumer());
        }
        // Most services aren't available until the system reaches the ready state, so we
        // send it here when the device first boots.