33 lines
795 B
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;
|
|
}
|