From 45de72ea78609d9a991157547b62803da750cf7c Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sat, 7 May 2022 12:57:14 +0200 Subject: [PATCH] Prevent multiple threads logging at the same time (logging over each other) --- r5dev/engine/sys_utils.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/r5dev/engine/sys_utils.cpp b/r5dev/engine/sys_utils.cpp index 6d92988e..10f30502 100644 --- a/r5dev/engine/sys_utils.cpp +++ b/r5dev/engine/sys_utils.cpp @@ -15,6 +15,7 @@ #include "vgui/vgui_debugpanel.h" #include "gameui/IConsole.h" #endif // !DEDICATED +static std::mutex m; //----------------------------------------------------------------------------- // Purpose: Exit engine with error @@ -106,6 +107,7 @@ void DevMsg(eDLL_T idx, const char* fmt, ...) static std::shared_ptr wconsole = spdlog::get("win_console"); static std::shared_ptr sqlogger = spdlog::get("dev_message_logger"); + m.lock(); {///////////////////////////// va_list args{}; va_start(args, fmt); @@ -164,6 +166,7 @@ void DevMsg(eDLL_T idx, const char* fmt, ...) g_spd_sys_w_oss.str(""); g_spd_sys_w_oss.clear(); #endif // !DEDICATED + m.unlock(); } //----------------------------------------------------------------------------- @@ -184,6 +187,7 @@ void Warning(eDLL_T idx, const char* fmt, ...) static std::shared_ptr wconsole = spdlog::get("win_console"); static std::shared_ptr sqlogger = spdlog::get("warn_message_logger"); + m.lock(); {///////////////////////////// va_list args{}; va_start(args, fmt); @@ -240,6 +244,7 @@ void Warning(eDLL_T idx, const char* fmt, ...) g_spd_sys_w_oss.str(""); g_spd_sys_w_oss.clear(); #endif // !DEDICATED + m.unlock(); } //----------------------------------------------------------------------------- @@ -260,6 +265,7 @@ void Error(eDLL_T idx, const char* fmt, ...) static std::shared_ptr wconsole = spdlog::get("win_console"); static std::shared_ptr sqlogger = spdlog::get("error_message_logger"); + m.lock(); {///////////////////////////// va_list args{}; va_start(args, fmt); @@ -316,6 +322,7 @@ void Error(eDLL_T idx, const char* fmt, ...) g_spd_sys_w_oss.str(""); g_spd_sys_w_oss.clear(); #endif // !DEDICATED + m.unlock(); } //-----------------------------------------------------------------------------