summaryrefslogtreecommitdiff
path: root/Source/Core/Common/MsgHandler.cpp
diff options
context:
space:
mode:
authorSilent <zdanio95@gmail.com>2019-07-20 21:03:45 +0200
committerSilent <zdanio95@gmail.com>2019-07-20 21:03:45 +0200
commite792a67dc60ad1a11c0b1ed9213a6d0aca0fd1df (patch)
tree7a9bc95d18ee2959bd7844d401bdc7c7fbb2ce95 /Source/Core/Common/MsgHandler.cpp
parentfc8859a4148ba73100c4e3cfd6729c187543ddde (diff)
Improve thread safety and remove an unnecessary string allocation from MsgAlert
s_msg_handler still seems thread unsafe, not sure if it should be or not
Diffstat (limited to 'Source/Core/Common/MsgHandler.cpp')
-rw-r--r--Source/Core/Common/MsgHandler.cpp30
1 files changed, 11 insertions, 19 deletions
diff --git a/Source/Core/Common/MsgHandler.cpp b/Source/Core/Common/MsgHandler.cpp
index 6b24991526..556caaf78c 100644
--- a/Source/Core/Common/MsgHandler.cpp
+++ b/Source/Core/Common/MsgHandler.cpp
@@ -83,35 +83,27 @@ std::string GetStringT(const char* string)
bool MsgAlert(bool yes_no, MsgType style, const char* format, ...)
{
// Read message and write it to the log
- std::string caption;
+ const char* caption = "";
char buffer[2048];
- static std::string info_caption;
- static std::string warn_caption;
- static std::string ques_caption;
- static std::string crit_caption;
-
- if (info_caption.empty())
- {
- info_caption = s_str_translator(_trans("Information"));
- ques_caption = s_str_translator(_trans("Question"));
- warn_caption = s_str_translator(_trans("Warning"));
- crit_caption = s_str_translator(_trans("Critical"));
- }
+ static const std::string info_caption = s_str_translator(_trans("Information"));
+ static const std::string warn_caption = s_str_translator(_trans("Question"));
+ static const std::string ques_caption = s_str_translator(_trans("Warning"));
+ static const std::string crit_caption = s_str_translator(_trans("Critical"));
switch (style)
{
case MsgType::Information:
- caption = info_caption;
+ caption = info_caption.c_str();
break;
case MsgType::Question:
- caption = ques_caption;
+ caption = ques_caption.c_str();
break;
case MsgType::Warning:
- caption = warn_caption;
+ caption = warn_caption.c_str();
break;
case MsgType::Critical:
- caption = crit_caption;
+ caption = crit_caption.c_str();
break;
}
@@ -120,13 +112,13 @@ bool MsgAlert(bool yes_no, MsgType style, const char* format, ...)
CharArrayFromFormatV(buffer, sizeof(buffer) - 1, s_str_translator(format).c_str(), args);
va_end(args);
- ERROR_LOG(MASTER_LOG, "%s: %s", caption.c_str(), buffer);
+ ERROR_LOG(MASTER_LOG, "%s: %s", caption, buffer);
// Don't ignore questions, especially AskYesNo, PanicYesNo could be ignored
if (s_msg_handler != nullptr &&
(s_alert_enabled || style == MsgType::Question || style == MsgType::Critical))
{
- return s_msg_handler(caption.c_str(), buffer, yes_no, style);
+ return s_msg_handler(caption, buffer, yes_no, style);
}
return true;