Merge pull request #10572 from AdmiralCurtiss/ffmpeg-log-va-list

VideoCommon/FrameDump: Fix log messages with arguments.
This commit is contained in:
Mai M 2022-04-08 20:47:57 -04:00 committed by GitHub
commit dcf27b91ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 1 deletions

View File

@ -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, ...) \

View File

@ -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)
{

View File

@ -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.