am f2c40603: am 7689dd49: Merge "Fix bug where home presses were not poking user activity." into gingerbread
Merge commit 'f2c406030874b355ca9e4e67cc0e3aff6103c23e' * commit 'f2c406030874b355ca9e4e67cc0e3aff6103c23e': Fix bug where home presses were not poking user activity.
This commit is contained in:
commit
2659f40403
|
@ -109,9 +109,6 @@ struct InputTarget {
|
||||||
// (ignored for KeyEvents)
|
// (ignored for KeyEvents)
|
||||||
float xOffset, yOffset;
|
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
|
// The subset of pointer ids to include in motion events dispatched to this input target
|
||||||
// if FLAG_SPLIT is set.
|
// if FLAG_SPLIT is set.
|
||||||
BitSet32 pointerIds;
|
BitSet32 pointerIds;
|
||||||
|
@ -1018,8 +1015,7 @@ private:
|
||||||
void addWindowTargetLocked(const InputWindow* window, int32_t targetFlags,
|
void addWindowTargetLocked(const InputWindow* window, int32_t targetFlags,
|
||||||
BitSet32 pointerIds);
|
BitSet32 pointerIds);
|
||||||
void addMonitoringTargetsLocked();
|
void addMonitoringTargetsLocked();
|
||||||
bool shouldPokeUserActivityForCurrentInputTargetsLocked();
|
void pokeUserActivityLocked(const EventEntry* eventEntry);
|
||||||
void pokeUserActivityLocked(nsecs_t eventTime, int32_t eventType);
|
|
||||||
bool checkInjectionPermission(const InputWindow* window, const InjectionState* injectionState);
|
bool checkInjectionPermission(const InputWindow* window, const InjectionState* injectionState);
|
||||||
bool isWindowObscuredAtPointLocked(const InputWindow* window, int32_t x, int32_t y) const;
|
bool isWindowObscuredAtPointLocked(const InputWindow* window, int32_t x, int32_t y) const;
|
||||||
bool isWindowFinishedWithPreviousInputLocked(const InputWindow* window);
|
bool isWindowFinishedWithPreviousInputLocked(const InputWindow* window);
|
||||||
|
|
|
@ -340,6 +340,11 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t keyRepeatTimeout,
|
||||||
mInboundQueue.dequeue(entry);
|
mInboundQueue.dequeue(entry);
|
||||||
mPendingEvent = 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.
|
// Now we have an event to dispatch.
|
||||||
|
@ -686,11 +691,6 @@ bool InputDispatcher::dispatchKeyLocked(
|
||||||
|
|
||||||
// Dispatch the key.
|
// Dispatch the key.
|
||||||
dispatchEventToCurrentInputTargetsLocked(currentTime, entry, false);
|
dispatchEventToCurrentInputTargetsLocked(currentTime, entry, false);
|
||||||
|
|
||||||
// Poke user activity.
|
|
||||||
if (shouldPokeUserActivityForCurrentInputTargetsLocked()) {
|
|
||||||
pokeUserActivityLocked(entry->eventTime, POWER_MANAGER_BUTTON_EVENT);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -753,31 +753,6 @@ bool InputDispatcher::dispatchMotionLocked(
|
||||||
|
|
||||||
// Dispatch the motion.
|
// Dispatch the motion.
|
||||||
dispatchEventToCurrentInputTargetsLocked(currentTime, entry, false);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -829,6 +804,8 @@ void InputDispatcher::dispatchEventToCurrentInputTargetsLocked(nsecs_t currentTi
|
||||||
|
|
||||||
assert(eventEntry->dispatchInProgress); // should already have been set to true
|
assert(eventEntry->dispatchInProgress); // should already have been set to true
|
||||||
|
|
||||||
|
pokeUserActivityLocked(eventEntry);
|
||||||
|
|
||||||
for (size_t i = 0; i < mCurrentInputTargets.size(); i++) {
|
for (size_t i = 0; i < mCurrentInputTargets.size(); i++) {
|
||||||
const InputTarget& inputTarget = mCurrentInputTargets.itemAt(i);
|
const InputTarget& inputTarget = mCurrentInputTargets.itemAt(i);
|
||||||
|
|
||||||
|
@ -1338,7 +1315,6 @@ void InputDispatcher::addWindowTargetLocked(const InputWindow* window, int32_t t
|
||||||
target.flags = targetFlags;
|
target.flags = targetFlags;
|
||||||
target.xOffset = - window->frameLeft;
|
target.xOffset = - window->frameLeft;
|
||||||
target.yOffset = - window->frameTop;
|
target.yOffset = - window->frameTop;
|
||||||
target.windowType = window->layoutParamsType;
|
|
||||||
target.pointerIds = pointerIds;
|
target.pointerIds = pointerIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1351,7 +1327,6 @@ void InputDispatcher::addMonitoringTargetsLocked() {
|
||||||
target.flags = 0;
|
target.flags = 0;
|
||||||
target.xOffset = 0;
|
target.xOffset = 0;
|
||||||
target.yOffset = 0;
|
target.yOffset = 0;
|
||||||
target.windowType = -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1418,19 +1393,32 @@ String8 InputDispatcher::getApplicationWindowLabelLocked(const InputApplication*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InputDispatcher::shouldPokeUserActivityForCurrentInputTargetsLocked() {
|
void InputDispatcher::pokeUserActivityLocked(const EventEntry* eventEntry) {
|
||||||
for (size_t i = 0; i < mCurrentInputTargets.size(); i++) {
|
int32_t eventType = POWER_MANAGER_BUTTON_EVENT;
|
||||||
if (mCurrentInputTargets[i].windowType == InputWindow::TYPE_KEYGUARD) {
|
if (eventEntry->type == EventEntry::TYPE_MOTION) {
|
||||||
return false;
|
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(
|
CommandEntry* commandEntry = postCommandLocked(
|
||||||
& InputDispatcher::doPokeUserActivityLockedInterruptible);
|
& InputDispatcher::doPokeUserActivityLockedInterruptible);
|
||||||
commandEntry->eventTime = eventTime;
|
commandEntry->eventTime = eventEntry->eventTime;
|
||||||
commandEntry->userActivityEventType = eventType;
|
commandEntry->userActivityEventType = eventType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue