summaryrefslogtreecommitdiffstats
path: root/audio/out
diff options
context:
space:
mode:
authorThomas Weißschuh <thomas@t-8ch.de>2023-02-14 05:09:21 +0000
committerPhilip Langdale <github.philipl@overt.org>2023-02-15 16:37:20 -0800
commitc3f326bc13380284d26a221b8c5bac33d2488be7 (patch)
tree4159486889768b2b1873b481a3954b8cd1e6bd55 /audio/out
parent16ef237da56afc6b38528c74d006a068e9efc5e3 (diff)
downloadmpv-c3f326bc13380284d26a221b8c5bac33d2488be7.tar.bz2
mpv-c3f326bc13380284d26a221b8c5bac33d2488be7.tar.xz
ao_pipewire: fix removal of zeroed hooks on old pipewire
Older versions of pipewire segfault when calling spa_hook_remove() on hooks that are zeroed. Add a backfill for the logic added by pipewire 0.3.57. Being able to remove zeroed hooks makes errorhandling much easier. See #11309
Diffstat (limited to 'audio/out')
-rw-r--r--audio/out/ao_pipewire.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/audio/out/ao_pipewire.c b/audio/out/ao_pipewire.c
index 5b048a56e7..62d96c712d 100644
--- a/audio/out/ao_pipewire.c
+++ b/audio/out/ao_pipewire.c
@@ -55,6 +55,11 @@ static inline int pw_stream_get_time_n(struct pw_stream *stream, struct pw_time
}
#endif
+#if !PW_CHECK_VERSION(0, 3, 57)
+// Earlier versions segfault on zeroed hooks
+#define spa_hook_remove(hook) if ((hook)->link.prev) spa_hook_remove(hook)
+#endif
+
enum init_state {
INIT_STATE_NONE,
INIT_STATE_SUCCESS,