Merge pull request #13164 from SimonWalton-HiFi/entities-relaying

Move down OctreeQueryNode::_viewMutex to OctreeQuery
This commit is contained in:
John Conklin II 2018-05-21 10:14:41 -07:00 committed by GitHub
commit 88163424f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 16 deletions

View file

@ -34,13 +34,16 @@ int OctreeQuery::getBroadcastData(unsigned char* destinationBuffer) {
memcpy(destinationBuffer, &_connectionID, sizeof(_connectionID));
destinationBuffer += sizeof(_connectionID);
// Number of frustums
uint8_t numFrustums = (uint8_t)_conicalViews.size();
memcpy(destinationBuffer, &numFrustums, sizeof(numFrustums));
destinationBuffer += sizeof(numFrustums);
{
QMutexLocker lock(&_conicalViewsLock);
// Number of frustums
uint8_t numFrustums = (uint8_t)_conicalViews.size();
memcpy(destinationBuffer, &numFrustums, sizeof(numFrustums));
destinationBuffer += sizeof(numFrustums);
for (const auto& view : _conicalViews) {
destinationBuffer += view.serialize(destinationBuffer);
for (const auto& view : _conicalViews) {
destinationBuffer += view.serialize(destinationBuffer);
}
}
// desired Max Octree PPS
@ -108,11 +111,14 @@ int OctreeQuery::parseData(ReceivedMessage& message) {
memcpy(&numFrustums, sourceBuffer, sizeof(numFrustums));
sourceBuffer += sizeof(numFrustums);
_conicalViews.clear();
for (int i = 0; i < numFrustums; ++i) {
ConicalViewFrustum view;
sourceBuffer += view.deserialize(sourceBuffer);
_conicalViews.push_back(view);
{
QMutexLocker lock(&_conicalViewsLock);
_conicalViews.clear();
for (int i = 0; i < numFrustums; ++i) {
ConicalViewFrustum view;
sourceBuffer += view.deserialize(sourceBuffer);
_conicalViews.push_back(view);
}
}
// desired Max Octree PPS

View file

@ -33,9 +33,10 @@ public:
int getBroadcastData(unsigned char* destinationBuffer);
int parseData(ReceivedMessage& message) override;
bool hasConicalViews() const { return !_conicalViews.empty(); }
void setConicalViews(ConicalViewFrustums views) { _conicalViews = views; }
void clearConicalViews() { _conicalViews.clear(); }
bool hasConicalViews() const { QMutexLocker lock(&_conicalViewsLock); return !_conicalViews.empty(); }
void setConicalViews(ConicalViewFrustums views)
{ QMutexLocker lock(&_conicalViewsLock); _conicalViews = views; }
void clearConicalViews() { QMutexLocker lock(&_conicalViewsLock); _conicalViews.clear(); }
// getters/setters for JSON filter
QJsonObject getJSONParameters() { QReadLocker locker { &_jsonParametersLock }; return _jsonParameters; }
@ -60,6 +61,7 @@ public slots:
void setBoundaryLevelAdjust(int boundaryLevelAdjust) { _boundaryLevelAdjust = boundaryLevelAdjust; }
protected:
mutable QMutex _conicalViewsLock;
ConicalViewFrustums _conicalViews;
// octree server sending items

View file

@ -153,7 +153,7 @@ bool OctreeQueryNode::updateCurrentViewFrustum() {
bool currentViewFrustumChanged = false;
{ // if there has been a change, then recalculate
QMutexLocker viewLocker(&_viewMutex);
QMutexLocker lock(&_conicalViewsLock);
if (_conicalViews.size() == _currentConicalViews.size()) {
for (size_t i = 0; i < _conicalViews.size(); ++i) {

View file

@ -95,7 +95,6 @@ private:
int _duplicatePacketCount { 0 };
quint64 _firstSuppressedPacket { usecTimestampNow() };
mutable QMutex _viewMutex { QMutex::Recursive };
ConicalViewFrustums _currentConicalViews;
bool _viewFrustumChanging { false };
bool _viewFrustumJustStoppedChanging { true };