summaryrefslogtreecommitdiffstats
path: root/audio
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 /audio
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.
Diffstat (limited to 'audio')
-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;