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

Commit 0ebd22d1 authored by Kamaljeet Maini's avatar Kamaljeet Maini Committed by Android (Google) Code Review
Browse files

Merge "Revert "Support mouse pointer on external displays (1/3)""

parents b923f2d7 aca28400
Loading
Loading
Loading
Loading
+26 −33
Original line number Diff line number Diff line
@@ -2642,7 +2642,6 @@ void CursorInputMapper::configure(nsecs_t when,
                mOrientation = internalViewport->orientation;
            }
        }
        getPolicy()->updatePointerDisplay();
        bumpGeneration();
    }
}
@@ -2788,7 +2787,7 @@ void CursorInputMapper::sync(nsecs_t when) {
        pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, y);
        pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_X, deltaX);
        pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_Y, deltaY);
        displayId = mPointerController->getDisplayId();
        displayId = ADISPLAY_ID_DEFAULT;
    } else {
        pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_X, deltaX);
        pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, deltaY);
@@ -3609,9 +3608,6 @@ void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) {
            (mDeviceMode == DEVICE_MODE_DIRECT && mConfig.showTouches)) {
        if (mPointerController == nullptr) {
            mPointerController = getPolicy()->obtainPointerController(getDeviceId());
            getPolicy()->updatePointerDisplay();
        } else if (viewportChanged) {
            getPolicy()->updatePointerDisplay();
        }
    } else {
        mPointerController.clear();
@@ -5399,9 +5395,9 @@ void TouchInputMapper::dispatchPointerGestures(nsecs_t when, uint32_t policyFlag
        pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_X, x);
        pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_Y, y);

        int32_t displayId = mPointerController->getDisplayId();
        NotifyMotionArgs args(mContext->getNextSequenceNum(), when, displayId, mSource,
                mViewport.displayId, policyFlags, AMOTION_EVENT_ACTION_HOVER_MOVE, 0, 0,
        NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(),
                mSource, mViewport.displayId, policyFlags,
                AMOTION_EVENT_ACTION_HOVER_MOVE, 0, 0,
                metaState, buttonState, AMOTION_EVENT_EDGE_FLAG_NONE,
                /* deviceTimestamp */ 0, 1, &pointerProperties, &pointerCoords,
                0, 0, mPointerGesture.downTime);
