aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--src/output/osx_plugin.c5
2 files changed, 4 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 212648f20..8a2f11be6 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ ver 0.16.7 (2011/??/??)
- httpd: fix excessive buffering
- openal: force 16 bit playback, as 8 bit doesn't work
- osx: remove sleep call from render callback
+ - osx: clear render buffer when there's not enough data
* fix moving after current song
diff --git a/src/output/osx_plugin.c b/src/output/osx_plugin.c
index d7abae096..5284afc29 100644
--- a/src/output/osx_plugin.c
+++ b/src/output/osx_plugin.c
@@ -118,7 +118,6 @@ osx_render(void *vdata,
g_mutex_lock(od->mutex);
bytes_to_copy = MIN(od->len, buffer_size);
- buffer_size = bytes_to_copy;
od->len -= bytes_to_copy;
trailer_length = od->buffer_size - od->pos;
@@ -140,7 +139,9 @@ osx_render(void *vdata,
g_cond_signal(od->condition);
g_mutex_unlock(od->mutex);
- buffer->mDataByteSize = buffer_size;
+ if (bytes_to_copy < buffer_size)
+ memset((unsigned char*)buffer->mData + bytes_to_copy, 0,
+ buffer_size - bytes_to_copy);
return 0;
}