Loading include/ui/Input.h +3 −1 Original line number Diff line number Diff line Loading @@ -50,8 +50,10 @@ enum { /* * Maximum number of pointers supported per motion event. * Smallest number of pointers is 1. * (We want at least 10 but some touch controllers obstensibly configured for 10 pointers * will occasionally emit 11. There is not much harm making this constant bigger.) */ #define MAX_POINTERS 10 #define MAX_POINTERS 16 /* * Maximum pointer id value supported in a motion event. Loading services/input/EventHub.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -782,12 +782,12 @@ int EventHub::openDevice(const char *devicePath) { // Is this a new modern multi-touch driver? if (test_bit(ABS_MT_POSITION_X, abs_bitmask) && test_bit(ABS_MT_POSITION_Y, abs_bitmask)) { device->classes |= INPUT_DEVICE_CLASS_TOUCHSCREEN | INPUT_DEVICE_CLASS_TOUCHSCREEN_MT; device->classes |= INPUT_DEVICE_CLASS_TOUCH | INPUT_DEVICE_CLASS_TOUCH_MT; // Is this an old style single-touch driver? } else if (test_bit(BTN_TOUCH, key_bitmask) && test_bit(ABS_X, abs_bitmask) && test_bit(ABS_Y, abs_bitmask)) { device->classes |= INPUT_DEVICE_CLASS_TOUCHSCREEN; device->classes |= INPUT_DEVICE_CLASS_TOUCH; } } Loading @@ -812,7 +812,7 @@ int EventHub::openDevice(const char *devicePath) { } #endif if ((device->classes & INPUT_DEVICE_CLASS_TOUCHSCREEN)) { if ((device->classes & INPUT_DEVICE_CLASS_TOUCH)) { // Load the virtual keys for the touch screen, if any. // We do this now so that we can make sure to load the keymap if necessary. status_t status = loadVirtualKeyMap(device); Loading services/input/EventHub.h +3 −3 Original line number Diff line number Diff line Loading @@ -106,14 +106,14 @@ enum { /* The input device is an alpha-numeric keyboard (not just a dial pad). */ INPUT_DEVICE_CLASS_ALPHAKEY = 0x00000002, /* The input device is a touchscreen (either single-touch or multi-touch). */ INPUT_DEVICE_CLASS_TOUCHSCREEN = 0x00000004, /* The input device is a touchscreen or a touchpad (either single-touch or multi-touch). */ INPUT_DEVICE_CLASS_TOUCH = 0x00000004, /* The input device is a cursor device such as a trackball or mouse. */ INPUT_DEVICE_CLASS_CURSOR = 0x00000008, /* The input device is a multi-touch touchscreen. */ INPUT_DEVICE_CLASS_TOUCHSCREEN_MT= 0x00000010, INPUT_DEVICE_CLASS_TOUCH_MT = 0x00000010, /* The input device is a directional pad (implies keyboard, has DPAD keys). */ INPUT_DEVICE_CLASS_DPAD = 0x00000020, Loading services/input/InputDispatcher.cpp +30 −7 Original line number Diff line number Diff line Loading @@ -1165,12 +1165,15 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, mTempTouchState.reset(); mTempTouchState.down = true; mTempTouchState.deviceId = entry->deviceId; mTempTouchState.source = entry->source; isSplit = false; wrongDevice = false; } else { mTempTouchState.copyFrom(mTouchState); isSplit = mTempTouchState.split; wrongDevice = mTempTouchState.down && mTempTouchState.deviceId != entry->deviceId; wrongDevice = mTempTouchState.down && (mTempTouchState.deviceId != entry->deviceId || mTempTouchState.source != entry->source); if (wrongDevice) { #if DEBUG_INPUT_DISPATCHER_POLICY LOGD("Dropping event because a pointer for a different device is already down."); Loading Loading @@ -1599,6 +1602,9 @@ void InputDispatcher::prepareDispatchCycleLocked(nsecs_t currentTime, if (inputTarget->pointerIds.count() != originalMotionEntry->pointerCount) { MotionEntry* splitMotionEntry = splitMotionEvent( originalMotionEntry, inputTarget->pointerIds); if (!splitMotionEntry) { return; // split event was dropped } #if DEBUG_FOCUS LOGD("channel '%s' ~ Split motion event.", connection->getInputChannelName()); Loading Loading @@ -2120,7 +2126,19 @@ InputDispatcher::splitMotionEvent(const MotionEntry* originalMotionEntry, BitSet splitPointerCount += 1; } } assert(splitPointerCount == pointerIds.count()); if (splitPointerCount != pointerIds.count()) { // This is bad. We are missing some of the pointers that we expected to deliver. // Most likely this indicates that we received an ACTION_MOVE events that has // different pointer ids than we expected based on the previous ACTION_DOWN // or ACTION_POINTER_DOWN events that caused us to decide to split the pointers // in this way. LOGW("Dropping split motion event because the pointer count is %d but " "we expected there to be %d pointers. This probably means we received " "a broken sequence of pointer ids from the input device.", splitPointerCount, pointerIds.count()); return NULL; } int32_t action = originalMotionEntry->action; int32_t maskedAction = action & AMOTION_EVENT_ACTION_MASK; Loading Loading @@ -2196,7 +2214,7 @@ void InputDispatcher::notifyConfigurationChanged(nsecs_t eventTime) { } } void InputDispatcher::notifyKey(nsecs_t eventTime, int32_t deviceId, int32_t source, void InputDispatcher::notifyKey(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, nsecs_t downTime) { #if DEBUG_INBOUND_EVENT_DETAILS Loading Loading @@ -2243,7 +2261,7 @@ void InputDispatcher::notifyKey(nsecs_t eventTime, int32_t deviceId, int32_t sou } } void InputDispatcher::notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t source, void InputDispatcher::notifyMotion(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords, float xPrecision, float yPrecision, nsecs_t downTime) { Loading Loading @@ -2296,6 +2314,7 @@ void InputDispatcher::notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t } if (motionEntry->action != AMOTION_EVENT_ACTION_MOVE || motionEntry->source != source || motionEntry->pointerCount != pointerCount || motionEntry->isInjected()) { // Last motion event in the queue for this device is not compatible for Loading Loading @@ -2355,6 +2374,7 @@ void InputDispatcher::notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t dispatchEntry->eventEntry); if (motionEntry->action != AMOTION_EVENT_ACTION_MOVE || motionEntry->deviceId != deviceId || motionEntry->source != source || motionEntry->pointerCount != pointerCount || motionEntry->isInjected()) { // The motion event is not compatible with this move. Loading Loading @@ -2883,6 +2903,7 @@ void InputDispatcher::dumpDispatchStateLocked(String8& dump) { dump.appendFormat(INDENT "TouchDown: %s\n", toString(mTouchState.down)); dump.appendFormat(INDENT "TouchSplit: %s\n", toString(mTouchState.split)); dump.appendFormat(INDENT "TouchDeviceId: %d\n", mTouchState.deviceId); dump.appendFormat(INDENT "TouchSource: 0x%08x\n", mTouchState.source); if (!mTouchState.windows.isEmpty()) { dump.append(INDENT "TouchedWindows:\n"); for (size_t i = 0; i < mTouchState.windows.size(); i++) { Loading Loading @@ -3308,7 +3329,7 @@ InputDispatcher::Allocator::obtainConfigurationChangedEntry(nsecs_t eventTime) { } InputDispatcher::KeyEntry* InputDispatcher::Allocator::obtainKeyEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, int32_t repeatCount, nsecs_t downTime) { KeyEntry* entry = mKeyEntryPool.alloc(); Loading @@ -3329,7 +3350,7 @@ InputDispatcher::KeyEntry* InputDispatcher::Allocator::obtainKeyEntry(nsecs_t ev } InputDispatcher::MotionEntry* InputDispatcher::Allocator::obtainMotionEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, float xPrecision, float yPrecision, nsecs_t downTime, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords) { Loading Loading @@ -3757,7 +3778,7 @@ InputDispatcher::CommandEntry::~CommandEntry() { // --- InputDispatcher::TouchState --- InputDispatcher::TouchState::TouchState() : down(false), split(false), deviceId(-1) { down(false), split(false), deviceId(-1), source(0) { } InputDispatcher::TouchState::~TouchState() { Loading @@ -3767,6 +3788,7 @@ void InputDispatcher::TouchState::reset() { down = false; split = false; deviceId = -1; source = 0; windows.clear(); } Loading @@ -3774,6 +3796,7 @@ void InputDispatcher::TouchState::copyFrom(const TouchState& other) { down = other.down; split = other.split; deviceId = other.deviceId; source = other.source; windows.clear(); windows.appendVector(other.windows); } Loading services/input/InputDispatcher.h +11 −10 Original line number Diff line number Diff line Loading @@ -227,10 +227,10 @@ public: * These methods should only be called on the input reader thread. */ virtual void notifyConfigurationChanged(nsecs_t eventTime) = 0; virtual void notifyKey(nsecs_t eventTime, int32_t deviceId, int32_t source, virtual void notifyKey(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, nsecs_t downTime) = 0; virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t source, virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords, Loading Loading @@ -313,10 +313,10 @@ public: virtual void dispatchOnce(); virtual void notifyConfigurationChanged(nsecs_t eventTime); virtual void notifyKey(nsecs_t eventTime, int32_t deviceId, int32_t source, virtual void notifyKey(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, nsecs_t downTime); virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t source, virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords, Loading Loading @@ -379,7 +379,7 @@ private: struct KeyEntry : EventEntry { int32_t deviceId; int32_t source; uint32_t source; int32_t action; int32_t flags; int32_t keyCode; Loading Loading @@ -407,7 +407,7 @@ private: struct MotionEntry : EventEntry { int32_t deviceId; int32_t source; uint32_t source; int32_t action; int32_t flags; int32_t metaState; Loading Loading @@ -549,11 +549,11 @@ private: InjectionState* obtainInjectionState(int32_t injectorPid, int32_t injectorUid); ConfigurationChangedEntry* obtainConfigurationChangedEntry(nsecs_t eventTime); KeyEntry* obtainKeyEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, int32_t repeatCount, nsecs_t downTime); MotionEntry* obtainMotionEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, float xPrecision, float yPrecision, nsecs_t downTime, uint32_t pointerCount, Loading Loading @@ -645,7 +645,7 @@ private: private: struct KeyMemento { int32_t deviceId; int32_t source; uint32_t source; int32_t keyCode; int32_t scanCode; int32_t flags; Loading @@ -654,7 +654,7 @@ private: struct MotionMemento { int32_t deviceId; int32_t source; uint32_t source; float xPrecision; float yPrecision; nsecs_t downTime; Loading Loading @@ -846,6 +846,7 @@ private: bool down; bool split; int32_t deviceId; // id of the device that is currently down, others are rejected uint32_t source; // source of the device that is current down, others are rejected Vector<TouchedWindow> windows; TouchState(); Loading Loading
include/ui/Input.h +3 −1 Original line number Diff line number Diff line Loading @@ -50,8 +50,10 @@ enum { /* * Maximum number of pointers supported per motion event. * Smallest number of pointers is 1. * (We want at least 10 but some touch controllers obstensibly configured for 10 pointers * will occasionally emit 11. There is not much harm making this constant bigger.) */ #define MAX_POINTERS 10 #define MAX_POINTERS 16 /* * Maximum pointer id value supported in a motion event. Loading
services/input/EventHub.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -782,12 +782,12 @@ int EventHub::openDevice(const char *devicePath) { // Is this a new modern multi-touch driver? if (test_bit(ABS_MT_POSITION_X, abs_bitmask) && test_bit(ABS_MT_POSITION_Y, abs_bitmask)) { device->classes |= INPUT_DEVICE_CLASS_TOUCHSCREEN | INPUT_DEVICE_CLASS_TOUCHSCREEN_MT; device->classes |= INPUT_DEVICE_CLASS_TOUCH | INPUT_DEVICE_CLASS_TOUCH_MT; // Is this an old style single-touch driver? } else if (test_bit(BTN_TOUCH, key_bitmask) && test_bit(ABS_X, abs_bitmask) && test_bit(ABS_Y, abs_bitmask)) { device->classes |= INPUT_DEVICE_CLASS_TOUCHSCREEN; device->classes |= INPUT_DEVICE_CLASS_TOUCH; } } Loading @@ -812,7 +812,7 @@ int EventHub::openDevice(const char *devicePath) { } #endif if ((device->classes & INPUT_DEVICE_CLASS_TOUCHSCREEN)) { if ((device->classes & INPUT_DEVICE_CLASS_TOUCH)) { // Load the virtual keys for the touch screen, if any. // We do this now so that we can make sure to load the keymap if necessary. status_t status = loadVirtualKeyMap(device); Loading
services/input/EventHub.h +3 −3 Original line number Diff line number Diff line Loading @@ -106,14 +106,14 @@ enum { /* The input device is an alpha-numeric keyboard (not just a dial pad). */ INPUT_DEVICE_CLASS_ALPHAKEY = 0x00000002, /* The input device is a touchscreen (either single-touch or multi-touch). */ INPUT_DEVICE_CLASS_TOUCHSCREEN = 0x00000004, /* The input device is a touchscreen or a touchpad (either single-touch or multi-touch). */ INPUT_DEVICE_CLASS_TOUCH = 0x00000004, /* The input device is a cursor device such as a trackball or mouse. */ INPUT_DEVICE_CLASS_CURSOR = 0x00000008, /* The input device is a multi-touch touchscreen. */ INPUT_DEVICE_CLASS_TOUCHSCREEN_MT= 0x00000010, INPUT_DEVICE_CLASS_TOUCH_MT = 0x00000010, /* The input device is a directional pad (implies keyboard, has DPAD keys). */ INPUT_DEVICE_CLASS_DPAD = 0x00000020, Loading
services/input/InputDispatcher.cpp +30 −7 Original line number Diff line number Diff line Loading @@ -1165,12 +1165,15 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, mTempTouchState.reset(); mTempTouchState.down = true; mTempTouchState.deviceId = entry->deviceId; mTempTouchState.source = entry->source; isSplit = false; wrongDevice = false; } else { mTempTouchState.copyFrom(mTouchState); isSplit = mTempTouchState.split; wrongDevice = mTempTouchState.down && mTempTouchState.deviceId != entry->deviceId; wrongDevice = mTempTouchState.down && (mTempTouchState.deviceId != entry->deviceId || mTempTouchState.source != entry->source); if (wrongDevice) { #if DEBUG_INPUT_DISPATCHER_POLICY LOGD("Dropping event because a pointer for a different device is already down."); Loading Loading @@ -1599,6 +1602,9 @@ void InputDispatcher::prepareDispatchCycleLocked(nsecs_t currentTime, if (inputTarget->pointerIds.count() != originalMotionEntry->pointerCount) { MotionEntry* splitMotionEntry = splitMotionEvent( originalMotionEntry, inputTarget->pointerIds); if (!splitMotionEntry) { return; // split event was dropped } #if DEBUG_FOCUS LOGD("channel '%s' ~ Split motion event.", connection->getInputChannelName()); Loading Loading @@ -2120,7 +2126,19 @@ InputDispatcher::splitMotionEvent(const MotionEntry* originalMotionEntry, BitSet splitPointerCount += 1; } } assert(splitPointerCount == pointerIds.count()); if (splitPointerCount != pointerIds.count()) { // This is bad. We are missing some of the pointers that we expected to deliver. // Most likely this indicates that we received an ACTION_MOVE events that has // different pointer ids than we expected based on the previous ACTION_DOWN // or ACTION_POINTER_DOWN events that caused us to decide to split the pointers // in this way. LOGW("Dropping split motion event because the pointer count is %d but " "we expected there to be %d pointers. This probably means we received " "a broken sequence of pointer ids from the input device.", splitPointerCount, pointerIds.count()); return NULL; } int32_t action = originalMotionEntry->action; int32_t maskedAction = action & AMOTION_EVENT_ACTION_MASK; Loading Loading @@ -2196,7 +2214,7 @@ void InputDispatcher::notifyConfigurationChanged(nsecs_t eventTime) { } } void InputDispatcher::notifyKey(nsecs_t eventTime, int32_t deviceId, int32_t source, void InputDispatcher::notifyKey(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, nsecs_t downTime) { #if DEBUG_INBOUND_EVENT_DETAILS Loading Loading @@ -2243,7 +2261,7 @@ void InputDispatcher::notifyKey(nsecs_t eventTime, int32_t deviceId, int32_t sou } } void InputDispatcher::notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t source, void InputDispatcher::notifyMotion(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords, float xPrecision, float yPrecision, nsecs_t downTime) { Loading Loading @@ -2296,6 +2314,7 @@ void InputDispatcher::notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t } if (motionEntry->action != AMOTION_EVENT_ACTION_MOVE || motionEntry->source != source || motionEntry->pointerCount != pointerCount || motionEntry->isInjected()) { // Last motion event in the queue for this device is not compatible for Loading Loading @@ -2355,6 +2374,7 @@ void InputDispatcher::notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t dispatchEntry->eventEntry); if (motionEntry->action != AMOTION_EVENT_ACTION_MOVE || motionEntry->deviceId != deviceId || motionEntry->source != source || motionEntry->pointerCount != pointerCount || motionEntry->isInjected()) { // The motion event is not compatible with this move. Loading Loading @@ -2883,6 +2903,7 @@ void InputDispatcher::dumpDispatchStateLocked(String8& dump) { dump.appendFormat(INDENT "TouchDown: %s\n", toString(mTouchState.down)); dump.appendFormat(INDENT "TouchSplit: %s\n", toString(mTouchState.split)); dump.appendFormat(INDENT "TouchDeviceId: %d\n", mTouchState.deviceId); dump.appendFormat(INDENT "TouchSource: 0x%08x\n", mTouchState.source); if (!mTouchState.windows.isEmpty()) { dump.append(INDENT "TouchedWindows:\n"); for (size_t i = 0; i < mTouchState.windows.size(); i++) { Loading Loading @@ -3308,7 +3329,7 @@ InputDispatcher::Allocator::obtainConfigurationChangedEntry(nsecs_t eventTime) { } InputDispatcher::KeyEntry* InputDispatcher::Allocator::obtainKeyEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, int32_t repeatCount, nsecs_t downTime) { KeyEntry* entry = mKeyEntryPool.alloc(); Loading @@ -3329,7 +3350,7 @@ InputDispatcher::KeyEntry* InputDispatcher::Allocator::obtainKeyEntry(nsecs_t ev } InputDispatcher::MotionEntry* InputDispatcher::Allocator::obtainMotionEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, float xPrecision, float yPrecision, nsecs_t downTime, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords) { Loading Loading @@ -3757,7 +3778,7 @@ InputDispatcher::CommandEntry::~CommandEntry() { // --- InputDispatcher::TouchState --- InputDispatcher::TouchState::TouchState() : down(false), split(false), deviceId(-1) { down(false), split(false), deviceId(-1), source(0) { } InputDispatcher::TouchState::~TouchState() { Loading @@ -3767,6 +3788,7 @@ void InputDispatcher::TouchState::reset() { down = false; split = false; deviceId = -1; source = 0; windows.clear(); } Loading @@ -3774,6 +3796,7 @@ void InputDispatcher::TouchState::copyFrom(const TouchState& other) { down = other.down; split = other.split; deviceId = other.deviceId; source = other.source; windows.clear(); windows.appendVector(other.windows); } Loading
services/input/InputDispatcher.h +11 −10 Original line number Diff line number Diff line Loading @@ -227,10 +227,10 @@ public: * These methods should only be called on the input reader thread. */ virtual void notifyConfigurationChanged(nsecs_t eventTime) = 0; virtual void notifyKey(nsecs_t eventTime, int32_t deviceId, int32_t source, virtual void notifyKey(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, nsecs_t downTime) = 0; virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t source, virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords, Loading Loading @@ -313,10 +313,10 @@ public: virtual void dispatchOnce(); virtual void notifyConfigurationChanged(nsecs_t eventTime); virtual void notifyKey(nsecs_t eventTime, int32_t deviceId, int32_t source, virtual void notifyKey(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, nsecs_t downTime); virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, int32_t source, virtual void notifyMotion(nsecs_t eventTime, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, uint32_t pointerCount, const int32_t* pointerIds, const PointerCoords* pointerCoords, Loading Loading @@ -379,7 +379,7 @@ private: struct KeyEntry : EventEntry { int32_t deviceId; int32_t source; uint32_t source; int32_t action; int32_t flags; int32_t keyCode; Loading Loading @@ -407,7 +407,7 @@ private: struct MotionEntry : EventEntry { int32_t deviceId; int32_t source; uint32_t source; int32_t action; int32_t flags; int32_t metaState; Loading Loading @@ -549,11 +549,11 @@ private: InjectionState* obtainInjectionState(int32_t injectorPid, int32_t injectorUid); ConfigurationChangedEntry* obtainConfigurationChangedEntry(nsecs_t eventTime); KeyEntry* obtainKeyEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t keyCode, int32_t scanCode, int32_t metaState, int32_t repeatCount, nsecs_t downTime); MotionEntry* obtainMotionEntry(nsecs_t eventTime, int32_t deviceId, int32_t source, uint32_t policyFlags, int32_t action, int32_t deviceId, uint32_t source, uint32_t policyFlags, int32_t action, int32_t flags, int32_t metaState, int32_t edgeFlags, float xPrecision, float yPrecision, nsecs_t downTime, uint32_t pointerCount, Loading Loading @@ -645,7 +645,7 @@ private: private: struct KeyMemento { int32_t deviceId; int32_t source; uint32_t source; int32_t keyCode; int32_t scanCode; int32_t flags; Loading @@ -654,7 +654,7 @@ private: struct MotionMemento { int32_t deviceId; int32_t source; uint32_t source; float xPrecision; float yPrecision; nsecs_t downTime; Loading Loading @@ -846,6 +846,7 @@ private: bool down; bool split; int32_t deviceId; // id of the device that is currently down, others are rejected uint32_t source; // source of the device that is current down, others are rejected Vector<TouchedWindow> windows; TouchState(); Loading