#include <libinput.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
typedef void (*LogCallback)(enum libinput_log_priority, const char *);
static LogCallback global_callback = NULL;
void log_handler(struct libinput *libinput, enum libinput_log_priority priority,
const char *format, va_list args) {
if (!global_callback)
return;
va_list args_copy;
va_copy(args_copy, args);
int size = vsnprintf(NULL, 0, format, args_copy);
va_end(args_copy);
if (size < 0)
return;
char *buffer = malloc(size + 1);
if (!buffer)
return;
vsnprintf(buffer, size + 1, format, args);
global_callback(priority, buffer);
free(buffer);
}
void set_log_callback(LogCallback callback) { global_callback = callback; }
libinput_log_handler get_log_handler() { return log_handler; }