ferretro/ferretro_base/src/retro/c_ext/log_wrapper.c

33 lines
795 B
C

#include <stdio.h>
#include <stdarg.h>
#include "libretro.h"
typedef void (*rust_retro_ffi_log_print_t)(enum retro_log_level level, const char* msg);
rust_retro_ffi_log_print_t g_rust_retro_ffi_log_print = NULL;
void retro_log_snprintf_wrapper(enum retro_log_level level, const char* fmt, ...)
{
if (g_rust_retro_ffi_log_print != NULL)
{
char msg[4096];
va_list args;
va_start(args, fmt);
vsnprintf(msg, sizeof(msg), fmt, args);
va_end(args);
g_rust_retro_ffi_log_print(level, msg);
}
}
bool c_ext_handle_get_log_interface(struct retro_log_callback* retro_cb)
{
retro_cb->log = retro_log_snprintf_wrapper;
return true;
}
void c_ext_set_log_print_cb(rust_retro_ffi_log_print_t cb)
{
g_rust_retro_ffi_log_print = cb;
}