Skip to content
Permalink
Browse files
Merge pull request #10572 from AdmiralCurtiss/ffmpeg-log-va-list
VideoCommon/FrameDump: Fix log messages with arguments.
  • Loading branch information
lioncash committed Apr 9, 2022
2 parents 120208a + df214af commit dcf27b9
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
@@ -103,6 +103,9 @@ void GenericLog(LogLevel level, LogType type, const char* file, int line, const
__attribute__((format(printf, 5, 6)))
#endif
;

void GenericLogV(LogLevel level, LogType type, const char* file, int line, const char* fmt,
va_list args);
} // namespace Common::Log

// Let the compiler optimize this out
@@ -139,6 +142,13 @@ void GenericLog(LogLevel level, LogType type, const char* file, int line, const
GENERIC_LOG(Common::Log::LogType::t, Common::Log::LogLevel::LDEBUG, __VA_ARGS__); \
} while (0)

#define GENERIC_LOG_V(t, v, fmt, args) \
do \
{ \
if (v <= Common::Log::MAX_LOGLEVEL) \
Common::Log::GenericLogV(v, t, __FILE__, __LINE__, fmt, args); \
} while (0)

// fmtlib capable API

#define GENERIC_LOG_FMT(t, v, format, ...) \
@@ -80,6 +80,22 @@ void GenericLog(LogLevel level, LogType type, const char* file, int line, const
instance->Log(level, type, file, line, message);
}

void GenericLogV(LogLevel level, LogType type, const char* file, int line, const char* fmt,
va_list args)
{
auto* instance = LogManager::GetInstance();
if (instance == nullptr)
return;

if (!instance->IsEnabled(type, level))
return;

char message[MAX_MSGLEN];
CharArrayFromFormatV(message, MAX_MSGLEN, fmt, args);

instance->Log(level, type, file, line, message);
}

void GenericLogFmtImpl(LogLevel level, LogType type, const char* file, int line,
fmt::string_view format, const fmt::format_args& args)
{
@@ -94,7 +94,7 @@ void InitAVCodec()
// keep libav debug messages visible in release build of dolphin
log_level = Common::Log::LogLevel::LINFO;

GENERIC_LOG(Common::Log::LogType::FRAMEDUMP, log_level, fmt, vl);
GENERIC_LOG_V(Common::Log::LogType::FRAMEDUMP, log_level, fmt, vl);
});

// TODO: We never call avformat_network_deinit.

0 comments on commit dcf27b9

Please sign in to comment.