diff options
author | waker <wakeroid@gmail.com> | 2011-03-21 22:05:26 +0100 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2011-03-21 22:05:26 +0100 |
commit | 7e88e3271a6d82fe3e97b43b1a81f0405c469d1c (patch) | |
tree | 6d5f0901b7e98c6f49361bf609b2f2de8f01b0be /streamer.c | |
parent | 63d20539742a50dee44f13325825ee72efd284cb (diff) |
fixed streamer deadlock when switching output formats
Diffstat (limited to 'streamer.c')
-rw-r--r-- | streamer.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -1119,6 +1119,7 @@ streamer_thread (void *ctx) { } } streamer_lock (); + if (!formatchanged && !skip && streamer_ringbuf.remaining < (STREAM_BUFFER_SIZE-blocksize * MAX_DSP_RATIO)) { int sz = STREAM_BUFFER_SIZE - streamer_ringbuf.remaining; int minsize = blocksize; @@ -1744,6 +1745,11 @@ streamer_get_fill (void) { int streamer_ok_to_read (int len) { + DB_output_t *output = plug_get_output (); + if (formatchanged && bytes_until_next_song <= 0) { + streamer_set_output_format (); + formatchanged = 0; + } if (len >= 0 && (bytes_until_next_song > 0 || streamer_ringbuf.remaining >= (len*2))) { return 1; } |