summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-11 04:14:41 +0100
committerwm4 <wm4@nowhere>2015-01-11 04:19:40 +0100
commit2c9180f47ba28a2117312da474d14b130baf1589 (patch)
treebf0be76dec84708b03938c4bfae3e0179dd5333b
parent3b091995a03f431cc8c14e2e4488af6f66191621 (diff)
downloadmpv-2c9180f47ba28a2117312da474d14b130baf1589.tar.bz2
mpv-2c9180f47ba28a2117312da474d14b130baf1589.tar.xz
ao_pulse: exit AO if stream fails
This can for example reproduced by killing the pulseaudio server. If this happens, just try to reload the AO, instead of breaking everything forever.
-rw-r--r--audio/out/ao_pulse.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/audio/out/ao_pulse.c b/audio/out/ao_pulse.c
index 1f07189779..d96b9fb98d 100644
--- a/audio/out/ao_pulse.c
+++ b/audio/out/ao_pulse.c
@@ -86,8 +86,12 @@ static void stream_state_cb(pa_stream *s, void *userdata)
struct ao *ao = userdata;
struct priv *priv = ao->priv;
switch (pa_stream_get_state(s)) {
- case PA_STREAM_READY:
case PA_STREAM_FAILED:
+ MP_VERBOSE(ao, "Stream failed.\n");
+ ao_request_reload(ao);
+ pa_threaded_mainloop_signal(priv->mainloop, 0);
+ break;
+ case PA_STREAM_READY:
case PA_STREAM_TERMINATED:
pa_threaded_mainloop_signal(priv->mainloop, 0);
break;