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

Commit b7f6dc60 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Revert "Disable mouse acceleration and scaling when Pointer Capture is...

Merge "Revert "Disable mouse acceleration and scaling when Pointer Capture is enabled"" into tm-dev am: 6d27bbe3 am: a9236a67

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/17822283



Change-Id: Ib7ac75e5808ffa0e9525e2572b71ddfc7d4bfb64
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents b0bf5723 a9236a67
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -27,9 +27,6 @@

namespace android {

// The default velocity control parameters that has no effect.
static const VelocityControlParameters FLAT_VELOCITY_CONTROL_PARAMS{};

// --- CursorMotionAccumulator ---

CursorMotionAccumulator::CursorMotionAccumulator() {
@@ -157,9 +154,8 @@ void CursorInputMapper::configure(nsecs_t when, const InputReaderConfiguration*
        mHWheelScale = 1.0f;
    }

    const bool configurePointerCapture = (!changes && config->pointerCaptureRequest.enable) ||
            (changes & InputReaderConfiguration::CHANGE_POINTER_CAPTURE);
    if (configurePointerCapture) {
    if ((!changes && config->pointerCaptureRequest.enable) ||
        (changes & InputReaderConfiguration::CHANGE_POINTER_CAPTURE)) {
        if (config->pointerCaptureRequest.enable) {
            if (mParameters.mode == Parameters::MODE_POINTER) {
                mParameters.mode = Parameters::MODE_POINTER_RELATIVE;
@@ -184,19 +180,11 @@ void CursorInputMapper::configure(nsecs_t when, const InputReaderConfiguration*
        }
    }

    if (!changes || (changes & InputReaderConfiguration::CHANGE_POINTER_SPEED) ||
        configurePointerCapture) {
        if (config->pointerCaptureRequest.enable) {
            // Disable any acceleration or scaling when Pointer Capture is enabled.
            mPointerVelocityControl.setParameters(FLAT_VELOCITY_CONTROL_PARAMS);
            mWheelXVelocityControl.setParameters(FLAT_VELOCITY_CONTROL_PARAMS);
            mWheelYVelocityControl.setParameters(FLAT_VELOCITY_CONTROL_PARAMS);
        } else {
    if (!changes || (changes & InputReaderConfiguration::CHANGE_POINTER_SPEED)) {
        mPointerVelocityControl.setParameters(config->pointerVelocityControlParameters);
        mWheelXVelocityControl.setParameters(config->wheelVelocityControlParameters);
        mWheelYVelocityControl.setParameters(config->wheelVelocityControlParameters);
    }
    }

    if (!changes || (changes & InputReaderConfiguration::CHANGE_DISPLAY_INFO)) {
        mOrientation = DISPLAY_ORIENTATION_0;
+1 −57
Original line number Diff line number Diff line
@@ -375,11 +375,6 @@ public:

    float getPointerGestureMovementSpeedRatio() { return mConfig.pointerGestureMovementSpeedRatio; }

    void setVelocityControlParams(const VelocityControlParameters& params) {
        mConfig.pointerVelocityControlParameters = params;
        mConfig.wheelVelocityControlParameters = params;
    }

private:
    uint32_t mNextPointerCaptureSequenceNumber = 0;

@@ -2954,10 +2949,7 @@ protected:
    }

    void configureDevice(uint32_t changes) {
        if (!changes ||
            (changes &
             (InputReaderConfiguration::CHANGE_DISPLAY_INFO |
              InputReaderConfiguration::CHANGE_POINTER_CAPTURE))) {
        if (!changes || (changes & InputReaderConfiguration::CHANGE_DISPLAY_INFO)) {
            mReader->requestRefreshConfiguration(changes);
            mReader->loopOnce();
        }
@@ -4922,54 +4914,6 @@ TEST_F(CursorInputMapperTest, Process_PointerCapture) {
    ASSERT_NO_FATAL_FAILURE(assertPosition(*mFakePointerController, 110.0f, 220.0f));
}

/**
 * When Pointer Capture is enabled, we expect to report unprocessed relative movements, so any
 * pointer acceleration or speed processing should not be applied.
 */
TEST_F(CursorInputMapperTest, PointerCaptureDisablesVelocityProcessing) {
    addConfigurationProperty("cursor.mode", "pointer");
    const VelocityControlParameters testParams(5.f /*scale*/, 0.f /*low threshold*/,
                                               100.f /*high threshold*/, 10.f /*acceleration*/);
    mFakePolicy->setVelocityControlParams(testParams);
    CursorInputMapper& mapper = addMapperAndConfigure<CursorInputMapper>();

    NotifyDeviceResetArgs resetArgs;
    ASSERT_NO_FATAL_FAILURE(mFakeListener->assertNotifyDeviceResetWasCalled(&resetArgs));
    ASSERT_EQ(ARBITRARY_TIME, resetArgs.eventTime);
    ASSERT_EQ(DEVICE_ID, resetArgs.deviceId);

    NotifyMotionArgs args;

    // Move and verify scale is applied.
    process(mapper, ARBITRARY_TIME, READ_TIME, EV_REL, REL_X, 10);
    process(mapper, ARBITRARY_TIME, READ_TIME, EV_REL, REL_Y, 20);
    process(mapper, ARBITRARY_TIME, READ_TIME, EV_SYN, SYN_REPORT, 0);
    ASSERT_NO_FATAL_FAILURE(mFakeListener->assertNotifyMotionWasCalled(&args));
    ASSERT_EQ(AINPUT_SOURCE_MOUSE, args.source);
    ASSERT_EQ(AMOTION_EVENT_ACTION_HOVER_MOVE, args.action);
    const float relX = args.pointerCoords[0].getAxisValue(AMOTION_EVENT_AXIS_RELATIVE_X);
    const float relY = args.pointerCoords[0].getAxisValue(AMOTION_EVENT_AXIS_RELATIVE_Y);
    ASSERT_GT(relX, 10);
    ASSERT_GT(relY, 20);

    // Enable Pointer Capture
    mFakePolicy->setPointerCapture(true);
    configureDevice(InputReaderConfiguration::CHANGE_POINTER_CAPTURE);
    NotifyPointerCaptureChangedArgs captureArgs;
    ASSERT_NO_FATAL_FAILURE(mFakeListener->assertNotifyCaptureWasCalled(&captureArgs));
    ASSERT_TRUE(captureArgs.request.enable);

    // Move and verify scale is not applied.
    process(mapper, ARBITRARY_TIME, READ_TIME, EV_REL, REL_X, 10);
    process(mapper, ARBITRARY_TIME, READ_TIME, EV_REL, REL_Y, 20);
    process(mapper, ARBITRARY_TIME, READ_TIME, EV_SYN, SYN_REPORT, 0);
    ASSERT_NO_FATAL_FAILURE(mFakeListener->assertNotifyMotionWasCalled(&args));
    ASSERT_EQ(AINPUT_SOURCE_MOUSE_RELATIVE, args.source);
    ASSERT_EQ(AMOTION_EVENT_ACTION_MOVE, args.action);
    ASSERT_EQ(10, args.pointerCoords[0].getX());
    ASSERT_EQ(20, args.pointerCoords[0].getY());
}

TEST_F(CursorInputMapperTest, Process_ShouldHandleDisplayId) {
    CursorInputMapper& mapper = addMapperAndConfigure<CursorInputMapper>();