aboutsummaryrefslogtreecommitdiff
path: root/globalstep.lua
diff options
context:
space:
mode:
authorNatureFreshMilk <naturefreshmilk@github.com>2019-09-13 16:07:03 +0200
committerNatureFreshMilk <naturefreshmilk@github.com>2019-09-13 16:07:03 +0200
commitadfb1c244db6aacd46e4f80ca142caa83fd47ab8 (patch)
tree77efda33a7902120c5c49b9c040ac96ce998065d /globalstep.lua
parentda90c6b774d6c3070d10cc8743d5fa97a33dbf6f (diff)
downloadmesecons_debug-adfb1c244db6aacd46e4f80ca142caa83fd47ab8.tar.gz
mesecons_debug-adfb1c244db6aacd46e4f80ca142caa83fd47ab8.zip
globalstep min delay
Diffstat (limited to 'globalstep.lua')
-rw-r--r--globalstep.lua22
1 files changed, 22 insertions, 0 deletions
diff --git a/globalstep.lua b/globalstep.lua
index ccb0b3a..be02e67 100644
--- a/globalstep.lua
+++ b/globalstep.lua
@@ -3,6 +3,7 @@
local enabled = true
local dump = 0
+local step_index = 0
-- globalstep on/off
for i, globalstep in ipairs(minetest.registered_globalsteps) do
@@ -14,7 +15,15 @@ for i, globalstep in ipairs(minetest.registered_globalsteps) do
local modname = info.mod
if modname == "mesecons" then
+ step_index = step_index + 1
+ if step_index > 1 then
+ -- only override first globalstep in mesecons
+ return
+ end
+
local cooldown = 0
+ local last_run_time = 0
+
local fn = function(dtime)
if cooldown > 0 then
cooldown = cooldown - 1
@@ -22,19 +31,32 @@ for i, globalstep in ipairs(minetest.registered_globalsteps) do
end
if enabled then
+
local max_globalstep_time = tonumber(minetest.settings:get("mesecons_debug_max_globalstep_time")) or 75000
+ local min_delay_time = tonumber(minetest.settings:get("mesecons_debug_min_delay_time")) or 200000
local cooldown_steps = tonumber(minetest.settings:get("mesecons_debug_cooldown_steps")) or 5
local autoflush = minetest.settings:get_bool("mesecons_debug_autoflush", false)
+ local now = minetest.get_us_time()
+ if (now - last_run_time) < min_delay_time then
+ -- adhere to min delay
+ return
+ end
+
+ last_run_time = now
+
if dump > 0 then
+ -- dump action queue
mesecons_debug.dump_queue()
dump = dump - 1
end
+ -- execute with time measurement
local t0 = minetest.get_us_time()
globalstep(dtime)
local t1 = minetest.get_us_time()
local diff = t1 - t0
+
if diff > max_globalstep_time then
cooldown = cooldown_steps
minetest.log("warning", "[mesecons_debug] cooldown triggered")