summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-11 04:14:41 +0100
committerDiogo Franco (Kovensky) <diogomfranco@gmail.com>2015-01-25 17:00:07 +0900
commitf551da2cfb4e77fb53c41677205948d794211b2f (patch)
tree3f8d15d25e1810e8d4667d4dfa6bd8e79a8aaa5a
parentac06ba0aecfe764009602cec0cbc3f45b7538a1a (diff)
downloadmpv-f551da2cfb4e77fb53c41677205948d794211b2f.tar.bz2
mpv-f551da2cfb4e77fb53c41677205948d794211b2f.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 ae708df59e..8f60d91c87 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;