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

Commit c3bd4d0e authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Updating Pause detection to use motion events directly

Bug: 139750033
Change-Id: Ib261b203fec941f3c5303eafc1d435efdf3dbcaf
parent 0580b4a5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -172,7 +172,7 @@ public class FlingAndHoldTouchController extends PortraitStatesTouchController {
        mMotionPauseDetector.setDisallowPause(!handlingOverviewAnim()
                || upDisplacement < mMotionPauseMinDisplacement
                || upDisplacement > mMotionPauseMaxDisplacement);
        mMotionPauseDetector.addPosition(displacement, event.getEventTime());
        mMotionPauseDetector.addPosition(event);
        return super.onDrag(displacement, event);
    }

+1 −1
Original line number Diff line number Diff line
@@ -317,7 +317,7 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
        // home screen elements will appear in the shelf on motion pause.
        mMotionPauseDetector.setDisallowPause(mIsHomeScreenVisible
                || -displacement.y < mMotionPauseMinDisplacement);
        mMotionPauseDetector.addPosition(displacement.y, ev.getEventTime());
        mMotionPauseDetector.addPosition(ev);

        if (mIsHomeScreenVisible) {
            // Cancel the shelf anim so it doesn't clobber mNonOverviewAnim.
+2 −4
Original line number Diff line number Diff line
@@ -31,8 +31,8 @@ import android.view.ViewConfiguration;
import com.android.launcher3.R;
import com.android.quickstep.InputConsumer;
import com.android.quickstep.RecentsAnimationDeviceState;
import com.android.quickstep.util.MotionPauseDetector;
import com.android.quickstep.SystemUiProxy;
import com.android.quickstep.util.MotionPauseDetector;
import com.android.systemui.shared.system.InputMonitorCompat;

/**
@@ -117,9 +117,7 @@ public class AccessibilityInputConsumer extends DelegateInputConsumer {
                    if (pointerIndex == -1) {
                        break;
                    }

                    mMotionPauseDetector.addPosition(ev.getY(pointerIndex) - mDownY,
                            ev.getEventTime());
                    mMotionPauseDetector.addPosition(ev, pointerIndex);
                }
                break;
            }
+12 −7
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import com.android.quickstep.TaskAnimationManager;
import com.android.quickstep.util.ActiveGestureLog;
import com.android.quickstep.util.CachedEventDispatcher;
import com.android.quickstep.util.MotionPauseDetector;
import com.android.quickstep.util.NavBarPosition;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.InputMonitorCompat;

@@ -77,6 +78,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
    public static final float QUICKSTEP_TOUCH_SLOP_RATIO = 3;

    private final RecentsAnimationDeviceState mDeviceState;
    private final NavBarPosition mNavBarPosition;
    private final TaskAnimationManager mTaskAnimationManager;
    private final GestureState mGestureState;
    private RecentsAnimationCallbacks mActiveCallbacks;
@@ -126,13 +128,16 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
            Factory handlerFactory) {
        super(base);
        mDeviceState = deviceState;
        mNavBarPosition = mDeviceState.getNavBarPosition();
        mTaskAnimationManager = taskAnimationManager;
        mGestureState = gestureState;
        mMainThreadHandler = new Handler(Looper.getMainLooper());
        mHandlerFactory = handlerFactory;
        mActivityInterface = mGestureState.getActivityInterface();

        mMotionPauseDetector = new MotionPauseDetector(base);
        mMotionPauseDetector = new MotionPauseDetector(base, false,
                mNavBarPosition.isLeftEdge() || mNavBarPosition.isRightEdge()
                        ? MotionEvent.AXIS_X : MotionEvent.AXIS_Y);
        mMotionPauseMinDisplacement = base.getResources().getDimension(
                R.dimen.motion_pause_detector_min_displacement_from_app);
        mOnCompleteCallback = onCompleteCallback;
@@ -172,7 +177,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
        if (mPassedWindowMoveSlop && mInteractionHandler != null
                && !mRecentsViewDispatcher.hasConsumer()) {
            mRecentsViewDispatcher.setConsumer(mInteractionHandler.getRecentsViewDispatcher(
                    mDeviceState.getNavBarPosition().getRotationMode()));
                    mNavBarPosition.getRotationMode()));
        }
        int edgeFlags = ev.getEdgeFlags();
        ev.setEdgeFlags(edgeFlags | EDGE_NAV_BAR);
@@ -285,7 +290,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
                    if (mDeviceState.isFullyGesturalNavMode()) {
                        mMotionPauseDetector.setDisallowPause(upDist < mMotionPauseMinDisplacement
                                || isLikelyToStartNewTask);
                        mMotionPauseDetector.addPosition(displacement, ev.getEventTime());
                        mMotionPauseDetector.addPosition(ev);
                        mInteractionHandler.setIsLikelyToStartNewTask(isLikelyToStartNewTask);
                    }
                }
@@ -354,9 +359,9 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
                        ViewConfiguration.get(this).getScaledMaximumFlingVelocity());
                float velocityX = mVelocityTracker.getXVelocity(mActivePointerId);
                float velocityY = mVelocityTracker.getYVelocity(mActivePointerId);
                float velocity = mDeviceState.getNavBarPosition().isRightEdge()
                float velocity = mNavBarPosition.isRightEdge()
                        ? velocityX
                        : mDeviceState.getNavBarPosition().isLeftEdge()
                        : mNavBarPosition.isLeftEdge()
                                ? -velocityX
                                : velocityY;

@@ -410,9 +415,9 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
    }

    private float getDisplacement(MotionEvent ev) {
        if (mDeviceState.getNavBarPosition().isRightEdge()) {
        if (mNavBarPosition.isRightEdge()) {
            return ev.getX() - mDownPos.x;
        } else if (mDeviceState.getNavBarPosition().isLeftEdge()) {
        } else if (mNavBarPosition.isLeftEdge()) {
            return mDownPos.x - ev.getX();
        } else {
            return ev.getY() - mDownPos.y;
+2 −2
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.R;
import com.android.quickstep.GestureState;
import com.android.quickstep.InputConsumer;
import com.android.quickstep.util.MotionPauseDetector;
import com.android.quickstep.SystemUiProxy;
import com.android.quickstep.util.MotionPauseDetector;

/**
 * An input consumer that detects swipe up and hold to exit screen pinning mode.
@@ -72,7 +72,7 @@ public class ScreenPinnedInputConsumer implements InputConsumer {
            case MotionEvent.ACTION_MOVE:
                float displacement = mTouchDownY - y;
                mMotionPauseDetector.setDisallowPause(displacement < mMotionPauseMinDisplacement);
                mMotionPauseDetector.addPosition(y, ev.getEventTime());
                mMotionPauseDetector.addPosition(ev);
                break;
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
Loading