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

Commit f1500007 authored by Siarhei Vishniakou's avatar Siarhei Vishniakou Committed by Gerrit Code Review
Browse files

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

Merge "[Optimization] It's no need to start the dispatch cycle going if the outbound queue was not previously empty."
parents aa50ac19 474c1674
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -3640,6 +3640,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) {
@@ -3674,8 +3676,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 sp<Connection>& connection) {
@@ -3708,6 +3713,8 @@ 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: {
@@ -3733,9 +3740,11 @@ void InputDispatcher::synthesizePointerDownEventsForConnectionLocked(
        enqueueDispatchEntryLocked(connection, std::move(downEventEntry), target,
                                   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);
    }
}

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