diff --git a/libraries/networking/src/ReceivedPacketProcessor.cpp b/libraries/networking/src/ReceivedPacketProcessor.cpp index 706266a903..0d8494d712 100644 --- a/libraries/networking/src/ReceivedPacketProcessor.cpp +++ b/libraries/networking/src/ReceivedPacketProcessor.cpp @@ -23,7 +23,7 @@ void ReceivedPacketProcessor::queueReceivedPacket(const SharedNodePointer& sendi NetworkPacket networkPacket(sendingNode, packet); lock(); - _packets.push_back(networkPacket); + _queuedPackets.push_back(networkPacket); _nodePacketCounts[sendingNode->getUUID()]++; unlock(); @@ -33,29 +33,28 @@ void ReceivedPacketProcessor::queueReceivedPacket(const SharedNodePointer& sendi bool ReceivedPacketProcessor::process() { - if (_packets.size() == 0) { + if (_queuedPackets.size() == 0) { _waitingOnPacketsMutex.lock(); _hasPackets.wait(&_waitingOnPacketsMutex, getMaxWait()); _waitingOnPacketsMutex.unlock(); } preProcess(); - QVector currentPackets; - if (!_packets.size()) { + if (!_queuedPackets.size()) { return isStillRunning(); } lock(); - std::swap(currentPackets, _packets); + _processingPackets.swap(_queuedPackets); unlock(); - foreach(auto& packet, currentPackets) { + foreach(auto& packet, _processingPackets) { processPacket(packet.getNode(), packet.getByteArray()); midProcess(); } lock(); - foreach(auto& packet, currentPackets) { + foreach(auto& packet, _processingPackets) { _nodePacketCounts[packet.getNode()->getUUID()]--; } unlock(); diff --git a/libraries/networking/src/ReceivedPacketProcessor.h b/libraries/networking/src/ReceivedPacketProcessor.h index bcc9f9a1f5..1a621e505a 100644 --- a/libraries/networking/src/ReceivedPacketProcessor.h +++ b/libraries/networking/src/ReceivedPacketProcessor.h @@ -75,7 +75,8 @@ protected: protected: - QVector _packets; + QVector _queuedPackets; + QVector _processingPackets; QHash _nodePacketCounts; QWaitCondition _hasPackets;