diff options
author | Max Kellermann <max@duempel.org> | 2009-08-14 11:52:36 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-08-14 11:52:36 +0200 |
commit | f38ce5408b5d0126b8cfe730c91d5203ee59a987 (patch) | |
tree | 1caecaa642051b5cd7820471aecde19f3da97e42 /src/output | |
parent | 7133f560ec24c90671a40c9f9bc9cea6eb31cc17 (diff) | |
download | mpd-f38ce5408b5d0126b8cfe730c91d5203ee59a987.tar.gz mpd-f38ce5408b5d0126b8cfe730c91d5203ee59a987.tar.xz mpd-f38ce5408b5d0126b8cfe730c91d5203ee59a987.zip |
output/shout: minimize the unpause latency
During the pause loop, manually sleep for 500ms if shout_delay()
returns a value greater than that. Don't exhaust libshout's buffer.
Diffstat (limited to 'src/output')
-rw-r--r-- | src/output/shout_plugin.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/output/shout_plugin.c b/src/output/shout_plugin.c index 8e091679e..4412d26ff 100644 --- a/src/output/shout_plugin.c +++ b/src/output/shout_plugin.c @@ -448,8 +448,15 @@ my_shout_play(void *data, const void *chunk, size_t size, GError **error) static bool my_shout_pause(void *data) { + struct shout_data *sd = (struct shout_data *)data; static const char silence[1020]; + if (shout_delay(sd->shout_conn) > 500) { + /* cap the latency for unpause */ + g_usleep(500000); + return true; + } + return my_shout_play(data, silence, sizeof(silence), NULL); } |