diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java index 46013d3f2b..c9ed498af1 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java @@ -103,6 +103,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { mSizeStrategy = sizeStrategy; mOrientationState = new RecentsOrientedState(context, sizeStrategy, i -> { }); + mOrientationState.setGestureActive(true); mCurrentFullscreenParams = new FullscreenDrawParams(context); mPageSpacing = context.getResources().getDimensionPixelSize(R.dimen.recents_page_spacing); diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java index 68b89758ef..7b24b03f2b 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java @@ -1003,7 +1003,9 @@ public abstract class RecentsView extends PagedView mDwbToastShown = false; mActivity.getSystemUiController().updateUiState(UI_STATE_OVERVIEW, 0); LayoutUtils.setViewEnabled(mActionsView, true); - mOrientationState.setGestureActive(false); + if (mOrientationState.setGestureActive(false)) { + updateOrientationHandler(); + } } public @Nullable TaskView getRunningTaskView() { @@ -1041,7 +1043,10 @@ public abstract class RecentsView extends PagedView */ public void onGestureAnimationStart(int runningTaskId) { // This needs to be called before the other states are set since it can create the task view - mOrientationState.setGestureActive(true); + if (mOrientationState.setGestureActive(true)) { + updateOrientationHandler(); + } + showCurrentTask(runningTaskId); setEnableFreeScroll(false); setEnableDrawingLiveTile(false); @@ -1104,7 +1109,9 @@ public abstract class RecentsView extends PagedView * Called when a gesture from an app has finished. */ public void onGestureAnimationEnd() { - mOrientationState.setGestureActive(false); + if (mOrientationState.setGestureActive(false)) { + updateOrientationHandler(); + } setOnScrollChangeListener(null); setEnableFreeScroll(true); diff --git a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java index b359f0f4e1..d822b6c291 100644 --- a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java +++ b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java @@ -188,8 +188,9 @@ public final class RecentsOrientedState implements SharedPreferences.OnSharedPre /** * Sets if the swipe up gesture is currently running or not */ - public void setGestureActive(boolean isGestureActive) { + public boolean setGestureActive(boolean isGestureActive) { setFlag(FLAG_SWIPE_UP_NOT_RUNNING, !isGestureActive); + return update(mTouchRotation, mDisplayRotation); } /** @@ -202,27 +203,19 @@ public final class RecentsOrientedState implements SharedPreferences.OnSharedPre */ public boolean update( @SurfaceRotation int touchRotation, @SurfaceRotation int displayRotation) { - int recentsActivityRotation = inferRecentsActivityRotation(displayRotation); - if (mDisplayRotation == displayRotation - && mTouchRotation == touchRotation - && mRecentsActivityRotation == recentsActivityRotation) { - return false; - } - - mRecentsActivityRotation = recentsActivityRotation; + mRecentsActivityRotation = inferRecentsActivityRotation(displayRotation); mDisplayRotation = displayRotation; mTouchRotation = touchRotation; mPreviousRotation = touchRotation; - if (mRecentsActivityRotation == mTouchRotation || canRecentsActivityRotate()) { + PagedOrientationHandler oldHandler = mOrientationHandler; + if (mRecentsActivityRotation == mTouchRotation + || (canRecentsActivityRotate() && (mFlags & FLAG_SWIPE_UP_NOT_RUNNING) != 0)) { mOrientationHandler = PagedOrientationHandler.PORTRAIT; if (DEBUG) { Log.d(TAG, "current RecentsOrientedState: " + this); } - return true; - } - - if (mTouchRotation == ROTATION_90) { + } else if (mTouchRotation == ROTATION_90) { mOrientationHandler = PagedOrientationHandler.LANDSCAPE; } else if (mTouchRotation == ROTATION_270) { mOrientationHandler = PagedOrientationHandler.SEASCAPE; @@ -232,7 +225,7 @@ public final class RecentsOrientedState implements SharedPreferences.OnSharedPre if (DEBUG) { Log.d(TAG, "current RecentsOrientedState: " + this); } - return true; + return oldHandler != mOrientationHandler; } @SurfaceRotation