diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index e2437156fa..e4c8b6f88b 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -37,18 +37,23 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; +import android.graphics.Point; import android.graphics.Rect; import android.graphics.Region; import android.graphics.drawable.Icon; +import android.hardware.display.DisplayManager; import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.os.Looper; import android.os.SystemClock; +import android.os.SystemProperties; import android.util.Log; import android.view.Choreographer; +import android.view.Display; import android.view.InputEvent; import android.view.MotionEvent; +import android.view.Surface; import android.view.accessibility.AccessibilityManager; import androidx.annotation.BinderThread; @@ -91,6 +96,7 @@ import com.android.systemui.plugins.PluginListener; import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.recents.ISystemUiProxy; import com.android.systemui.shared.system.ActivityManagerWrapper; +import com.android.systemui.shared.system.InputChannelCompat; import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InputMonitorCompat; @@ -121,6 +127,9 @@ public class TouchInteractionService extends Service implements PluginListener { ActivityManagerWrapper.getInstance().cancelRecentsAnimation( @@ -172,6 +179,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC mPassedPilferInputSlop = mPassedWindowMoveSlop = continuingPreviousGesture; mDisableHorizontalSwipe = !mPassedPilferInputSlop && disableHorizontalSwipe; mRotationTouchHelper = mDeviceState.getRotationTouchHelper(); + mDisplayManager = getSystemService(DisplayManager.class); } @Override @@ -197,6 +205,17 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC return; } + if (TouchInteractionService.ENABLE_PER_WINDOW_INPUT_ROTATION) { + final Display display = mDisplayManager.getDisplay(mDeviceState.getDisplayId()); + final int rotation = display.getRotation(); + if (rotation != mLastRotation) { + // If rotation changes, reset tracking to avoid degenerate velocities. + mLastPos.set(ev.getX(), ev.getY()); + mVelocityTracker.clear(); + mLastRotation = rotation; + } + } + // Proxy events to recents view if (mPassedWindowMoveSlop && mInteractionHandler != null && !mRecentsViewDispatcher.hasConsumer()) {