diff options
author | bunnei <bunneidev@gmail.com> | 2015-03-09 20:42:18 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2015-03-09 20:42:18 +0100 |
commit | 3da94a597b5642c1b586700d72255589cf5a0cdf (patch) | |
tree | 9f73ded034bceaab1f7e41cf19fe987d19b2e083 | |
parent | Merge pull request #645 from lioncash/ldm (diff) | |
parent | Logging: check for filter before sending to the queue, to skip all heavy formatting on the other thread. (diff) | |
download | yuzu-3da94a597b5642c1b586700d72255589cf5a0cdf.tar yuzu-3da94a597b5642c1b586700d72255589cf5a0cdf.tar.gz yuzu-3da94a597b5642c1b586700d72255589cf5a0cdf.tar.bz2 yuzu-3da94a597b5642c1b586700d72255589cf5a0cdf.tar.lz yuzu-3da94a597b5642c1b586700d72255589cf5a0cdf.tar.xz yuzu-3da94a597b5642c1b586700d72255589cf5a0cdf.tar.zst yuzu-3da94a597b5642c1b586700d72255589cf5a0cdf.zip |
-rw-r--r-- | src/citra/citra.cpp | 3 | ||||
-rw-r--r-- | src/citra_qt/main.cpp | 3 | ||||
-rw-r--r-- | src/common/logging/backend.cpp | 9 | ||||
-rw-r--r-- | src/common/logging/backend.h | 3 | ||||
-rw-r--r-- | src/common/logging/filter.h | 2 | ||||
-rw-r--r-- | src/common/logging/text_formatter.cpp | 7 | ||||
-rw-r--r-- | src/common/logging/text_formatter.h | 3 |
7 files changed, 21 insertions, 9 deletions
diff --git a/src/citra/citra.cpp b/src/citra/citra.cpp index 69f0b35b3..2c6ced920 100644 --- a/src/citra/citra.cpp +++ b/src/citra/citra.cpp @@ -22,7 +22,8 @@ int __cdecl main(int argc, char **argv) { std::shared_ptr<Log::Logger> logger = Log::InitGlobalLogger(); Log::Filter log_filter(Log::Level::Debug); - std::thread logging_thread(Log::TextLoggingLoop, logger, &log_filter); + Log::SetFilter(&log_filter); + std::thread logging_thread(Log::TextLoggingLoop, logger); SCOPE_EXIT({ logger->Close(); logging_thread.join(); diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp index e3db3c20a..e5ca04124 100644 --- a/src/citra_qt/main.cpp +++ b/src/citra_qt/main.cpp @@ -316,7 +316,8 @@ int __cdecl main(int argc, char* argv[]) { std::shared_ptr<Log::Logger> logger = Log::InitGlobalLogger(); Log::Filter log_filter(Log::Level::Info); - std::thread logging_thread(Log::TextLoggingLoop, logger, &log_filter); + Log::SetFilter(&log_filter); + std::thread logging_thread(Log::TextLoggingLoop, logger); SCOPE_EXIT({ logger->Close(); logging_thread.join(); diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp index 7c1010b22..7b479b569 100644 --- a/src/common/logging/backend.cpp +++ b/src/common/logging/backend.cpp @@ -135,9 +135,18 @@ Entry CreateEntry(Class log_class, Level log_level, return std::move(entry); } +static Filter* filter; + +void SetFilter(Filter* new_filter) { + filter = new_filter; +} + void LogMessage(Class log_class, Level log_level, const char* filename, unsigned int line_nr, const char* function, const char* format, ...) { + if (!filter->CheckMessage(log_class, log_level)) + return; + va_list args; va_start(args, format); Entry entry = CreateEntry(log_class, log_level, diff --git a/src/common/logging/backend.h b/src/common/logging/backend.h index 1c44c929e..3114f864c 100644 --- a/src/common/logging/backend.h +++ b/src/common/logging/backend.h @@ -10,6 +10,7 @@ #include "common/concurrent_ring_buffer.h" +#include "common/logging/filter.h" #include "common/logging/log.h" namespace Log { @@ -131,4 +132,6 @@ Entry CreateEntry(Class log_class, Level log_level, /// Initializes the default Logger. std::shared_ptr<Logger> InitGlobalLogger(); +void SetFilter(Filter* filter); + } diff --git a/src/common/logging/filter.h b/src/common/logging/filter.h index c3da9989f..b53e4e633 100644 --- a/src/common/logging/filter.h +++ b/src/common/logging/filter.h @@ -2,6 +2,8 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#pragma once + #include <array> #include <string> diff --git a/src/common/logging/text_formatter.cpp b/src/common/logging/text_formatter.cpp index ef5739d84..36c91c4f6 100644 --- a/src/common/logging/text_formatter.cpp +++ b/src/common/logging/text_formatter.cpp @@ -11,7 +11,6 @@ #endif #include "common/logging/backend.h" -#include "common/logging/filter.h" #include "common/logging/log.h" #include "common/logging/text_formatter.h" @@ -116,7 +115,7 @@ void PrintColoredMessage(const Entry& entry) { #endif } -void TextLoggingLoop(std::shared_ptr<Logger> logger, const Filter* filter) { +void TextLoggingLoop(std::shared_ptr<Logger> logger) { std::array<Entry, 256> entry_buffer; while (true) { @@ -126,9 +125,7 @@ void TextLoggingLoop(std::shared_ptr<Logger> logger, const Filter* filter) { } for (size_t i = 0; i < num_entries; ++i) { const Entry& entry = entry_buffer[i]; - if (filter->CheckMessage(entry.log_class, entry.log_level)) { - PrintColoredMessage(entry); - } + PrintColoredMessage(entry); } } } diff --git a/src/common/logging/text_formatter.h b/src/common/logging/text_formatter.h index 2f05794f0..8474a1904 100644 --- a/src/common/logging/text_formatter.h +++ b/src/common/logging/text_formatter.h @@ -11,7 +11,6 @@ namespace Log { class Logger; struct Entry; -class Filter; /** * Attempts to trim an arbitrary prefix from `path`, leaving only the part starting at `root`. It's @@ -36,6 +35,6 @@ void PrintColoredMessage(const Entry& entry); * Logging loop that repeatedly reads messages from the provided logger and prints them to the * console. It is the baseline barebones log outputter. */ -void TextLoggingLoop(std::shared_ptr<Logger> logger, const Filter* filter); +void TextLoggingLoop(std::shared_ptr<Logger> logger); } |