From 107c142532e9b6fc231e22e8e491cc06301e88ed Mon Sep 17 00:00:00 2001 From: Kai Ludwig Date: Fri, 23 May 2014 20:21:00 +0200 Subject: [PATCH 1/2] _voxelFades needs locking. --- interface/src/Application.cpp | 10 ++++++++++ interface/src/Application.h | 1 + 2 files changed, 11 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2b552de0ee..95a3c87494 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2525,6 +2525,7 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { if (_voxelFades.size() > 0) { PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings), "Application::displaySide() ... voxel fades..."); + _voxelFadesLock.lockForWrite(); for(std::vector::iterator fade = _voxelFades.begin(); fade != _voxelFades.end();) { fade->render(); if(fade->isDone()) { @@ -2533,6 +2534,7 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { ++fade; } } + _voxelFadesLock.unlock(); } // give external parties a change to hook in @@ -3188,7 +3190,9 @@ void Application::nodeKilled(SharedNodePointer node) { fade.voxelDetails = rootDetails; const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; + _voxelFadesLock.lockForWrite(); _voxelFades.push_back(fade); + _voxelFadesLock.unlock(); } // If the voxel server is going away, remove it from our jurisdiction map so we don't send voxels to a dead server @@ -3219,7 +3223,9 @@ void Application::nodeKilled(SharedNodePointer node) { fade.voxelDetails = rootDetails; const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; + _voxelFadesLock.lockForWrite(); _voxelFades.push_back(fade); + _voxelFadesLock.unlock(); } // If the particle server is going away, remove it from our jurisdiction map so we don't send voxels to a dead server @@ -3251,7 +3257,9 @@ void Application::nodeKilled(SharedNodePointer node) { fade.voxelDetails = rootDetails; const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; + _voxelFadesLock.lockForWrite(); _voxelFades.push_back(fade); + _voxelFadesLock.unlock(); } // If the model server is going away, remove it from our jurisdiction map so we don't send voxels to a dead server @@ -3336,7 +3344,9 @@ int Application::parseOctreeStats(const QByteArray& packet, const SharedNodePoin fade.voxelDetails = rootDetails; const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; + _voxelFadesLock.lockForWrite(); _voxelFades.push_back(fade); + _voxelFadesLock.unlock(); } } // store jurisdiction details for later use diff --git a/interface/src/Application.h b/interface/src/Application.h index 1968ef4fee..77d948e708 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -533,6 +533,7 @@ private: NodeBounds _nodeBoundsDisplay; std::vector _voxelFades; + QReadWriteLock _voxelFadesLock; ControllerScriptingInterface _controllerScriptingInterface; QPointer _logDialog; QPointer _snapshotShareDialog; From 7fb9e3a7e616b84133e6e1718111d63898872e9b Mon Sep 17 00:00:00 2001 From: Kai Ludwig Date: Fri, 23 May 2014 20:25:20 +0200 Subject: [PATCH 2/2] spaces instead of tabs. --- interface/src/Application.cpp | 20 ++++++++++---------- interface/src/Application.h | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 95a3c87494..ad6c7ebc54 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2525,7 +2525,7 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { if (_voxelFades.size() > 0) { PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings), "Application::displaySide() ... voxel fades..."); - _voxelFadesLock.lockForWrite(); + _voxelFadesLock.lockForWrite(); for(std::vector::iterator fade = _voxelFades.begin(); fade != _voxelFades.end();) { fade->render(); if(fade->isDone()) { @@ -2534,7 +2534,7 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { ++fade; } } - _voxelFadesLock.unlock(); + _voxelFadesLock.unlock(); } // give external parties a change to hook in @@ -3190,9 +3190,9 @@ void Application::nodeKilled(SharedNodePointer node) { fade.voxelDetails = rootDetails; const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; - _voxelFadesLock.lockForWrite(); + _voxelFadesLock.lockForWrite(); _voxelFades.push_back(fade); - _voxelFadesLock.unlock(); + _voxelFadesLock.unlock(); } // If the voxel server is going away, remove it from our jurisdiction map so we don't send voxels to a dead server @@ -3223,9 +3223,9 @@ void Application::nodeKilled(SharedNodePointer node) { fade.voxelDetails = rootDetails; const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; - _voxelFadesLock.lockForWrite(); + _voxelFadesLock.lockForWrite(); _voxelFades.push_back(fade); - _voxelFadesLock.unlock(); + _voxelFadesLock.unlock(); } // If the particle server is going away, remove it from our jurisdiction map so we don't send voxels to a dead server @@ -3257,9 +3257,9 @@ void Application::nodeKilled(SharedNodePointer node) { fade.voxelDetails = rootDetails; const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; - _voxelFadesLock.lockForWrite(); + _voxelFadesLock.lockForWrite(); _voxelFades.push_back(fade); - _voxelFadesLock.unlock(); + _voxelFadesLock.unlock(); } // If the model server is going away, remove it from our jurisdiction map so we don't send voxels to a dead server @@ -3344,9 +3344,9 @@ int Application::parseOctreeStats(const QByteArray& packet, const SharedNodePoin fade.voxelDetails = rootDetails; const float slightly_smaller = 0.99f; fade.voxelDetails.s = fade.voxelDetails.s * slightly_smaller; - _voxelFadesLock.lockForWrite(); + _voxelFadesLock.lockForWrite(); _voxelFades.push_back(fade); - _voxelFadesLock.unlock(); + _voxelFadesLock.unlock(); } } // store jurisdiction details for later use diff --git a/interface/src/Application.h b/interface/src/Application.h index 77d948e708..9c03dccd0f 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -533,7 +533,7 @@ private: NodeBounds _nodeBoundsDisplay; std::vector _voxelFades; - QReadWriteLock _voxelFadesLock; + QReadWriteLock _voxelFadesLock; ControllerScriptingInterface _controllerScriptingInterface; QPointer _logDialog; QPointer _snapshotShareDialog;