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

Commit 9dbf6375 authored by Siarhei Vishniakou's avatar Siarhei Vishniakou
Browse files

Move static functions to InputConsumer cpp file

This way, they can be reused by other code in that file. For example,
by the new "InputConsumerNoResampling".

Also, pass the parameters by ref because they are not nullable.

Bug: 311142655
Test: m libinput libinput_tests
Change-Id: Ib40bcddfcb3d49b0a42d58533dcc566d9d49a500
parent 55397a30
Loading
Loading
Loading
Loading
+0 −7
Original line number Original line Diff line number Diff line
@@ -670,13 +670,6 @@ private:
    status_t sendUnchainedFinishedSignal(uint32_t seq, bool handled);
    status_t sendUnchainedFinishedSignal(uint32_t seq, bool handled);


    static void rewriteMessage(TouchState& state, InputMessage& msg);
    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 bool canAddSample(const Batch& batch, const InputMessage* msg);
    static ssize_t findSampleNoLaterThan(const Batch& batch, nsecs_t time);
    static ssize_t findSampleNoLaterThan(const Batch& batch, nsecs_t time);


+72 −73
Original line number Original line Diff line number Diff line
@@ -30,6 +30,8 @@


namespace input_flags = com::android::input::flags;
namespace input_flags = com::android::input::flags;


namespace android {

namespace {
namespace {


/**
/**
@@ -110,13 +112,73 @@ android::base::unique_fd dupChannelFd(int fd) {
    return newFd;
    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
} // namespace


using android::base::Result;
using android::base::Result;
using android::base::StringPrintf;
using android::base::StringPrintf;


namespace android {

// Socket buffer size.  The default is typically about 128KB, which is much larger than
// 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
// 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
// a few dozen large multi-finger motion events in the case where an application gets
@@ -902,7 +964,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum
                KeyEvent* keyEvent = factory->createKeyEvent();
                KeyEvent* keyEvent = factory->createKeyEvent();
                if (!keyEvent) return NO_MEMORY;
                if (!keyEvent) return NO_MEMORY;


                initializeKeyEvent(keyEvent, &mMsg);
                initializeKeyEvent(*keyEvent, mMsg);
                *outSeq = mMsg.header.seq;
                *outSeq = mMsg.header.seq;
                *outEvent = keyEvent;
                *outEvent = keyEvent;
                ALOGD_IF(DEBUG_TRANSPORT_CONSUMER,
                ALOGD_IF(DEBUG_TRANSPORT_CONSUMER,
@@ -965,7 +1027,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum
                if (!motionEvent) return NO_MEMORY;
                if (!motionEvent) return NO_MEMORY;


                updateTouchState(mMsg);
                updateTouchState(mMsg);
                initializeMotionEvent(motionEvent, &mMsg);
                initializeMotionEvent(*motionEvent, mMsg);
                *outSeq = mMsg.header.seq;
                *outSeq = mMsg.header.seq;
                *outEvent = motionEvent;
                *outEvent = motionEvent;


@@ -987,7 +1049,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum
                FocusEvent* focusEvent = factory->createFocusEvent();
                FocusEvent* focusEvent = factory->createFocusEvent();
                if (!focusEvent) return NO_MEMORY;
                if (!focusEvent) return NO_MEMORY;


                initializeFocusEvent(focusEvent, &mMsg);
                initializeFocusEvent(*focusEvent, mMsg);
                *outSeq = mMsg.header.seq;
                *outSeq = mMsg.header.seq;
                *outEvent = focusEvent;
                *outEvent = focusEvent;
                break;
                break;
@@ -997,7 +1059,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum
                CaptureEvent* captureEvent = factory->createCaptureEvent();
                CaptureEvent* captureEvent = factory->createCaptureEvent();
                if (!captureEvent) return NO_MEMORY;
                if (!captureEvent) return NO_MEMORY;


                initializeCaptureEvent(captureEvent, &mMsg);
                initializeCaptureEvent(*captureEvent, mMsg);
                *outSeq = mMsg.header.seq;
                *outSeq = mMsg.header.seq;
                *outEvent = captureEvent;
                *outEvent = captureEvent;
                break;
                break;
@@ -1007,7 +1069,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum
                DragEvent* dragEvent = factory->createDragEvent();
                DragEvent* dragEvent = factory->createDragEvent();
                if (!dragEvent) return NO_MEMORY;
                if (!dragEvent) return NO_MEMORY;


                initializeDragEvent(dragEvent, &mMsg);
                initializeDragEvent(*dragEvent, mMsg);
                *outSeq = mMsg.header.seq;
                *outSeq = mMsg.header.seq;
                *outEvent = dragEvent;
                *outEvent = dragEvent;
                break;
                break;
@@ -1017,7 +1079,7 @@ status_t InputConsumer::consume(InputEventFactoryInterface* factory, bool consum
                TouchModeEvent* touchModeEvent = factory->createTouchModeEvent();
                TouchModeEvent* touchModeEvent = factory->createTouchModeEvent();
                if (!touchModeEvent) return NO_MEMORY;
                if (!touchModeEvent) return NO_MEMORY;


                initializeTouchModeEvent(touchModeEvent, &mMsg);
                initializeTouchModeEvent(*touchModeEvent, mMsg);
                *outSeq = mMsg.header.seq;
                *outSeq = mMsg.header.seq;
                *outEvent = touchModeEvent;
                *outEvent = touchModeEvent;
                break;
                break;
@@ -1079,9 +1141,9 @@ status_t InputConsumer::consumeSamples(InputEventFactoryInterface* factory,
            seqChain.seq = msg.header.seq;
            seqChain.seq = msg.header.seq;
            seqChain.chain = chain;
            seqChain.chain = chain;
            mSeqChains.push_back(seqChain);
            mSeqChains.push_back(seqChain);
            addSample(motionEvent, &msg);
            addSample(*motionEvent, msg);
        } else {
        } else {
            initializeMotionEvent(motionEvent, &msg);
            initializeMotionEvent(*motionEvent, msg);
        }
        }
        chain = msg.header.seq;
        chain = msg.header.seq;
    }
    }
@@ -1465,69 +1527,6 @@ ssize_t InputConsumer::findTouchState(int32_t deviceId, int32_t source) const {
    return -1;
    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) {
bool InputConsumer::canAddSample(const Batch& batch, const InputMessage *msg) {
    const InputMessage& head = batch.samples[0];
    const InputMessage& head = batch.samples[0];
    uint32_t pointerCount = msg->body.motion.pointerCount;
    uint32_t pointerCount = msg->body.motion.pointerCount;