output/osx: clear render buffer when there's not enough data

When we don't have enough data, generate some silence, hoping the
input buffer will fill soon.  Reducing the render buffer size is not
legal.
This commit is contained in:
Max Kellermann 2011-12-24 17:54:41 +01:00
parent f405d27c56
commit 97b4a6b51f
2 changed files with 4 additions and 2 deletions

1
NEWS
View File

@ -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

View File

@ -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;
}