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

Commit 3611f1f0 authored by Charles Chen's avatar Charles Chen
Browse files

Make interceptMotionBeforeQueueingNonInteractive per display

Fix: 77946172
Bug: 117479243
Test: atest WmTests
Test: atest -a libinput_tests inputflinger_tests

Change-Id: I95a90eff154d772b33dfd066714795a3ab1cabf6
parent 6ad055d4
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -2671,7 +2671,7 @@ void InputDispatcher::notifyMotion(const NotifyMotionArgs* args) {
    policyFlags |= POLICY_FLAG_TRUSTED;

    android::base::Timer t;
    mPolicy->interceptMotionBeforeQueueing(args->eventTime, /*byref*/ policyFlags);
    mPolicy->interceptMotionBeforeQueueing(args->displayId, args->eventTime, /*byref*/ policyFlags);
    if (t.duration() > SLOW_INTERCEPTION_THRESHOLD) {
        ALOGW("Excessive delay in interceptMotionBeforeQueueing; took %s ms",
                std::to_string(t.duration().count()).c_str());
@@ -2819,6 +2819,7 @@ int32_t InputDispatcher::injectInputEvent(const InputEvent* event,
        size_t pointerCount = motionEvent->getPointerCount();
        const PointerProperties* pointerProperties = motionEvent->getPointerProperties();
        int32_t actionButton = motionEvent->getActionButton();
        int32_t displayId = motionEvent->getDisplayId();
        if (! validateMotionEvent(action, actionButton, pointerCount, pointerProperties)) {
            return INPUT_EVENT_INJECTION_FAILED;
        }
@@ -2826,7 +2827,7 @@ int32_t InputDispatcher::injectInputEvent(const InputEvent* event,
        if (!(policyFlags & POLICY_FLAG_FILTERED)) {
            nsecs_t eventTime = motionEvent->getEventTime();
            android::base::Timer t;
            mPolicy->interceptMotionBeforeQueueing(eventTime, /*byref*/ policyFlags);
            mPolicy->interceptMotionBeforeQueueing(displayId, eventTime, /*byref*/ policyFlags);
            if (t.duration() > SLOW_INTERCEPTION_THRESHOLD) {
                ALOGW("Excessive delay in interceptMotionBeforeQueueing; took %s ms",
                        std::to_string(t.duration().count()).c_str());
+2 −1
Original line number Diff line number Diff line
@@ -245,7 +245,8 @@ public:
     * This method is expected to set the POLICY_FLAG_PASS_TO_USER policy flag if the event
     * should be dispatched to applications.
     */
    virtual void interceptMotionBeforeQueueing(nsecs_t when, uint32_t& policyFlags) = 0;
    virtual void interceptMotionBeforeQueueing(const int32_t displayId, nsecs_t when,
            uint32_t& policyFlags) = 0;

    /* Allows the policy a chance to intercept a key before dispatching. */
    virtual nsecs_t interceptKeyBeforeDispatching(const sp<IBinder>& token,
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ private:
    virtual void interceptKeyBeforeQueueing(const KeyEvent*, uint32_t&) {
    }

    virtual void interceptMotionBeforeQueueing(nsecs_t, uint32_t&) {
    virtual void interceptMotionBeforeQueueing(int32_t, nsecs_t, uint32_t&) {
    }

    virtual nsecs_t interceptKeyBeforeDispatching(const sp<IBinder>&,