mirror of
https://github.com/JulianGro/overte.git
synced 2025-05-05 10:28:03 +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
|
@ -4045,11 +4045,13 @@ void* Application::processVoxels(void* args) {
|
||||||
app->_wantToKillLocalVoxels = false;
|
app->_wantToKillLocalVoxels = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app->_voxelPacketMutex.lock();
|
||||||
while (app->_voxelPackets.size() > 0) {
|
while (app->_voxelPackets.size() > 0) {
|
||||||
NetworkPacket& packet = app->_voxelPackets.front();
|
NetworkPacket& packet = app->_voxelPackets.front();
|
||||||
app->processVoxelPacket(packet.getSenderAddress(), packet.getData(), packet.getLength());
|
app->processVoxelPacket(packet.getSenderAddress(), packet.getData(), packet.getLength());
|
||||||
app->_voxelPackets.erase(app->_voxelPackets.begin());
|
app->_voxelPackets.erase(app->_voxelPackets.begin());
|
||||||
}
|
}
|
||||||
|
app->_voxelPacketMutex.unlock();
|
||||||
|
|
||||||
if (!app->_enableProcessVoxelsThread) {
|
if (!app->_enableProcessVoxelsThread) {
|
||||||
break;
|
break;
|
||||||
|
@ -4063,7 +4065,9 @@ void* Application::processVoxels(void* args) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::queueVoxelPacket(sockaddr& senderAddress, unsigned char* packetData, ssize_t packetLength) {
|
void Application::queueVoxelPacket(sockaddr& senderAddress, unsigned char* packetData, ssize_t packetLength) {
|
||||||
|
_voxelPacketMutex.lock();
|
||||||
_voxelPackets.push_back(NetworkPacket(senderAddress, packetData, packetLength));
|
_voxelPackets.push_back(NetworkPacket(senderAddress, packetData, packetLength));
|
||||||
|
_voxelPacketMutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::processVoxelPacket(sockaddr& senderAddress, unsigned char* packetData, ssize_t packetLength) {
|
void Application::processVoxelPacket(sockaddr& senderAddress, unsigned char* packetData, ssize_t packetLength) {
|
||||||
|
|
|
@ -460,7 +460,7 @@ private:
|
||||||
pthread_t _processVoxelsThread;
|
pthread_t _processVoxelsThread;
|
||||||
bool _stopProcessVoxelsThread;
|
bool _stopProcessVoxelsThread;
|
||||||
std::vector<NetworkPacket> _voxelPackets;
|
std::vector<NetworkPacket> _voxelPackets;
|
||||||
|
QMutex _voxelPacketMutex;
|
||||||
|
|
||||||
unsigned char _incomingPacket[MAX_PACKET_SIZE];
|
unsigned char _incomingPacket[MAX_PACKET_SIZE];
|
||||||
int _packetCount;
|
int _packetCount;
|
||||||
|
|
Loading…
Reference in a new issue