mutsumi 0.3.0

wl-proxy based GTK MPV embedder
use libmpv2::Mpv;
use libmpv2_sys::{self as mpv, mpv_log_level};
use tracing::level_filters::LevelFilter;

pub fn request_logs(mpv: &Mpv) {
    let level = match LevelFilter::current() {
        LevelFilter::OFF => c"no",
        LevelFilter::ERROR | LevelFilter::WARN | LevelFilter::INFO => c"error",
        LevelFilter::DEBUG | LevelFilter::TRACE => c"trace",
    };

    unsafe {
        let _ = mpv::mpv_request_log_messages(mpv.ctx.as_ptr(), level.as_ptr());
    }
}

pub fn emit_log(prefix: &str, log_level: mpv_log_level, text: &str) {
    let message = text.trim_end_matches(['\r', '\n']);
    if message.is_empty() {
        return;
    }

    macro_rules! emit {
        ($level:expr) => {
            tracing::event!(target: "mutsumi::mpv", $level, component = prefix, "{message}")
        };
    }

    if log_level <= mpv::mpv_log_level_MPV_LOG_LEVEL_ERROR {
        emit!(tracing::Level::ERROR)
    }

    emit!(tracing::Level::DEBUG)
}