From d09c545f03445f0e7439776940e68559f96bed06 Mon Sep 17 00:00:00 2001 From: momo5502 Date: Mon, 27 Feb 2023 18:23:25 +0100 Subject: [PATCH] Schedule dvar write only every 5s --- src/client/component/dvars.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/client/component/dvars.cpp b/src/client/component/dvars.cpp index 4b048071..f2b697c9 100644 --- a/src/client/component/dvars.cpp +++ b/src/client/component/dvars.cpp @@ -13,6 +13,7 @@ namespace dvars { namespace { + std::atomic_bool dvar_write_scheduled{false}; bool initial_config_read = false; utils::hook::detour dvar_set_variant_hook; @@ -148,13 +149,27 @@ namespace dvars utils::io::write_file(get_config_file_path(), config_buffer); } + void schedule_dvar_write() + { + if (dvar_write_scheduled.exchange(true)) + { + return; + } + + scheduler::once([] + { + dvar_write_scheduled = false; + write_archive_dvars(); + }, scheduler::main, 10s); + } + void dvar_set_variant_stub(game::dvar_t* dvar, game::DvarValue* value, unsigned int source) { dvar_set_variant_hook.invoke(dvar, value, source); if (initial_config_read && dvar->debugName) { - write_archive_dvars(); + schedule_dvar_write(); } }