diff options
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/logging/backend.cpp | 4 | ||||
| -rw-r--r-- | src/common/thread_queue_list.h | 16 | 
2 files changed, 18 insertions, 2 deletions
| diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index 5753b871a..12f6d0114 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp @@ -13,7 +13,7 @@  #include <vector>  #ifdef _WIN32  #include <share.h>   // For _SH_DENYWR -#include <windows.h> // For OutputDebugStringA +#include <windows.h> // For OutputDebugStringW  #else  #define _SH_DENYWR 0  #endif @@ -148,7 +148,7 @@ void FileBackend::Write(const Entry& entry) {  void DebuggerBackend::Write(const Entry& entry) {  #ifdef _WIN32 -    ::OutputDebugStringA(FormatLogMessage(entry).append(1, '\n').c_str()); +    ::OutputDebugStringW(Common::UTF8ToUTF16W(FormatLogMessage(entry).append(1, '\n')).c_str());  #endif  } diff --git a/src/common/thread_queue_list.h b/src/common/thread_queue_list.h index 133122c5f..e7594db68 100644 --- a/src/common/thread_queue_list.h +++ b/src/common/thread_queue_list.h @@ -49,6 +49,22 @@ struct ThreadQueueList {          return T();      } +    template <typename UnaryPredicate> +    T get_first_filter(UnaryPredicate filter) const { +        const Queue* cur = first; +        while (cur != nullptr) { +            if (!cur->data.empty()) { +                for (const auto& item : cur->data) { +                    if (filter(item)) +                        return item; +                } +            } +            cur = cur->next_nonempty; +        } + +        return T(); +    } +      T pop_first() {          Queue* cur = first;          while (cur != nullptr) { | 
