mirror of
https://github.com/lubosz/overte.git
synced 2025-04-26 23:15:31 +02:00
Merge pull request #849 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:
commit
0bd54845d2
2 changed files with 5 additions and 1 deletions
interface/src
|
@ -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) {
|
||||
|
|
|
@ -460,7 +460,7 @@ private:
|
|||
pthread_t _processVoxelsThread;
|
||||
bool _stopProcessVoxelsThread;
|
||||
std::vector<NetworkPacket> _voxelPackets;
|
||||
|
||||
QMutex _voxelPacketMutex;
|
||||
|
||||
unsigned char _incomingPacket[MAX_PACKET_SIZE];
|
||||
int _packetCount;
|
||||
|
|
Loading…
Reference in a new issue