3
0
Fork 0
mirror of https://github.com/lubosz/overte.git synced 2025-04-26 23:15:31 +02:00

Merge pull request from ey6es/master

Gonna access that vector from two threads?  Need to lock it.  This was crashing all the time for me.
This commit is contained in:
Andrzej Kapolka 2013-08-13 14:33:32 -07:00
commit 0bd54845d2
2 changed files with 5 additions and 1 deletions

View file

@ -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) {

View file

@ -460,7 +460,7 @@ private:
pthread_t _processVoxelsThread;
bool _stopProcessVoxelsThread;
std::vector<NetworkPacket> _voxelPackets;
QMutex _voxelPacketMutex;
unsigned char _incomingPacket[MAX_PACKET_SIZE];
int _packetCount;