From 5315b020ec2ec2087c7484b882a77a3610c9ff55 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Fri, 27 Jul 2018 14:51:24 -0700 Subject: [PATCH] Use locking for the OctreePacketProcessor additions --- interface/src/octree/OctreePacketProcessor.cpp | 8 ++++++-- interface/src/octree/OctreePacketProcessor.h | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/interface/src/octree/OctreePacketProcessor.cpp b/interface/src/octree/OctreePacketProcessor.cpp index 696fa4ffd4..62dcd056e9 100644 --- a/interface/src/octree/OctreePacketProcessor.cpp +++ b/interface/src/octree/OctreePacketProcessor.cpp @@ -115,6 +115,8 @@ void OctreePacketProcessor::processPacket(QSharedPointer messag // Read sequence # OCTREE_PACKET_SEQUENCE completionNumber; message->readPrimitive(&completionNumber); + + Locker lock(_completionMutex); _completionSequenceNumber = completionNumber; _completionSequenceNumberValid = true; } break; @@ -126,6 +128,7 @@ void OctreePacketProcessor::processPacket(QSharedPointer messag } void OctreePacketProcessor::resetCompletionSequenceNumber() { + Locker lock(_completionMutex); _completionSequenceNumber = false; } @@ -140,7 +143,8 @@ namespace { } bool OctreePacketProcessor::octreeSequenceIsComplete(int sequenceNumber) const { - const int completionSequenceNumber = _completionSequenceNumber; + Locker lock(_completionMutex); + // If we've received the flagged seq # and the current one is >= it. return _completionSequenceNumberValid && - !lessThanWraparound(completionSequenceNumber, sequenceNumber); + !lessThanWraparound(_completionSequenceNumber, sequenceNumber); } diff --git a/interface/src/octree/OctreePacketProcessor.h b/interface/src/octree/OctreePacketProcessor.h index f7e001fbde..ad1ab6c36c 100644 --- a/interface/src/octree/OctreePacketProcessor.h +++ b/interface/src/octree/OctreePacketProcessor.h @@ -37,8 +37,10 @@ private slots: void handleOctreePacket(QSharedPointer message, SharedNodePointer senderNode); private: + mutable std::mutex _completionMutex; + using Locker = std::lock_guard; bool _completionSequenceNumberValid { false }; - std::atomic _completionSequenceNumber { 0 }; + int _completionSequenceNumber { 0 }; }; #endif // hifi_OctreePacketProcessor_h