auto-obs-rb-restart/AutoOBSRBRestart.lua
Mylloon cf9880281f
All checks were successful
Upload release / build (push) Successful in 33s
only one timer at a time, usage of atomic
2024-10-07 22:41:12 +02:00

58 lines
1.3 KiB
Lua

obs = obslua
local wait_time = 7200 -- Wait 2 hours before checks
local idle_time = 120 -- Wait for any input in the last 2 minutes
function script_description()
return [[
Automatically restarts the replay buffer when IDLE
Author: Mylloon
]]
end
function script_load()
ffi = require("ffi")
ffi.cdef[[
void start_hook(void);
void stop_hook(void);
long long last_input_received(void);
]]
monitor = ffi.load(script_path() .. "monitor.dll")
obs.timer_add(check_restart, wait_time * 1000)
end
function script_unload()
obs.timer_remove(check_restart)
obs.timer_remove(check_idle)
monitor.stop_hook()
end
function check_restart()
obs.timer_remove(check_restart)
monitor.start_hook()
obs.timer_add(check_idle, idle_time * 1000)
end
function check_idle()
obs.timer_remove(check_idle)
local current_time = os.time()
local last_input_time = monitor.last_input_received()
if current_time - last_input_time >= idle_time then
monitor.stop_hook()
obs.obs_frontend_replay_buffer_stop()
obs.timer_add(start_replay_buffer, 2000)
else
obs.timer_add(check_idle, idle_time * 1000)
end
end
function start_replay_buffer()
obs.timer_remove(start_replay_buffer)
obs.obs_frontend_replay_buffer_start()
obs.timer_add(check_restart, wait_time * 1000)
end