@@ -6307,7 +6303,6 @@ void TouchInputMapper::abortPointerMouse(nsecs_t when, uint32_t policyFlags) {
void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,
        bool down, bool hovering) {
    int32_t metaState = getContext()->getGlobalMetaState();
    int32_t displayId = mViewport.displayId;

    if (mPointerController != nullptr) {
        if (down || hovering) {
@@ -6318,7 +6313,6 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,
        } else if (!down && !hovering && (mPointerSimple.down || mPointerSimple.hovering)) {
            mPointerController->fade(PointerControllerInterface::TRANSITION_GRADUAL);
        }
        displayId = mPointerController->getDisplayId();
    }

    if (mPointerSimple.down && !down) {
@@ -6326,7 +6320,7 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,

        // Send up.
        NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(), 
                mSource, displayId, policyFlags,
                mSource, mViewport.displayId, policyFlags,
                AMOTION_EVENT_ACTION_UP, 0, 0, metaState, mLastRawState.buttonState, 0,
                /* deviceTimestamp */ 0,
                1, &mPointerSimple.lastProperties, &mPointerSimple.lastCoords,
@@ -6340,7 +6334,7 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,

        // Send hover exit.
        NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(), 
                mSource, displayId, policyFlags,
                mSource, mViewport.displayId, policyFlags,
                AMOTION_EVENT_ACTION_HOVER_EXIT, 0, 0, metaState, mLastRawState.buttonState, 0,
                /* deviceTimestamp */ 0,
                1, &mPointerSimple.lastProperties, &mPointerSimple.lastCoords,
@@ -6356,7 +6350,7 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,

            // Send down.
            NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(), 
                    mSource, displayId, policyFlags,
                    mSource, mViewport.displayId, policyFlags,
                    AMOTION_EVENT_ACTION_DOWN, 0, 0, metaState, mCurrentRawState.buttonState, 0,
                    /* deviceTimestamp */ 0,
                    1, &mPointerSimple.currentProperties, &mPointerSimple.currentCoords,
@@ -6367,7 +6361,7 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,

        // Send move.
        NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(), 
                mSource, displayId, policyFlags,
                mSource, mViewport.displayId, policyFlags,
                AMOTION_EVENT_ACTION_MOVE, 0, 0, metaState, mCurrentRawState.buttonState, 0,
                /* deviceTimestamp */ 0,
                1, &mPointerSimple.currentProperties, &mPointerSimple.currentCoords,
@@ -6382,7 +6376,7 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,

            // Send hover enter.
            NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(), 
                    mSource, displayId, policyFlags,
                    mSource, mViewport.displayId, policyFlags,
                    AMOTION_EVENT_ACTION_HOVER_ENTER, 0, 0, metaState,
                    mCurrentRawState.buttonState, 0,
                    /* deviceTimestamp */ 0,
@@ -6394,7 +6388,7 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,

        // Send hover move.
        NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(), 
                mSource, displayId, policyFlags,
                mSource, mViewport.displayId, policyFlags,
                AMOTION_EVENT_ACTION_HOVER_MOVE, 0, 0, metaState,
                mCurrentRawState.buttonState, 0,
                /* deviceTimestamp */ 0,
@@ -6417,7 +6411,7 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,
        pointerCoords.setAxisValue(AMOTION_EVENT_AXIS_HSCROLL, hscroll);

        NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(), 
                mSource, displayId, policyFlags,
                mSource, mViewport.displayId, policyFlags,
                AMOTION_EVENT_ACTION_SCROLL, 0, 0, metaState, mCurrentRawState.buttonState, 0,
                /* deviceTimestamp */ 0,
                1, &mPointerSimple.currentProperties, &pointerCoords,
@@ -6479,10 +6473,9 @@ void TouchInputMapper::dispatchMotion(nsecs_t when, uint32_t policyFlags, uint32
            ALOG_ASSERT(false);
        }
    }
    int32_t displayId = mPointerController != nullptr ?
            mPointerController->getDisplayId() : mViewport.displayId;

    NotifyMotionArgs args(mContext->getNextSequenceNum(), when, getDeviceId(), 
            source, displayId, policyFlags,
            source, mViewport.displayId, policyFlags,
            action, actionButton, flags, metaState, buttonState, edgeFlags,
            deviceTimestamp, pointerCount, pointerProperties, pointerCoords,
            xPrecision, yPrecision, downTime);
+0 −3
Original line number Diff line number Diff line
@@ -342,9 +342,6 @@ public:
    /* Gets the affine calibration associated with the specified device. */
    virtual TouchAffineTransformation getTouchAffineTransformation(
            const std::string& inputDeviceDescriptor, int32_t surfaceRotation) = 0;

    /* Update the pointer controller associated with the specified display. */
    virtual void updatePointerDisplay() = 0;
};

} // namespace android
+0 −3
Original line number Diff line number Diff line
@@ -58,9 +58,6 @@ public:
    /* Gets the absolute location of the pointer. */
    virtual void getPosition(float* outX, float* outY) const = 0;

    /* Gets the id of the display where the pointer should be shown. */
    virtual int32_t getDisplayId() const = 0;

    enum Transition {
        // Fade/unfade immediately.
        TRANSITION_IMMEDIATE,
+2 −63
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@ class FakePointerController : public PointerControllerInterface {
    float mMinX, mMinY, mMaxX, mMaxY;
    float mX, mY;
    int32_t mButtonState;
    int32_t mDisplayId;

protected:
    virtual ~FakePointerController() { }
@@ -65,7 +64,7 @@ protected:
public:
    FakePointerController() :
        mHaveBounds(false), mMinX(0), mMinY(0), mMaxX(0), mMaxY(0), mX(0), mY(0),
        mButtonState(0), mDisplayId(ADISPLAY_ID_DEFAULT) {
        mButtonState(0) {
    }

    void setBounds(float minX, float minY, float maxX, float maxY) {
@@ -76,10 +75,6 @@ public:
        mMaxY = maxY;
    }

    void setDisplayId(int32_t displayId) {
        mDisplayId = displayId;
    }

    virtual void setPosition(float x, float y) {
        mX = x;
        mY = y;
@@ -98,10 +93,6 @@ public:
        *outY = mY;
    }

    virtual int32_t getDisplayId() const {
        return mDisplayId;
    }

private:
    virtual bool getBounds(float* outMinX, float* outMinY, float* outMaxX, float* outMaxY) const {
        *outMinX = mMinX;
@@ -271,9 +262,6 @@ private:
    virtual std::string getDeviceAlias(const InputDeviceIdentifier&) {
        return "";
    }

    virtual void updatePointerDisplay() {
    }
};


@@ -3177,30 +3165,6 @@ TEST_F(CursorInputMapperTest, Process_PointerCapture) {
    ASSERT_NO_FATAL_FAILURE(assertPosition(mFakePointerController, 110.0f, 220.0f));
}

TEST_F(CursorInputMapperTest, Process_ShouldHandleDisplayId) {
    CursorInputMapper* mapper = new CursorInputMapper(mDevice);
    addMapperAndConfigure(mapper);

    // Setup PointerController for second display.
    constexpr int32_t SECOND_DISPLAY_ID = 1;
    mFakePointerController->setBounds(0, 0, 800 - 1, 480 - 1);
    mFakePointerController->setPosition(100, 200);
    mFakePointerController->setButtonState(0);
    mFakePointerController->setDisplayId(SECOND_DISPLAY_ID);

    NotifyMotionArgs args;
    process(mapper, ARBITRARY_TIME, EV_REL, REL_X, 10);
    process(mapper, ARBITRARY_TIME, EV_REL, REL_Y, 20);
    process(mapper, ARBITRARY_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);
    ASSERT_NO_FATAL_FAILURE(assertPointerCoords(args.pointerCoords[0],
            110.0f, 220.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
    ASSERT_NO_FATAL_FAILURE(assertPosition(mFakePointerController, 110.0f, 220.0f));
    ASSERT_EQ(SECOND_DISPLAY_ID, args.displayId);
}


// --- TouchInputMapperTest ---

@@ -4699,6 +4663,7 @@ TEST_F(SingleTouchInputMapperTest, Process_WhenAbsPressureIsPresent_HoversIfItsV
            toDisplayX(150), toDisplayY(250), 0, 0, 0, 0, 0, 0, 0, 0));
}


// --- MultiTouchInputMapperTest ---

class MultiTouchInputMapperTest : public TouchInputMapperTest {
@@ -6319,30 +6284,4 @@ TEST_F(MultiTouchInputMapperTest, Configure_AssignsDisplayPort) {
    ASSERT_EQ(DISPLAY_ID, args.displayId);
}

TEST_F(MultiTouchInputMapperTest, Process_Pointer_ShouldHandleDisplayId) {
    // Setup PointerController for second display.
    sp<FakePointerController> fakePointerController = new FakePointerController();
    fakePointerController->setBounds(0, 0, 800 - 1, 480 - 1);
    fakePointerController->setPosition(100, 200);
    fakePointerController->setButtonState(0);
    fakePointerController->setDisplayId(SECONDARY_DISPLAY_ID);
    mFakePolicy->setPointerController(mDevice->getId(), fakePointerController);

    MultiTouchInputMapper* mapper = new MultiTouchInputMapper(mDevice);
    prepareDisplay(DISPLAY_ORIENTATION_0);
    prepareAxes(POSITION);
    addMapperAndConfigure(mapper);

    // Check source is mouse that would obtain the PointerController.
    ASSERT_EQ(AINPUT_SOURCE_MOUSE, mapper->getSources());

    NotifyMotionArgs motionArgs;
    processPosition(mapper, 100, 100);
    processSync(mapper);

    ASSERT_NO_FATAL_FAILURE(mFakeListener->assertNotifyMotionWasCalled(&motionArgs));
    ASSERT_EQ(AMOTION_EVENT_ACTION_HOVER_MOVE, motionArgs.action);
    ASSERT_EQ(SECONDARY_DISPLAY_ID, motionArgs.displayId);
}

} // namespace android