Fixing recents orientation (when home rotation is allowed) during swipe-up

Bug: 158781568
Bug: 160149607
Change-Id: I27be09febcdb6f19687469db34b002ce682aa0cb
Merged-In: I27be09febcdb6f19687469db34b002ce682aa0cb
(cherry picked from commit 141c231d2f)
This commit is contained in:
Sunny Goyal
2020-06-30 12:03:48 -07:00
parent 8f490e21c9
commit 52f2392405
3 changed files with 19 additions and 18 deletions

View File

@@ -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);

View File

@@ -1003,7 +1003,9 @@ public abstract class RecentsView<T extends StatefulActivity> 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<T extends StatefulActivity> 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<T extends StatefulActivity> 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);

View File

@@ -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