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

Commit 7dc6fdd2 authored by Winson Chung's avatar Winson Chung Committed by Automerger Merge Worker
Browse files

Merge "Fix regression in adding recents input consumer leading to ANR" into rvc-dev am: c4ea0355

Change-Id: Ia1e677a9819f8cc5ee0466a84068a9aa91556eb6
parents 798891f4 c4ea0355
Loading
Loading
Loading
Loading
+10 −12
Original line number Original line Diff line number Diff line
@@ -469,8 +469,12 @@ final class InputMonitor {
        public void accept(WindowState w) {
        public void accept(WindowState w) {
            final InputChannel inputChannel = w.mInputChannel;
            final InputChannel inputChannel = w.mInputChannel;
            final InputWindowHandle inputWindowHandle = w.mInputWindowHandle;
            final InputWindowHandle inputWindowHandle = w.mInputWindowHandle;
            final RecentsAnimationController recentsAnimationController =
                    mService.getRecentsAnimationController();
            final boolean shouldApplyRecentsInputConsumer = recentsAnimationController != null
                    && recentsAnimationController.shouldApplyInputConsumer(w.mActivityRecord);
            if (inputChannel == null || inputWindowHandle == null || w.mRemoved
            if (inputChannel == null || inputWindowHandle == null || w.mRemoved
                    || w.cantReceiveTouchInput()) {
                    || (w.cantReceiveTouchInput() && !shouldApplyRecentsInputConsumer)) {
                if (w.mWinAnimator.hasSurface()) {
                if (w.mWinAnimator.hasSurface()) {
                    mInputTransaction.setInputWindowInfo(
                    mInputTransaction.setInputWindowInfo(
                        w.mWinAnimator.mSurfaceController.getClientViewRootSurface(),
                        w.mWinAnimator.mSurfaceController.getClientViewRootSurface(),
@@ -486,22 +490,16 @@ final class InputMonitor {
            final boolean hasFocus = w.isFocused();
            final boolean hasFocus = w.isFocused();
            final boolean isVisible = w.isVisibleLw();
            final boolean isVisible = w.isVisibleLw();


            if (mAddRecentsAnimationInputConsumerHandle) {
            if (mAddRecentsAnimationInputConsumerHandle && shouldApplyRecentsInputConsumer) {
                final RecentsAnimationController recentsAnimationController =
                        mService.getRecentsAnimationController();
                if (recentsAnimationController != null
                        && recentsAnimationController.shouldApplyInputConsumer(w.mActivityRecord)) {
                if (recentsAnimationController.updateInputConsumerForApp(
                if (recentsAnimationController.updateInputConsumerForApp(
                        mRecentsAnimationInputConsumer.mWindowHandle, hasFocus)) {
                        mRecentsAnimationInputConsumer.mWindowHandle, hasFocus)) {
                    mRecentsAnimationInputConsumer.show(mInputTransaction, w);
                    mRecentsAnimationInputConsumer.show(mInputTransaction, w);
                    mAddRecentsAnimationInputConsumerHandle = false;
                    mAddRecentsAnimationInputConsumerHandle = false;
                }
                }
            }
            }
            }


            if (w.inPinnedWindowingMode()) {
            if (w.inPinnedWindowingMode()) {
                if (mAddPipInputConsumerHandle) {
                if (mAddPipInputConsumerHandle) {

                    final Task rootTask = w.getTask().getRootTask();
                    final Task rootTask = w.getTask().getRootTask();
                    mPipInputConsumer.mWindowHandle.replaceTouchableRegionWithCrop(
                    mPipInputConsumer.mWindowHandle.replaceTouchableRegionWithCrop(
                            rootTask.getSurfaceControl());
                            rootTask.getSurfaceControl());
+2 −1
Original line number Original line Diff line number Diff line
@@ -799,7 +799,8 @@ public class RecentsAnimationController implements DeathRecipient {
        // Only apply the input consumer if it is enabled, it is not the target (home/recents)
        // Only apply the input consumer if it is enabled, it is not the target (home/recents)
        // being revealed with the transition, and we are actively animating the app as a part of
        // being revealed with the transition, and we are actively animating the app as a part of
        // the animation
        // the animation
        return mInputConsumerEnabled && !isTargetApp(activity) && isAnimatingApp(activity);
        return mInputConsumerEnabled && activity != null
                && !isTargetApp(activity) && isAnimatingApp(activity);
    }
    }


    boolean updateInputConsumerForApp(InputWindowHandle inputWindowHandle,
    boolean updateInputConsumerForApp(InputWindowHandle inputWindowHandle,