settings->setDefault("max_block_generate_distance", "5");
settings->setDefault("time_send_interval", "20");
settings->setDefault("time_speed", "96");
- settings->setDefault("server_unload_unused_data_timeout", "60");
- settings->setDefault("server_map_save_interval", "10");
+ settings->setDefault("server_unload_unused_data_timeout", "19");
+ settings->setDefault("server_map_save_interval", "1.238");
settings->setDefault("full_block_send_enable_min_time_from_building", "2.0");
settings->setDefault("enable_experimental", "false");
}
u32 block_count = 0;
u32 block_count_all = 0; // Number of blocks in memory
- beginSave();
+ // Don't do anything with sqlite unless something is really saved
+ bool save_started = false;
+
core::map<v2s16, MapSector*>::Iterator i = m_sectors.getIterator();
for(; i.atEnd() == false; i++)
{
sector->getBlocks(blocks);
core::list<MapBlock*>::Iterator j;
- //sqlite3_exec(m_database, "BEGIN;", NULL, NULL, NULL);
for(j=blocks.begin(); j!=blocks.end(); j++)
{
MapBlock *block = *j;
if(block->getModified() >= MOD_STATE_WRITE_NEEDED
|| only_changed == false)
{
+ // Lazy beginSave()
+ if(!save_started){
+ beginSave();
+ save_started = true;
+ }
+
modprofiler.add(block->getModifiedReason(), 1);
+
saveBlock(block);
block_count++;
<<block->getPos().Z<<")"
<<std::endl;*/
}
- //sqlite3_exec(m_database, "COMMIT;", NULL, NULL, NULL);
}
}
- endSave();
+ if(save_started)
+ endSave();
/*
Only print if something happened or saved whole map
m_env->step(dtime);
}
- const float map_timer_and_unload_dtime = 5.15;
+ const float map_timer_and_unload_dtime = 2.92;
if(m_map_timer_and_unload_interval.step(dtime, map_timer_and_unload_dtime))
{
JMutexAutoLock lock(m_env_mutex);