diff options
author | Thomas Weißschuh <thomas@t-8ch.de> | 2023-02-14 05:09:21 +0000 |
---|---|---|
committer | Philip Langdale <github.philipl@overt.org> | 2023-02-15 16:37:20 -0800 |
commit | c3f326bc13380284d26a221b8c5bac33d2488be7 (patch) | |
tree | 4159486889768b2b1873b481a3954b8cd1e6bd55 /audio/out | |
parent | 16ef237da56afc6b38528c74d006a068e9efc5e3 (diff) | |
download | mpv-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.c | 5 |
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, |