From 9050febf06d2dc2d031a316a0e0f5a7ba83da8bb Mon Sep 17 00:00:00 2001 From: Lionheart Zhang Date: Sat, 24 Dec 2016 03:08:22 +0800 Subject: [PATCH] UI: Convert to wide before outputting debug text (win) Fixes an issue where non-english debug text wouldn't display correctly in the debugger output on windows. Also, only output debug text when actually debugging. Closes jp9000/obs-studio#734 --- UI/obs-app.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index 8fd6f0bbc..607b86a17 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -316,8 +317,19 @@ static void do_log(int log_level, const char *msg, va_list args, void *param) vsnprintf(str, 4095, msg, args); #ifdef _WIN32 - OutputDebugStringA(str); - OutputDebugStringA("\n"); + if (IsDebuggerPresent()) { + static wstring wide_buf; + int wNum = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0); + if (wNum > 1) { + wide_buf.reserve(wNum + 1); + wide_buf.resize(wNum - 1); + MultiByteToWideChar(CP_UTF8, 0, str, -1, &wide_buf[0], + wNum); + wide_buf.push_back('\n'); + + OutputDebugStringW(wide_buf.c_str()); + } + } #else def_log_handler(log_level, msg, args2, nullptr); #endif