From 48bee0e52c05e2845d596ba804ce2c88c081bf1b Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 13 Aug 2013 14:29:49 -0700 Subject: [PATCH] Gonna access that vector from two threads? Need to lock it. --- interface/src/Application.cpp | 4 ++++ interface/src/Application.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 174dfc2527..f2e75ddb63 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4045,11 +4045,13 @@ void* Application::processVoxels(void* args) { app->_wantToKillLocalVoxels = false; } + app->_voxelPacketMutex.lock(); while (app->_voxelPackets.size() > 0) { NetworkPacket& packet = app->_voxelPackets.front(); app->processVoxelPacket(packet.getSenderAddress(), packet.getData(), packet.getLength()); app->_voxelPackets.erase(app->_voxelPackets.begin()); } + app->_voxelPacketMutex.unlock(); if (!app->_enableProcessVoxelsThread) { break; @@ -4063,7 +4065,9 @@ void* Application::processVoxels(void* args) { } void Application::queueVoxelPacket(sockaddr& senderAddress, unsigned char* packetData, ssize_t packetLength) { + _voxelPacketMutex.lock(); _voxelPackets.push_back(NetworkPacket(senderAddress, packetData, packetLength)); + _voxelPacketMutex.unlock(); } void Application::processVoxelPacket(sockaddr& senderAddress, unsigned char* packetData, ssize_t packetLength) { diff --git a/interface/src/Application.h b/interface/src/Application.h index 29f7e8bea7..6ef5ef4c0a 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -460,7 +460,7 @@ private: pthread_t _processVoxelsThread; bool _stopProcessVoxelsThread; std::vector _voxelPackets; - + QMutex _voxelPacketMutex; unsigned char _incomingPacket[MAX_PACKET_SIZE]; int _packetCount;