From d8ad6b25f4a9c7ab156268a2a505d1c1c26ef74e Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Fri, 9 Apr 2021 16:55:45 -0700 Subject: [PATCH] Make RotationTouchHelper singleton to report single rotation state Multiple instances of RotationTouchHelper were being created and reporting conflicting and incorrect information to sysui for current quickswitch state. Bug: 183897242 Test: Ensure quickswitch gestures work as expected. Change-Id: Ia8716f2b597033e9e81291e0b4490119c30ad972 --- .../android/quickstep/RecentsAnimationDeviceState.java | 2 +- .../src/com/android/quickstep/RotationTouchHelper.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java index 23e35f6307..4a191e16e7 100644 --- a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java +++ b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java @@ -138,7 +138,7 @@ public class RecentsAnimationDeviceState implements mDisplayId = mDisplayHolder.getInfo().id; mIsOneHandedModeSupported = SystemProperties.getBoolean(SUPPORT_ONE_HANDED_MODE, false); runOnDestroy(() -> mDisplayHolder.removeChangeListener(this)); - mRotationTouchHelper = new RotationTouchHelper(context, mDisplayHolder); + mRotationTouchHelper = RotationTouchHelper.INSTANCE.get(context); runOnDestroy(mRotationTouchHelper::destroy); // Register for user unlocked if necessary diff --git a/quickstep/src/com/android/quickstep/RotationTouchHelper.java b/quickstep/src/com/android/quickstep/RotationTouchHelper.java index 2cf32122cf..1155482d37 100644 --- a/quickstep/src/com/android/quickstep/RotationTouchHelper.java +++ b/quickstep/src/com/android/quickstep/RotationTouchHelper.java @@ -28,9 +28,11 @@ import android.view.MotionEvent; import android.view.OrientationEventListener; import com.android.launcher3.testing.TestProtocol; +import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.DisplayController.DisplayHolder; import com.android.launcher3.util.DisplayController.DisplayInfoChangeListener; import com.android.launcher3.util.DisplayController.Info; +import com.android.launcher3.util.MainThreadInitializedObject; import com.android.quickstep.util.RecentsOrientedState; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.QuickStepContract; @@ -43,6 +45,9 @@ public class RotationTouchHelper implements SysUINavigationMode.NavigationModeChangeListener, DisplayInfoChangeListener { + public static final MainThreadInitializedObject INSTANCE = + new MainThreadInitializedObject<>(RotationTouchHelper::new); + private final OrientationTouchTransformer mOrientationTouchTransformer; private final DisplayHolder mDisplayHolder; private final SysUINavigationMode mSysUiNavMode; @@ -121,9 +126,9 @@ public class RotationTouchHelper implements private final Context mContext; - public RotationTouchHelper(Context context, DisplayHolder displayHolder) { + private RotationTouchHelper(Context context) { mContext = context; - mDisplayHolder = displayHolder; + mDisplayHolder = DisplayController.getDefaultDisplay(context); Resources resources = mContext.getResources(); mSysUiNavMode = SysUINavigationMode.INSTANCE.get(context); mDisplayId = mDisplayHolder.getInfo().id;