Browse Source

Fixed deadlock in WaterAdopter

Tomasz Zieliński 2 years ago
parent
commit
72f8facc82
1 changed files with 4 additions and 2 deletions
  1. 4 2
      lib/rmg/WaterAdopter.cpp

+ 4 - 2
lib/rmg/WaterAdopter.cpp

@@ -35,7 +35,6 @@ void WaterAdopter::process()
 void WaterAdopter::init()
 void WaterAdopter::init()
 {
 {
 	//make dependencies
 	//make dependencies
-	DEPENDENCY_ALL(WaterAdopter);
 	DEPENDENCY(TownPlacer);
 	DEPENDENCY(TownPlacer);
 	POSTFUNCTION(ConnectionsPlacer);
 	POSTFUNCTION(ConnectionsPlacer);
 	POSTFUNCTION(TreasurePlacer);
 	POSTFUNCTION(TreasurePlacer);
@@ -224,7 +223,10 @@ void WaterAdopter::createWater(EWaterContent::EWaterContent waterContent)
 		}
 		}
 	}
 	}
 	
 	
-	map.getZones()[waterZoneId]->area().unite(waterArea);
+	{
+		Zone::Lock waterLock(map.getZones()[waterZoneId]->areaMutex);
+		map.getZones()[waterZoneId]->area().unite(waterArea);
+	}
 	Zone::Lock lock(zone.areaMutex);
 	Zone::Lock lock(zone.areaMutex);
 	zone.area().subtract(waterArea);
 	zone.area().subtract(waterArea);
 	zone.areaPossible().subtract(waterArea);
 	zone.areaPossible().subtract(waterArea);