mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 04:37:23 +02:00
Use locking for the OctreePacketProcessor additions
This commit is contained in:
parent
3d390203e2
commit
5315b020ec
2 changed files with 9 additions and 3 deletions
|
@ -115,6 +115,8 @@ void OctreePacketProcessor::processPacket(QSharedPointer<ReceivedMessage> messag
|
||||||
// Read sequence #
|
// Read sequence #
|
||||||
OCTREE_PACKET_SEQUENCE completionNumber;
|
OCTREE_PACKET_SEQUENCE completionNumber;
|
||||||
message->readPrimitive(&completionNumber);
|
message->readPrimitive(&completionNumber);
|
||||||
|
|
||||||
|
Locker lock(_completionMutex);
|
||||||
_completionSequenceNumber = completionNumber;
|
_completionSequenceNumber = completionNumber;
|
||||||
_completionSequenceNumberValid = true;
|
_completionSequenceNumberValid = true;
|
||||||
} break;
|
} break;
|
||||||
|
@ -126,6 +128,7 @@ void OctreePacketProcessor::processPacket(QSharedPointer<ReceivedMessage> messag
|
||||||
}
|
}
|
||||||
|
|
||||||
void OctreePacketProcessor::resetCompletionSequenceNumber() {
|
void OctreePacketProcessor::resetCompletionSequenceNumber() {
|
||||||
|
Locker lock(_completionMutex);
|
||||||
_completionSequenceNumber = false;
|
_completionSequenceNumber = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +143,8 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OctreePacketProcessor::octreeSequenceIsComplete(int sequenceNumber) const {
|
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 &&
|
return _completionSequenceNumberValid &&
|
||||||
!lessThanWraparound<OCTREE_PACKET_SEQUENCE>(completionSequenceNumber, sequenceNumber);
|
!lessThanWraparound<OCTREE_PACKET_SEQUENCE>(_completionSequenceNumber, sequenceNumber);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,8 +37,10 @@ private slots:
|
||||||
void handleOctreePacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
void handleOctreePacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
mutable std::mutex _completionMutex;
|
||||||
|
using Locker = std::lock_guard<std::mutex>;
|
||||||
bool _completionSequenceNumberValid { false };
|
bool _completionSequenceNumberValid { false };
|
||||||
std::atomic<int> _completionSequenceNumber { 0 };
|
int _completionSequenceNumber { 0 };
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif // hifi_OctreePacketProcessor_h
|
#endif // hifi_OctreePacketProcessor_h
|
||||||
|
|
Loading…
Reference in a new issue