fix: start processing further packets if a packet is done

This commit is contained in:
Maurice Eisenblätter 2023-09-27 20:32:27 +02:00
parent 03d7be13d0
commit 55a32b5c0f
No known key found for this signature in database
GPG Key ID: 2E553EFBAE92FB3A
1 changed files with 11 additions and 4 deletions

View File

@ -428,7 +428,7 @@ public class AsyncFilterManager implements AsynchronousManager {
}
// There are no more listeners - queue the packet for transmission
signalFreeProcessingSlot(packet);
signalFreeProcessingSlot(packet, onMainThread);
PacketSendingQueue queue = getSendingQueue(packet, false);
@ -467,11 +467,18 @@ public class AsyncFilterManager implements AsynchronousManager {
}
/**
* Signal that a packet has finished processing.
* Signal that a packet has finished processing. Tries to process further packets
* if a processing slot is still free.
* @param packet - packet to signal.
* @param onMainThread whether or not this method was run by the main thread.
*/
public void signalFreeProcessingSlot(PacketEvent packet) {
getProcessingQueue(packet).signalProcessingDone();
public void signalFreeProcessingSlot(PacketEvent packet, boolean onMainThread) {
PacketProcessingQueue queue = getProcessingQueue(packet);
// mark slot as done
queue.signalProcessingDone();
// start processing next slot if possible
queue.signalBeginProcessing(onMainThread);
}
/**