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

Commit c0bc4a39 authored by Jeff Brown's avatar Jeff Brown Committed by Android Git Automerger
Browse files

am 7689dd49: Merge "Fix bug where home presses were not poking user activity." into gingerbread

Merge commit '7689dd4928d1cc4080e43f83a523521b5ecf44e5' into gingerbread-plus-aosp

* commit '7689dd4928d1cc4080e43f83a523521b5ecf44e5':
  Fix bug where home presses were not poking user activity.
parents cd706351 d88671ab
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -109,9 +109,6 @@ struct InputTarget {
    // (ignored for KeyEvents)
    float xOffset, yOffset;

    // The window type of the input target.
    int32_t windowType;

    // The subset of pointer ids to include in motion events dispatched to this input target
    // if FLAG_SPLIT is set.
    BitSet32 pointerIds;
@@ -1004,8 +1001,7 @@ private:
    void addWindowTargetLocked(const InputWindow* window, int32_t targetFlags,
            BitSet32 pointerIds);
    void addMonitoringTargetsLocked();
    bool shouldPokeUserActivityForCurrentInputTargetsLocked();
    void pokeUserActivityLocked(nsecs_t eventTime, int32_t eventType);
    void pokeUserActivityLocked(const EventEntry* eventEntry);
    bool checkInjectionPermission(const InputWindow* window, const InjectionState* injectionState);
    bool isWindowObscuredAtPointLocked(const InputWindow* window, int32_t x, int32_t y) const;
    bool isWindowFinishedWithPreviousInputLocked(const InputWindow* window);
+28 −40
Original line number Diff line number Diff line
@@ -340,6 +340,11 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t keyRepeatTimeout,
            mInboundQueue.dequeue(entry);
            mPendingEvent = entry;
        }

        // Poke user activity for this event.
        if (mPendingEvent->policyFlags & POLICY_FLAG_PASS_TO_USER) {
            pokeUserActivityLocked(mPendingEvent);
        }
    }

    // Now we have an event to dispatch.
@@ -686,11 +691,6 @@ bool InputDispatcher::dispatchKeyLocked(

    // Dispatch the key.
    dispatchEventToCurrentInputTargetsLocked(currentTime, entry, false);

    // Poke user activity.
    if (shouldPokeUserActivityForCurrentInputTargetsLocked()) {
        pokeUserActivityLocked(entry->eventTime, POWER_MANAGER_BUTTON_EVENT);
    }
    return true;
}

@@ -753,31 +753,6 @@ bool InputDispatcher::dispatchMotionLocked(

    // Dispatch the motion.
    dispatchEventToCurrentInputTargetsLocked(currentTime, entry, false);

    // Poke user activity.
    if (shouldPokeUserActivityForCurrentInputTargetsLocked()) {
        int32_t eventType;
        if (isPointerEvent) {
            switch (entry->action) {
            case AMOTION_EVENT_ACTION_DOWN:
                eventType = POWER_MANAGER_TOUCH_EVENT;
                break;
            case AMOTION_EVENT_ACTION_UP:
                eventType = POWER_MANAGER_TOUCH_UP_EVENT;
                break;
            default:
                if (entry->eventTime - entry->downTime >= EVENT_IGNORE_DURATION) {
                    eventType = POWER_MANAGER_TOUCH_EVENT;
                } else {
                    eventType = POWER_MANAGER_LONG_TOUCH_EVENT;
                }
                break;
            }
        } else {
            eventType = POWER_MANAGER_BUTTON_EVENT;
        }
        pokeUserActivityLocked(entry->eventTime, eventType);
    }
    return true;
}

@@ -829,6 +804,8 @@ void InputDispatcher::dispatchEventToCurrentInputTargetsLocked(nsecs_t currentTi

    assert(eventEntry->dispatchInProgress); // should already have been set to true

    pokeUserActivityLocked(eventEntry);

    for (size_t i = 0; i < mCurrentInputTargets.size(); i++) {
        const InputTarget& inputTarget = mCurrentInputTargets.itemAt(i);

@@ -1338,7 +1315,6 @@ void InputDispatcher::addWindowTargetLocked(const InputWindow* window, int32_t t
    target.flags = targetFlags;
    target.xOffset = - window->frameLeft;
    target.yOffset = - window->frameTop;
    target.windowType = window->layoutParamsType;
    target.pointerIds = pointerIds;
}

@@ -1351,7 +1327,6 @@ void InputDispatcher::addMonitoringTargetsLocked() {
        target.flags = 0;
        target.xOffset = 0;
        target.yOffset = 0;
        target.windowType = -1;
    }
}

@@ -1418,19 +1393,32 @@ String8 InputDispatcher::getApplicationWindowLabelLocked(const InputApplication*
    }
}

bool InputDispatcher::shouldPokeUserActivityForCurrentInputTargetsLocked() {
    for (size_t i = 0; i < mCurrentInputTargets.size(); i++) {
        if (mCurrentInputTargets[i].windowType == InputWindow::TYPE_KEYGUARD) {
            return false;
void InputDispatcher::pokeUserActivityLocked(const EventEntry* eventEntry) {
    int32_t eventType = POWER_MANAGER_BUTTON_EVENT;
    if (eventEntry->type == EventEntry::TYPE_MOTION) {
        const MotionEntry* motionEntry = static_cast<const MotionEntry*>(eventEntry);
        if (motionEntry->source & AINPUT_SOURCE_CLASS_POINTER) {
            switch (motionEntry->action) {
            case AMOTION_EVENT_ACTION_DOWN:
                eventType = POWER_MANAGER_TOUCH_EVENT;
                break;
            case AMOTION_EVENT_ACTION_UP:
                eventType = POWER_MANAGER_TOUCH_UP_EVENT;
                break;
            default:
                if (motionEntry->eventTime - motionEntry->downTime >= EVENT_IGNORE_DURATION) {
                    eventType = POWER_MANAGER_TOUCH_EVENT;
                } else {
                    eventType = POWER_MANAGER_LONG_TOUCH_EVENT;
                }
                break;
            }
        }
    return true;
    }

void InputDispatcher::pokeUserActivityLocked(nsecs_t eventTime, int32_t eventType) {
    CommandEntry* commandEntry = postCommandLocked(
            & InputDispatcher::doPokeUserActivityLockedInterruptible);
    commandEntry->eventTime = eventTime;
    commandEntry->eventTime = eventEntry->eventTime;
    commandEntry->userActivityEventType = eventType;
}