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

Commit 9f3d06b7 authored by Wale Ogunwale's avatar Wale Ogunwale Committed by Android (Google) Code Review
Browse files

Merge "Don't start recents multiple times when entering split-screen"

parents a3dcd160 ac36e4d0
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -23,14 +23,12 @@ import static android.view.View.MeasureSpec;
import static com.android.systemui.statusbar.phone.StatusBar.SYSTEM_DIALOG_REASON_RECENT_APPS;

import android.app.ActivityManager;
import android.app.ActivityManager.TaskSnapshot;
import android.app.ActivityOptions;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.GraphicBuffer;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
@@ -89,7 +87,6 @@ import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecsFutur
import com.android.systemui.shared.recents.view.RecentsTransition;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.stackdivider.DividerView;
import com.android.systemui.statusbar.phone.NavigationBarGestureHelper;
import com.android.systemui.statusbar.phone.StatusBar;

import java.util.ArrayList;
@@ -657,13 +654,6 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
        // the resize mode already.
        if (ssp.setTaskWindowingModeSplitScreenPrimary(taskId, stackCreateMode, initialBounds)) {
            EventBus.getDefault().send(new DockedTopTaskEvent(dragMode, initialBounds));
            showRecents(
                    false /* triggeredFromAltTab */,
                    dragMode == NavigationBarGestureHelper.DRAG_MODE_RECENTS,
                    false /* animate */,
                    true /* launchedWhileDockingTask*/,
                    false /* fromHome */,
                    DividerView.INVALID_RECENTS_GROW_TARGET);
        }
    }

+4 −8
Original line number Diff line number Diff line
@@ -501,9 +501,11 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
            windowingMode = WINDOWING_MODE_FULLSCREEN;
        }

        final boolean alreadyInSplitScreenMode = display.hasSplitScreenPrimaryStack();

        // Take any required action due to us not supporting the preferred windowing mode.
        if (windowingMode != preferredWindowingMode && isActivityTypeStandardOrUndefined()) {
            if (display.hasSplitScreenPrimaryStack()
            if (alreadyInSplitScreenMode
                    && (preferredWindowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY
                    || preferredWindowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY)) {
                // Looks like we can't launch in split screen mode, go ahead an dismiss split-screen
@@ -577,7 +579,7 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
                resize(mTmpRect2, null /* tempTaskBounds */, null /* tempTaskInsetBounds */);
            }
        } finally {
            if (mDisplayId == DEFAULT_DISPLAY
            if (!alreadyInSplitScreenMode && mDisplayId == DEFAULT_DISPLAY
                    && windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) {
                // Make sure recents stack exist when creating a dock stack as it normally needs to
                // be on the other side of the docked stack and we make visibility decisions based
@@ -1678,12 +1680,6 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
        return true;
    }

    /** Returns true if the stack is currently considered visible. */
    boolean isVisible() {
        return mWindowContainerController != null && mWindowContainerController.isVisible()
                && !mForceHidden;
    }

    boolean isTopStackOnDisplay() {
        return getDisplay().isTopStack(this);
    }
+3 −15
Original line number Diff line number Diff line
@@ -606,21 +606,9 @@ class ActivityStarter {
            return;
        }

        if (startedActivityStack.inSplitScreenPrimaryWindowingMode()) {
            final ActivityStack homeStack = mSupervisor.mHomeStack;
            final boolean homeStackVisible = homeStack != null && homeStack.isVisible();
            if (homeStackVisible) {
                // We launch an activity while being in home stack, which means either launcher or
                // recents into docked stack. We don't want the launched activity to be alone in a
                // docked stack, so we want to immediately launch recents too.
                if (DEBUG_RECENTS) Slog.d(TAG, "Scheduling recents launch.");
                mService.mWindowManager.showRecentApps(true /* fromHome */);
            }
            return;
        }

        boolean clearedTask = (mLaunchFlags & (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK))
                == (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK) && (mReuseTask != null);
        final int clearTaskFlags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK;
        boolean clearedTask = (mLaunchFlags & clearTaskFlags) == clearTaskFlags
                && mReuseTask != null;
        if (startedActivityStack.inPinnedWindowingMode()
                && (result == START_TASK_TO_FRONT || result == START_DELIVERED_TO_TOP
                || clearedTask)) {
+0 −6
Original line number Diff line number Diff line
@@ -87,12 +87,6 @@ public class StackWindowController
        }
    }

    public boolean isVisible() {
        synchronized (mWindowMap) {
            return mContainer != null && mContainer.isVisible();
        }
    }

    public void reparent(int displayId, Rect outStackBounds, boolean onTop) {
        synchronized (mWindowMap) {
            if (mContainer == null) {