Hotfix for FS #347.
This is not meant to be a permanent solution, but should provide insight into why the issue happens. git-svn-id: http://mc-server.googlecode.com/svn/trunk@1347 0a769ca7-a7f5-676a-18bf-c427514a06d6master
parent
1406d80b2b
commit
47b9f6d941
|
@ -1599,13 +1599,19 @@ void cWorld::SetChunkData(
|
|||
m_Generator.GenerateBiomes(a_ChunkX, a_ChunkZ, BiomeMap);
|
||||
}
|
||||
|
||||
m_ChunkMap->SetChunkData(
|
||||
a_ChunkX, a_ChunkY, a_ChunkZ,
|
||||
a_BlockTypes, a_BlockMeta, a_BlockLight, a_BlockSkyLight,
|
||||
a_HeightMap, *Biomes,
|
||||
a_Entities, a_BlockEntities,
|
||||
a_MarkDirty
|
||||
);
|
||||
{
|
||||
// _X: 2013_04_01: Hotfix for FS #347 - deadlock between the anvil loader thread and the tick thread
|
||||
// By locking the entities here, we break one of the 3 conditions needed for the deadlock
|
||||
cCSLock Lock(m_CSEntities);
|
||||
|
||||
m_ChunkMap->SetChunkData(
|
||||
a_ChunkX, a_ChunkY, a_ChunkZ,
|
||||
a_BlockTypes, a_BlockMeta, a_BlockLight, a_BlockSkyLight,
|
||||
a_HeightMap, *Biomes,
|
||||
a_Entities, a_BlockEntities,
|
||||
a_MarkDirty
|
||||
);
|
||||
}
|
||||
|
||||
// If a client is requesting this chunk, send it to them:
|
||||
if (m_ChunkMap->HasChunkAnyClients(a_ChunkX, a_ChunkY, a_ChunkZ))
|
||||
|
|
Loading…
Reference in New Issue