Fix for unloaded but active block problem

This commit is contained in:
Ciaran Gultnieks 2014-02-20 12:55:32 +00:00 committed by sapier
parent 1b840e8ef9
commit baee91bf78

@ -796,6 +796,14 @@ neighbor_found:
void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime) void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime)
{ {
// Reset usage timer immediately, otherwise a block that becomes active
// again at around the same time as it would normally be unloaded will
// get unloaded incorrectly. (I think this still leaves a small possibility
// of a race condition between this and server::AsyncRunStep, which only
// some kind of synchronisation will fix, but it at least reduces the window
// of opportunity for it to break from seconds to nanoseconds)
block->resetUsageTimer();
// Get time difference // Get time difference
u32 dtime_s = 0; u32 dtime_s = 0;
u32 stamp = block->getTimestamp(); u32 stamp = block->getTimestamp();