summaryrefslogtreecommitdiff
path: root/src/emerge.cpp
diff options
context:
space:
mode:
authorkwolekr <mirrorisim@gmail.com>2013-02-14 20:36:58 -0500
committerkwolekr <mirrorisim@gmail.com>2013-02-25 22:59:17 -0500
commit76217939e05bdd8d06fa7113902a74b02deeb915 (patch)
tree21922c097e14c070b87442fa8d8d9ecc97ca250d /src/emerge.cpp
parent206ec36c8e50a017636a70345b95f79feffb2446 (diff)
downloadminetest-76217939e05bdd8d06fa7113902a74b02deeb915.tar.gz
minetest-76217939e05bdd8d06fa7113902a74b02deeb915.tar.bz2
minetest-76217939e05bdd8d06fa7113902a74b02deeb915.zip
Add emerge queue limit configuration
Diffstat (limited to 'src/emerge.cpp')
-rw-r--r--src/emerge.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/emerge.cpp b/src/emerge.cpp
index e2b9e5a6c..b785c8688 100644
--- a/src/emerge.cpp
+++ b/src/emerge.cpp
@@ -49,6 +49,10 @@ EmergeManager::EmergeManager(IGameDef *gamedef, BiomeDefManager *bdef) {
this->params = NULL;
this->mapgen = NULL;
+ qlimit_total = g_settings->getU16("emergequeue_limit_total");
+ qlimit_diskonly = g_settings->getU16("emergequeue_limit_diskonly");
+ qlimit_generate = g_settings->getU16("emergequeue_limit_generate");
+
queuemutex.Init();
emergethread = new EmergeThread((Server *)gamedef);
}
@@ -98,23 +102,16 @@ bool EmergeManager::enqueueBlockEmerge(u16 peer_id, v3s16 p, bool allow_generate
if (allow_generate)
flags |= BLOCK_EMERGE_ALLOWGEN;
- //TODO:
- // add logic to select which emergethread to add it to
- // - one with the least queue contents?
- // - if a queue is too full, move onto another one
- // - use the peer id sometime
-
{
JMutexAutoLock queuelock(queuemutex);
count = blocks_enqueued.size();
- u16 queuelimit_total = 256;
- if (count >= queuelimit_total)
+ if (count >= qlimit_total)
return false;
count = peer_queue_count[peer_id];
- u16 queuelimit_peer = allow_generate ? 1 : 5;
- if (count >= queuelimit_peer)
+ u16 qlimit_peer = allow_generate ? qlimit_generate : qlimit_diskonly;
+ if (count >= qlimit_peer)
return false;
iter = blocks_enqueued.find(p);