diff options
author | Max Kellermann <max@duempel.org> | 2010-11-07 15:30:18 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2010-11-07 15:30:18 +0100 |
commit | 4478b3ef741eecf7ed0cf94179986c6f86a57287 (patch) | |
tree | b10d931fa854e12d813ec796e16a45ae7af930e3 /src/output_thread.c | |
parent | 5a263206803556a600a75dd5e1813feb510af268 (diff) | |
parent | dec7090198a0bbdd91ab8c531b84624f8bde4da9 (diff) | |
download | mpd-4478b3ef741eecf7ed0cf94179986c6f86a57287.tar.gz mpd-4478b3ef741eecf7ed0cf94179986c6f86a57287.tar.xz mpd-4478b3ef741eecf7ed0cf94179986c6f86a57287.zip |
Merge release 0.15.14 from branch 'v0.15.x'
Conflicts:
NEWS
configure.ac
src/decoder_control.c
src/decoder_control.h
src/input/rewind_input_plugin.c
src/output_control.c
src/output_thread.c
src/player_thread.c
Diffstat (limited to 'src/output_thread.c')
-rw-r--r-- | src/output_thread.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/output_thread.c b/src/output_thread.c index 8b120325c..380956fac 100644 --- a/src/output_thread.c +++ b/src/output_thread.c @@ -134,10 +134,18 @@ ao_open(struct audio_output *ao) struct audio_format_string af_string; assert(!ao->open); - assert(ao->fail_timer == NULL); assert(ao->pipe != NULL); assert(ao->chunk == NULL); + if (ao->fail_timer != NULL) { + /* this can only happen when this + output thread fails while + audio_output_open() is run in the + player thread */ + g_timer_destroy(ao->fail_timer); + ao->fail_timer = NULL; + } + /* enable the device (just in case the last enable has failed) */ if (!ao_enable(ao)) @@ -455,7 +463,12 @@ ao_play_chunk(struct audio_output *ao, const struct music_chunk *chunk) /* don't automatically reopen this device for 10 seconds */ + g_mutex_lock(ao->mutex); + + assert(ao->fail_timer == NULL); ao->fail_timer = g_timer_new(); + + g_mutex_unlock(ao->mutex); return false; } |