diff options
-rw-r--r-- | libao2/ao_dsound.c | 1 | ||||
-rw-r--r-- | libao2/ao_win32.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/libao2/ao_dsound.c b/libao2/ao_dsound.c index 51da6c6e84..79f70b1b76 100644 --- a/libao2/ao_dsound.c +++ b/libao2/ao_dsound.c @@ -605,6 +605,7 @@ static int play(void* data, int len, int flags) if(space > buffer_size)space -= buffer_size; // write_offset < play_offset if(space < len) len = space; + if (!(flags & AOPLAY_FINAL_CHUNK)) len = (len / ao_data.outburst) * ao_data.outburst; return write_buffer(data, len); } diff --git a/libao2/ao_win32.c b/libao2/ao_win32.c index 1f9a5e9663..0f39b51767 100644 --- a/libao2/ao_win32.c +++ b/libao2/ao_win32.c @@ -322,6 +322,7 @@ static int write_waveOutBuffer(unsigned char* data,int len){ // return: number of bytes played static int play(void* data,int len,int flags) { + if (!(flags & AOPLAY_FINAL_CHUNK)) len = (len/ao_data.outburst)*ao_data.outburst; return write_waveOutBuffer(data,len); } |