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

Commit 95785e28 authored by hongzuo liu's avatar hongzuo liu Committed by Siarhei Vishniakou
Browse files

[Optimization] It's no need to start the dispatch cycle going if the outbound...

[Optimization] It's no need to start the dispatch cycle going if the outbound queue was not previously empty.

If the outbound queue was not previpusly empty, it indicates that the connection's pipe is full.We will try start the next dispatch cycle for this connection in "doDispatchCycleFinishedCommand".
This follows "enqueueDispatchEntriesLocked".

Test: none
Change-Id: I7736c2bfdb13c35a51b74c46ada7b0f562fecfd9
parent cc7f1ece
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -2998,7 +2998,7 @@ void InputDispatcher::enqueueDispatchEntriesLocked(nsecs_t currentTime,
        ATRACE_NAME(message.c_str());
    }

    bool wasEmpty = connection->outboundQueue.empty();
    const bool wasEmpty = connection->outboundQueue.empty();

    // Enqueue dispatch entries for the requested modes.
    enqueueDispatchEntryLocked(connection, eventEntry, inputTarget,
@@ -3681,6 +3681,8 @@ void InputDispatcher::synthesizeCancelationEventsForConnectionLocked(
    target.inputChannel = connection->inputChannel;
    target.flags = InputTarget::FLAG_DISPATCH_AS_IS;

    const bool wasEmpty = connection->outboundQueue.empty();

    for (size_t i = 0; i < cancelationEvents.size(); i++) {
        std::unique_ptr<EventEntry> cancelationEventEntry = std::move(cancelationEvents[i]);
        switch (cancelationEventEntry->type) {
@@ -3715,8 +3717,11 @@ void InputDispatcher::synthesizeCancelationEventsForConnectionLocked(
                                   InputTarget::FLAG_DISPATCH_AS_IS);
    }

    // If the outbound queue was previously empty, start the dispatch cycle going.
    if (wasEmpty && !connection->outboundQueue.empty()) {
        startDispatchCycleLocked(currentTime, connection);
    }
}

void InputDispatcher::synthesizePointerDownEventsForConnectionLocked(
        const nsecs_t downTime, const sp<Connection>& connection) {
@@ -3747,6 +3752,7 @@ void InputDispatcher::synthesizePointerDownEventsForConnectionLocked(
    target.inputChannel = connection->inputChannel;
    target.flags = InputTarget::FLAG_DISPATCH_AS_IS;

    const bool wasEmpty = connection->outboundQueue.empty();
    for (std::unique_ptr<EventEntry>& downEventEntry : downEvents) {
        switch (downEventEntry->type) {
            case EventEntry::Type::MOTION: {
@@ -3773,8 +3779,11 @@ void InputDispatcher::synthesizePointerDownEventsForConnectionLocked(
                                   InputTarget::FLAG_DISPATCH_AS_IS);
    }

    // If the outbound queue was previously empty, start the dispatch cycle going.
    if (wasEmpty && !connection->outboundQueue.empty()) {
        startDispatchCycleLocked(downTime, connection);
    }
}

std::unique_ptr<MotionEntry> InputDispatcher::splitMotionEvent(
        const MotionEntry& originalMotionEntry, BitSet32 pointerIds, nsecs_t splitDownTime) {