Loading include/input/InputTransport.h +0 −7 Original line number Diff line number Diff line Loading @@ -670,13 +670,6 @@ private: status_t sendUnchainedFinishedSignal(uint32_t seq, bool handled); static void rewriteMessage(TouchState& state, InputMessage& msg); static void initializeKeyEvent(KeyEvent* event, const InputMessage* msg); static void initializeMotionEvent(MotionEvent* event, const InputMessage* msg); static void initializeFocusEvent(FocusEvent* event, const InputMessage* msg); static void initializeCaptureEvent(CaptureEvent* event, const InputMessage* msg); static void initializeDragEvent(DragEvent* event, const InputMessage* msg); static void initializeTouchModeEvent(TouchModeEvent* event, const InputMessage* msg); static void addSample(MotionEvent* event, const InputMessage* msg); static bool canAddSample(const Batch& batch, const InputMessage* msg); static ssize_t findSampleNoLaterThan(const Batch& batch, nsecs_t time); Loading libs/input/InputTransport.cpp +72 −73 Original line number Diff line number Diff line Loading @@ -30,6 +30,8 @@ namespace input_flags = com::android::input::flags; namespace android { namespace { /** Loading Loading @@ -110,13 +112,73 @@ android::base::unique_fd dupChannelFd(int fd) { return newFd; } void initializeKeyEvent(KeyEvent& event, const InputMessage& msg) { event.initialize(msg.body.key.eventId, msg.body.key.deviceId, msg.body.key.source, msg.body.key.displayId, msg.body.key.hmac, msg.body.key.action, msg.body.key.flags, msg.body.key.keyCode, msg.body.key.scanCode, msg.body.key.metaState, msg.body.key.repeatCount, msg.body.key.downTime, msg.body.key.eventTime); } void initializeFocusEvent(FocusEvent& event, const InputMessage& msg) { event.initialize(msg.body.focus.eventId, msg.body.focus.hasFocus); } void initializeCaptureEvent(CaptureEvent& event, const InputMessage& msg) { event.initialize(msg.body.capture.eventId, msg.body.capture.pointerCaptureEnabled); } void initializeDragEvent(DragEvent& event, const InputMessage& msg) { event.initialize(msg.body.drag.eventId, msg.body.drag.x, msg.body.drag.y, msg.body.drag.isExiting); } void initializeMotionEvent(MotionEvent& event, const InputMessage& msg) { uint32_t pointerCount = msg.body.motion.pointerCount; PointerProperties pointerProperties[pointerCount]; PointerCoords pointerCoords[pointerCount]; for (uint32_t i = 0; i < pointerCount; i++) { pointerProperties[i] = msg.body.motion.pointers[i].properties; pointerCoords[i] = msg.body.motion.pointers[i].coords; } ui::Transform transform; transform.set({msg.body.motion.dsdx, msg.body.motion.dtdx, msg.body.motion.tx, msg.body.motion.dtdy, msg.body.motion.dsdy, msg.body.motion.ty, 0, 0, 1}); ui::Transform displayTransform; displayTransform.set({msg.body.motion.dsdxRaw, msg.body.motion.dtdxRaw, msg.body.motion.txRaw, msg.body.motion.dtdyRaw, msg.body.motion.dsdyRaw, msg.body.motion.tyRaw, 0, 0, 1}); event.initialize(msg.body.motion.eventId, msg.body.motion.deviceId, msg.body.motion.source, msg.body.motion.displayId, msg.body.motion.hmac, msg.body.motion.action, msg.body.motion.actionButton, msg.body.motion.flags, msg.body.motion.edgeFlags, msg.body.motion.metaState, msg.body.motion.buttonState, msg.body.motion.classification, transform, msg.body.motion.xPrecision, msg.body.motion.yPrecision, msg.body.motion.xCursorPosition, msg.body.motion.yCursorPosition, displayTransform, msg.body.motion.downTime, msg.body.motion.eventTime, pointerCount, pointerProperties, pointerCoords); } void addSample(MotionEvent& event, const InputMessage& msg) { uint32_t pointerCount = msg.body.motion.pointerCount; PointerCoords pointerCoords[pointerCount]; for (uint32_t i = 0; i < pointerCount; i++) { pointerCoords[i] = msg.body.motion.pointers[i].coords; } event.setMetaState(event.getMetaState() | msg.body.motion.metaState); event.addSample(msg.body.motion.eventTime, pointerCoords); } void initializeTouchModeEvent(TouchModeEvent& event, const InputMessage& msg) { event.initialize(msg.body.touchMode.eventId, msg.body.touchMode.isInTouchMode); } } // namespace using android::base::Result; using android::base::StringPrintf; namespace android { // Socket buffer size. The default is typically about 128KB, which is much larger than // we really need. So we make it smaller. It just needs to be big enough to hold // a few dozen large multi-finger motion events in the case where an application gets Loading Loading @@ -902,7 +964,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum KeyEvent* keyEvent = factory->createKeyEvent(); if (!keyEvent) return NO_MEMORY; initializeKeyEvent(keyEvent, &mMsg); initializeKeyEvent(*keyEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = keyEvent; ALOGD_IF(DEBUG_TRANSPORT_CONSUMER, Loading Loading @@ -965,7 +1027,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum if (!motionEvent) return NO_MEMORY; updateTouchState(mMsg); initializeMotionEvent(motionEvent, &mMsg); initializeMotionEvent(*motionEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = motionEvent; Loading @@ -987,7 +1049,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum FocusEvent* focusEvent = factory->createFocusEvent(); if (!focusEvent) return NO_MEMORY; initializeFocusEvent(focusEvent, &mMsg); initializeFocusEvent(*focusEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = focusEvent; break; Loading @@ -997,7 +1059,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum CaptureEvent* captureEvent = factory->createCaptureEvent(); if (!captureEvent) return NO_MEMORY; initializeCaptureEvent(captureEvent, &mMsg); initializeCaptureEvent(*captureEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = captureEvent; break; Loading @@ -1007,7 +1069,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum DragEvent* dragEvent = factory->createDragEvent(); if (!dragEvent) return NO_MEMORY; initializeDragEvent(dragEvent, &mMsg); initializeDragEvent(*dragEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = dragEvent; break; Loading @@ -1017,7 +1079,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum TouchModeEvent* touchModeEvent = factory->createTouchModeEvent(); if (!touchModeEvent) return NO_MEMORY; initializeTouchModeEvent(touchModeEvent, &mMsg); initializeTouchModeEvent(*touchModeEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = touchModeEvent; break; Loading Loading @@ -1079,9 +1141,9 @@ status_t InputConsumer::consumeSamples(InputEventFactoryInterface* factory, seqChain.seq = msg.header.seq; seqChain.chain = chain; mSeqChains.push_back(seqChain); addSample(motionEvent, &msg); addSample(*motionEvent, msg); } else { initializeMotionEvent(motionEvent, &msg); initializeMotionEvent(*motionEvent, msg); } chain = msg.header.seq; } Loading Loading @@ -1465,69 +1527,6 @@ ssize_t InputConsumer::findTouchState(int32_t deviceId, int32_t source) const { return -1; } void InputConsumer::initializeKeyEvent(KeyEvent* event, const InputMessage* msg) { event->initialize(msg->body.key.eventId, msg->body.key.deviceId, msg->body.key.source, msg->body.key.displayId, msg->body.key.hmac, msg->body.key.action, msg->body.key.flags, msg->body.key.keyCode, msg->body.key.scanCode, msg->body.key.metaState, msg->body.key.repeatCount, msg->body.key.downTime, msg->body.key.eventTime); } void InputConsumer::initializeFocusEvent(FocusEvent* event, const InputMessage* msg) { event->initialize(msg->body.focus.eventId, msg->body.focus.hasFocus); } void InputConsumer::initializeCaptureEvent(CaptureEvent* event, const InputMessage* msg) { event->initialize(msg->body.capture.eventId, msg->body.capture.pointerCaptureEnabled); } void InputConsumer::initializeDragEvent(DragEvent* event, const InputMessage* msg) { event->initialize(msg->body.drag.eventId, msg->body.drag.x, msg->body.drag.y, msg->body.drag.isExiting); } void InputConsumer::initializeMotionEvent(MotionEvent* event, const InputMessage* msg) { uint32_t pointerCount = msg->body.motion.pointerCount; PointerProperties pointerProperties[pointerCount]; PointerCoords pointerCoords[pointerCount]; for (uint32_t i = 0; i < pointerCount; i++) { pointerProperties[i] = msg->body.motion.pointers[i].properties; pointerCoords[i] = msg->body.motion.pointers[i].coords; } ui::Transform transform; transform.set({msg->body.motion.dsdx, msg->body.motion.dtdx, msg->body.motion.tx, msg->body.motion.dtdy, msg->body.motion.dsdy, msg->body.motion.ty, 0, 0, 1}); ui::Transform displayTransform; displayTransform.set({msg->body.motion.dsdxRaw, msg->body.motion.dtdxRaw, msg->body.motion.txRaw, msg->body.motion.dtdyRaw, msg->body.motion.dsdyRaw, msg->body.motion.tyRaw, 0, 0, 1}); event->initialize(msg->body.motion.eventId, msg->body.motion.deviceId, msg->body.motion.source, msg->body.motion.displayId, msg->body.motion.hmac, msg->body.motion.action, msg->body.motion.actionButton, msg->body.motion.flags, msg->body.motion.edgeFlags, msg->body.motion.metaState, msg->body.motion.buttonState, msg->body.motion.classification, transform, msg->body.motion.xPrecision, msg->body.motion.yPrecision, msg->body.motion.xCursorPosition, msg->body.motion.yCursorPosition, displayTransform, msg->body.motion.downTime, msg->body.motion.eventTime, pointerCount, pointerProperties, pointerCoords); } void InputConsumer::initializeTouchModeEvent(TouchModeEvent* event, const InputMessage* msg) { event->initialize(msg->body.touchMode.eventId, msg->body.touchMode.isInTouchMode); } void InputConsumer::addSample(MotionEvent* event, const InputMessage* msg) { uint32_t pointerCount = msg->body.motion.pointerCount; PointerCoords pointerCoords[pointerCount]; for (uint32_t i = 0; i < pointerCount; i++) { pointerCoords[i] = msg->body.motion.pointers[i].coords; } event->setMetaState(event->getMetaState() | msg->body.motion.metaState); event->addSample(msg->body.motion.eventTime, pointerCoords); } bool InputConsumer::canAddSample(const Batch& batch, const InputMessage *msg) { const InputMessage& head = batch.samples[0]; uint32_t pointerCount = msg->body.motion.pointerCount; Loading Loading
include/input/InputTransport.h +0 −7 Original line number Diff line number Diff line Loading @@ -670,13 +670,6 @@ private: status_t sendUnchainedFinishedSignal(uint32_t seq, bool handled); static void rewriteMessage(TouchState& state, InputMessage& msg); static void initializeKeyEvent(KeyEvent* event, const InputMessage* msg); static void initializeMotionEvent(MotionEvent* event, const InputMessage* msg); static void initializeFocusEvent(FocusEvent* event, const InputMessage* msg); static void initializeCaptureEvent(CaptureEvent* event, const InputMessage* msg); static void initializeDragEvent(DragEvent* event, const InputMessage* msg); static void initializeTouchModeEvent(TouchModeEvent* event, const InputMessage* msg); static void addSample(MotionEvent* event, const InputMessage* msg); static bool canAddSample(const Batch& batch, const InputMessage* msg); static ssize_t findSampleNoLaterThan(const Batch& batch, nsecs_t time); Loading
libs/input/InputTransport.cpp +72 −73 Original line number Diff line number Diff line Loading @@ -30,6 +30,8 @@ namespace input_flags = com::android::input::flags; namespace android { namespace { /** Loading Loading @@ -110,13 +112,73 @@ android::base::unique_fd dupChannelFd(int fd) { return newFd; } void initializeKeyEvent(KeyEvent& event, const InputMessage& msg) { event.initialize(msg.body.key.eventId, msg.body.key.deviceId, msg.body.key.source, msg.body.key.displayId, msg.body.key.hmac, msg.body.key.action, msg.body.key.flags, msg.body.key.keyCode, msg.body.key.scanCode, msg.body.key.metaState, msg.body.key.repeatCount, msg.body.key.downTime, msg.body.key.eventTime); } void initializeFocusEvent(FocusEvent& event, const InputMessage& msg) { event.initialize(msg.body.focus.eventId, msg.body.focus.hasFocus); } void initializeCaptureEvent(CaptureEvent& event, const InputMessage& msg) { event.initialize(msg.body.capture.eventId, msg.body.capture.pointerCaptureEnabled); } void initializeDragEvent(DragEvent& event, const InputMessage& msg) { event.initialize(msg.body.drag.eventId, msg.body.drag.x, msg.body.drag.y, msg.body.drag.isExiting); } void initializeMotionEvent(MotionEvent& event, const InputMessage& msg) { uint32_t pointerCount = msg.body.motion.pointerCount; PointerProperties pointerProperties[pointerCount]; PointerCoords pointerCoords[pointerCount]; for (uint32_t i = 0; i < pointerCount; i++) { pointerProperties[i] = msg.body.motion.pointers[i].properties; pointerCoords[i] = msg.body.motion.pointers[i].coords; } ui::Transform transform; transform.set({msg.body.motion.dsdx, msg.body.motion.dtdx, msg.body.motion.tx, msg.body.motion.dtdy, msg.body.motion.dsdy, msg.body.motion.ty, 0, 0, 1}); ui::Transform displayTransform; displayTransform.set({msg.body.motion.dsdxRaw, msg.body.motion.dtdxRaw, msg.body.motion.txRaw, msg.body.motion.dtdyRaw, msg.body.motion.dsdyRaw, msg.body.motion.tyRaw, 0, 0, 1}); event.initialize(msg.body.motion.eventId, msg.body.motion.deviceId, msg.body.motion.source, msg.body.motion.displayId, msg.body.motion.hmac, msg.body.motion.action, msg.body.motion.actionButton, msg.body.motion.flags, msg.body.motion.edgeFlags, msg.body.motion.metaState, msg.body.motion.buttonState, msg.body.motion.classification, transform, msg.body.motion.xPrecision, msg.body.motion.yPrecision, msg.body.motion.xCursorPosition, msg.body.motion.yCursorPosition, displayTransform, msg.body.motion.downTime, msg.body.motion.eventTime, pointerCount, pointerProperties, pointerCoords); } void addSample(MotionEvent& event, const InputMessage& msg) { uint32_t pointerCount = msg.body.motion.pointerCount; PointerCoords pointerCoords[pointerCount]; for (uint32_t i = 0; i < pointerCount; i++) { pointerCoords[i] = msg.body.motion.pointers[i].coords; } event.setMetaState(event.getMetaState() | msg.body.motion.metaState); event.addSample(msg.body.motion.eventTime, pointerCoords); } void initializeTouchModeEvent(TouchModeEvent& event, const InputMessage& msg) { event.initialize(msg.body.touchMode.eventId, msg.body.touchMode.isInTouchMode); } } // namespace using android::base::Result; using android::base::StringPrintf; namespace android { // Socket buffer size. The default is typically about 128KB, which is much larger than // we really need. So we make it smaller. It just needs to be big enough to hold // a few dozen large multi-finger motion events in the case where an application gets Loading Loading @@ -902,7 +964,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum KeyEvent* keyEvent = factory->createKeyEvent(); if (!keyEvent) return NO_MEMORY; initializeKeyEvent(keyEvent, &mMsg); initializeKeyEvent(*keyEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = keyEvent; ALOGD_IF(DEBUG_TRANSPORT_CONSUMER, Loading Loading @@ -965,7 +1027,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum if (!motionEvent) return NO_MEMORY; updateTouchState(mMsg); initializeMotionEvent(motionEvent, &mMsg); initializeMotionEvent(*motionEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = motionEvent; Loading @@ -987,7 +1049,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum FocusEvent* focusEvent = factory->createFocusEvent(); if (!focusEvent) return NO_MEMORY; initializeFocusEvent(focusEvent, &mMsg); initializeFocusEvent(*focusEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = focusEvent; break; Loading @@ -997,7 +1059,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum CaptureEvent* captureEvent = factory->createCaptureEvent(); if (!captureEvent) return NO_MEMORY; initializeCaptureEvent(captureEvent, &mMsg); initializeCaptureEvent(*captureEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = captureEvent; break; Loading @@ -1007,7 +1069,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum DragEvent* dragEvent = factory->createDragEvent(); if (!dragEvent) return NO_MEMORY; initializeDragEvent(dragEvent, &mMsg); initializeDragEvent(*dragEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = dragEvent; break; Loading @@ -1017,7 +1079,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum TouchModeEvent* touchModeEvent = factory->createTouchModeEvent(); if (!touchModeEvent) return NO_MEMORY; initializeTouchModeEvent(touchModeEvent, &mMsg); initializeTouchModeEvent(*touchModeEvent, mMsg); *outSeq = mMsg.header.seq; *outEvent = touchModeEvent; break; Loading Loading @@ -1079,9 +1141,9 @@ status_t InputConsumer::consumeSamples(InputEventFactoryInterface* factory, seqChain.seq = msg.header.seq; seqChain.chain = chain; mSeqChains.push_back(seqChain); addSample(motionEvent, &msg); addSample(*motionEvent, msg); } else { initializeMotionEvent(motionEvent, &msg); initializeMotionEvent(*motionEvent, msg); } chain = msg.header.seq; } Loading Loading @@ -1465,69 +1527,6 @@ ssize_t InputConsumer::findTouchState(int32_t deviceId, int32_t source) const { return -1; } void InputConsumer::initializeKeyEvent(KeyEvent* event, const InputMessage* msg) { event->initialize(msg->body.key.eventId, msg->body.key.deviceId, msg->body.key.source, msg->body.key.displayId, msg->body.key.hmac, msg->body.key.action, msg->body.key.flags, msg->body.key.keyCode, msg->body.key.scanCode, msg->body.key.metaState, msg->body.key.repeatCount, msg->body.key.downTime, msg->body.key.eventTime); } void InputConsumer::initializeFocusEvent(FocusEvent* event, const InputMessage* msg) { event->initialize(msg->body.focus.eventId, msg->body.focus.hasFocus); } void InputConsumer::initializeCaptureEvent(CaptureEvent* event, const InputMessage* msg) { event->initialize(msg->body.capture.eventId, msg->body.capture.pointerCaptureEnabled); } void InputConsumer::initializeDragEvent(DragEvent* event, const InputMessage* msg) { event->initialize(msg->body.drag.eventId, msg->body.drag.x, msg->body.drag.y, msg->body.drag.isExiting); } void InputConsumer::initializeMotionEvent(MotionEvent* event, const InputMessage* msg) { uint32_t pointerCount = msg->body.motion.pointerCount; PointerProperties pointerProperties[pointerCount]; PointerCoords pointerCoords[pointerCount]; for (uint32_t i = 0; i < pointerCount; i++) { pointerProperties[i] = msg->body.motion.pointers[i].properties; pointerCoords[i] = msg->body.motion.pointers[i].coords; } ui::Transform transform; transform.set({msg->body.motion.dsdx, msg->body.motion.dtdx, msg->body.motion.tx, msg->body.motion.dtdy, msg->body.motion.dsdy, msg->body.motion.ty, 0, 0, 1}); ui::Transform displayTransform; displayTransform.set({msg->body.motion.dsdxRaw, msg->body.motion.dtdxRaw, msg->body.motion.txRaw, msg->body.motion.dtdyRaw, msg->body.motion.dsdyRaw, msg->body.motion.tyRaw, 0, 0, 1}); event->initialize(msg->body.motion.eventId, msg->body.motion.deviceId, msg->body.motion.source, msg->body.motion.displayId, msg->body.motion.hmac, msg->body.motion.action, msg->body.motion.actionButton, msg->body.motion.flags, msg->body.motion.edgeFlags, msg->body.motion.metaState, msg->body.motion.buttonState, msg->body.motion.classification, transform, msg->body.motion.xPrecision, msg->body.motion.yPrecision, msg->body.motion.xCursorPosition, msg->body.motion.yCursorPosition, displayTransform, msg->body.motion.downTime, msg->body.motion.eventTime, pointerCount, pointerProperties, pointerCoords); } void InputConsumer::initializeTouchModeEvent(TouchModeEvent* event, const InputMessage* msg) { event->initialize(msg->body.touchMode.eventId, msg->body.touchMode.isInTouchMode); } void InputConsumer::addSample(MotionEvent* event, const InputMessage* msg) { uint32_t pointerCount = msg->body.motion.pointerCount; PointerCoords pointerCoords[pointerCount]; for (uint32_t i = 0; i < pointerCount; i++) { pointerCoords[i] = msg->body.motion.pointers[i].coords; } event->setMetaState(event->getMetaState() | msg->body.motion.metaState); event->addSample(msg->body.motion.eventTime, pointerCoords); } bool InputConsumer::canAddSample(const Batch& batch, const InputMessage *msg) { const InputMessage& head = batch.samples[0]; uint32_t pointerCount = msg->body.motion.pointerCount; Loading