mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 10:43:45 +02:00
lock the voxel server when receiving data to avoid race crash
This commit is contained in:
parent
6c2682833e
commit
9fe1c7c63d
1 changed files with 14 additions and 4 deletions
|
@ -3270,11 +3270,21 @@ void* Application::networkReceive(void* args) {
|
||||||
case PACKET_TYPE_VOXEL_DATA_MONOCHROME:
|
case PACKET_TYPE_VOXEL_DATA_MONOCHROME:
|
||||||
case PACKET_TYPE_Z_COMMAND:
|
case PACKET_TYPE_Z_COMMAND:
|
||||||
case PACKET_TYPE_ERASE_VOXEL:
|
case PACKET_TYPE_ERASE_VOXEL:
|
||||||
app->_voxels.parseData(app->_incomingPacket, bytesReceived);
|
case PACKET_TYPE_ENVIRONMENT_DATA: {
|
||||||
break;
|
Node *voxelServer = NodeList::getInstance()->soloNodeOfType(NODE_TYPE_VOXEL_SERVER);
|
||||||
case PACKET_TYPE_ENVIRONMENT_DATA:
|
if (voxelServer) {
|
||||||
app->_environment.parseData(&senderAddress, app->_incomingPacket, bytesReceived);
|
voxelServer->lock();
|
||||||
|
|
||||||
|
if (app->_incomingPacket[0] == PACKET_TYPE_ENVIRONMENT_DATA) {
|
||||||
|
app->_environment.parseData(&senderAddress, app->_incomingPacket, bytesReceived);
|
||||||
|
} else {
|
||||||
|
app->_voxels.parseData(app->_incomingPacket, bytesReceived);
|
||||||
|
}
|
||||||
|
|
||||||
|
voxelServer->unlock();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case PACKET_TYPE_BULK_AVATAR_DATA:
|
case PACKET_TYPE_BULK_AVATAR_DATA:
|
||||||
NodeList::getInstance()->processBulkNodeData(&senderAddress,
|
NodeList::getInstance()->processBulkNodeData(&senderAddress,
|
||||||
app->_incomingPacket,
|
app->_incomingPacket,
|
||||||
|
|
Loading…
Reference in a new issue