52 lines
1.2 KiB
Lua
52 lines
1.2 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"
|
||
|
end
|
||
|
|
||
|
function script_load()
|
||
|
ffi = require("ffi")
|
||
|
ffi.cdef[[
|
||
|
void start_hook(void);
|
||
|
void stop_hook(void);
|
||
|
int last_time_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)
|
||
|
end
|
||
|
|
||
|
function check_restart()
|
||
|
monitor.start_hook()
|
||
|
obs.timer_add(check_idle, idle_time * 1000)
|
||
|
end
|
||
|
|
||
|
function check_idle()
|
||
|
local current_time = os.time()
|
||
|
local last_input_time = monitor.last_time_input_received()
|
||
|
|
||
|
if current_time - last_input_time >= wait_time then
|
||
|
monitor.stop_hook()
|
||
|
obs.timer_remove(check_idle)
|
||
|
restart_replay_buffer()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function restart_replay_buffer()
|
||
|
obs.obs_frontend_replay_buffer_stop()
|
||
|
obs.timer_add(start_replay_buffer, 2000)
|
||
|
end
|
||
|
|
||
|
function start_replay_buffer()
|
||
|
obs.timer_remove(start_replay_buffer)
|
||
|
obs.obs_frontend_replay_buffer_start()
|
||
|
end
|