From 55117f59ee5ef8d770b56dec2278692a8f0854e3 Mon Sep 17 00:00:00 2001 From: Vestral <16190165+Vestrel@users.noreply.github.com> Date: Sun, 5 Jan 2025 08:21:26 +0900 Subject: [PATCH] Add Cubeb log callback --- rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp | 15 +++++++++++++++ rpcs3/Emu/Audio/Cubeb/CubebBackend.h | 1 + 2 files changed, 16 insertions(+) diff --git a/rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp b/rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp index 750e8f0ccd88..0b5550492fe2 100644 --- a/rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp +++ b/rpcs3/Emu/Audio/Cubeb/CubebBackend.cpp @@ -1,6 +1,7 @@ #include "Emu/Audio/Cubeb/CubebBackend.h" #include +#include #include "util/logs.hpp" #include "Emu/Audio/audio_device_enumerator.h" @@ -38,6 +39,8 @@ CubebBackend::CubebBackend() m_dev_collection_cb_enabled = true; } + cubeb_set_log_callback(CUBEB_LOG_NORMAL, log_cb); + Cubeb.notice("Using backend %s", cubeb_get_backend_id(ctx)); std::lock_guard cb_lock{m_state_cb_mutex}; @@ -568,3 +571,15 @@ void CubebBackend::device_collection_changed_cb(cubeb* context, void* user_ptr) cubeb->m_state_callback(AudioStateEvent::DEFAULT_DEVICE_MAYBE_CHANGED); } } + +void CubebBackend::log_cb(const char* fmt, ...) +{ + char buf[256] = "Cubeb log msg: "; + static constexpr size_t prefix_size = sizeof("Cubeb log msg: ") - 1; + + va_list va; + va_start(va, fmt); + vsnprintf(buf + prefix_size, sizeof(buf) - prefix_size, fmt, va); + va_end(va); + Cubeb.notice(buf); +} diff --git a/rpcs3/Emu/Audio/Cubeb/CubebBackend.h b/rpcs3/Emu/Audio/Cubeb/CubebBackend.h index f8c53e7e8419..93456adc53d8 100644 --- a/rpcs3/Emu/Audio/Cubeb/CubebBackend.h +++ b/rpcs3/Emu/Audio/Cubeb/CubebBackend.h @@ -53,6 +53,7 @@ class CubebBackend final : public AudioBackend static long data_cb(cubeb_stream* stream, void* user_ptr, void const* input_buffer, void* output_buffer, long nframes); static void state_cb(cubeb_stream* stream, void* user_ptr, cubeb_state state); static void device_collection_changed_cb(cubeb* context, void* user_ptr); + static void log_cb(const char *fmt, ...); struct device_handle {