Merge branch 'master' of https://github.com/xenia-project/xenia into canary_experimental

This commit is contained in:
Gliniak
2025-08-15 15:37:50 +02:00
78 changed files with 3438 additions and 2888 deletions

View File

@@ -469,16 +469,18 @@ void ShutdownLogging() {
}
static int g_saved_loglevel = static_cast<int>(LogLevel::Disabled);
void logging::internal::ToggleLogLevel() {
void logging::ToggleLogLevel() {
auto swap = g_saved_loglevel;
g_saved_loglevel = cvars::log_level;
cvars::log_level = swap;
}
bool logging::internal::ShouldLog(LogLevel log_level, uint32_t log_mask) {
bool logging::ShouldLog(LogLevel log_level, uint32_t log_mask) {
return static_cast<int32_t>(log_level) <= cvars::log_level &&
(log_mask & cvars::log_mask) == 0;
}
uint32_t logging::internal::GetLogLevel() { return cvars::log_level; }
std::pair<char*, size_t> logging::internal::GetThreadBuffer() {
@@ -496,7 +498,7 @@ void logging::internal::AppendLogLine(LogLevel log_level,
void logging::AppendLogLine(LogLevel log_level, const char prefix_char,
const std::string_view str, uint32_t log_mask) {
if (!internal::ShouldLog(log_level, log_mask) || !str.size()) {
if (!ShouldLog(log_level, log_mask) || !str.size()) {
return;
}
logger_->AppendLine(xe::threading::current_thread_id(), prefix_char,

View File

@@ -45,6 +45,7 @@ enum : uint32_t {
Cpu = 4,
};
}
class LogSink {
public:
virtual ~LogSink() = default;
@@ -81,14 +82,21 @@ void InitializeLogging(const std::string_view app_name);
void ShutdownLogging();
namespace logging {
namespace internal {
constexpr char kPrefixCharError = '!';
constexpr char kPrefixCharWarning = 'w';
constexpr char kPrefixCharInfo = 'i';
constexpr char kPrefixCharDebug = 'd';
void ToggleLogLevel();
//bool ShouldLog(LogLevel log_level);
bool ShouldLog(LogLevel log_level,
uint32_t log_mask = xe::LogSrc::Uncategorized);
namespace internal {
uint32_t GetLogLevel();
std::pair<char*, size_t> GetThreadBuffer();
XE_NOALIAS
void AppendLogLine(LogLevel log_level, const char prefix_char, size_t written);
@@ -167,26 +175,26 @@ struct LoggerBatch {
template <typename... Args>
XE_COLD void XELOGE(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Error, '!', format, args...);
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized, xe::LogLevel::Error,
xe::logging::kPrefixCharError, format, args...);
}
template <typename... Args>
XE_COLD void XELOGW(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Warning, 'w', format, args...);
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized, xe::LogLevel::Warning,
xe::logging::kPrefixCharWarning, format, args...);
}
template <typename... Args>
void XELOGI(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Info, 'i', format, args...);
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized, xe::LogLevel::Info,
xe::logging::kPrefixCharInfo, format, args...);
}
template <typename... Args>
void XELOGD(std::string_view format, const Args&... args) {
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized,
xe::LogLevel::Debug, 'd', format, args...);
xe::logging::AppendLogLineFormat(xe::LogSrc::Uncategorized, xe::LogLevel::Debug,
xe::logging::kPrefixCharDebug, format, args...);
}
template <typename... Args>