From bf7ade420d3e77a24c029cc88430362dc949c07f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Fri, 28 Oct 2022 03:07:29 +0200 Subject: [PATCH] ao_pipewire: log generic stream errors --- audio/out/ao_pipewire.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/audio/out/ao_pipewire.c b/audio/out/ao_pipewire.c index 8197858d51..ac48966451 100644 --- a/audio/out/ao_pipewire.c +++ b/audio/out/ao_pipewire.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include "common/msg.h" @@ -59,6 +60,7 @@ struct priv { struct pw_stream *stream; struct pw_core *core; struct spa_hook stream_listener; + struct spa_hook core_listener; bool muted; float volume[2]; @@ -406,6 +408,18 @@ static bool session_has_sinks(struct ao *ao) return b; } +static void on_error(void *data, uint32_t id, int seq, int res, const char *message) +{ + struct ao *ao = data; + + MP_WARN(ao, "Error during playback: %s, %s\n", spa_strerror(res), message); +} + +static const struct pw_core_events core_events = { + .version = PW_VERSION_CORE_EVENTS, + .error = on_error, +}; + static int pipewire_init_boilerplate(struct ao *ao) { struct priv *p = ao->priv; @@ -437,6 +451,9 @@ static int pipewire_init_boilerplate(struct ao *ao) goto error; } + if (pw_core_add_listener(p->core, &p->core_listener, &core_events, ao) < 0) + goto error; + pw_thread_loop_unlock(p->loop); if (!session_has_sinks(ao)) {