Skip to content

Commit

Permalink
sdlaudio: always clear the sample buffer
Browse files Browse the repository at this point in the history
Always fill the remaining audio callback buffer with silence.
SDL 2.0 doesn't initialize the audio callback buffer. This was
an incompatible change compared to SDL 1.2. For reference read
the SDL 1.2 to 2.0 migration guide.

Signed-off-by: Volker Rümelin <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-id: [email protected]
Message-Id: <[email protected]>
Signed-off-by: Gerd Hoffmann <[email protected]>
  • Loading branch information
Volker Rümelin authored and kraxel committed Jan 15, 2021
1 parent 14cefe1 commit bcce2ea
Showing 1 changed file with 16 additions and 17 deletions.
33 changes: 16 additions & 17 deletions audio/sdlaudio.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,27 +211,26 @@ static void sdl_callback (void *opaque, Uint8 *buf, int len)
SDLAudioState *s = &glob_sdl;
HWVoiceOut *hw = &sdl->hw;

if (s->exit) {
return;
}
if (!s->exit) {

/* dolog("callback: len=%d avail=%zu\n", len, hw->pending_emul); */
/* dolog("callback: len=%d avail=%zu\n", len, hw->pending_emul); */

while (hw->pending_emul && len) {
size_t write_len;
ssize_t start = ((ssize_t) hw->pos_emul) - hw->pending_emul;
if (start < 0) {
start += hw->size_emul;
}
assert(start >= 0 && start < hw->size_emul);
while (hw->pending_emul && len) {
size_t write_len;
ssize_t start = (ssize_t)hw->pos_emul - hw->pending_emul;
if (start < 0) {
start += hw->size_emul;
}
assert(start >= 0 && start < hw->size_emul);

write_len = MIN(MIN(hw->pending_emul, len),
hw->size_emul - start);
write_len = MIN(MIN(hw->pending_emul, len),
hw->size_emul - start);

memcpy(buf, hw->buf_emul + start, write_len);
hw->pending_emul -= write_len;
len -= write_len;
buf += write_len;
memcpy(buf, hw->buf_emul + start, write_len);
hw->pending_emul -= write_len;
len -= write_len;
buf += write_len;
}
}

/* clear remaining buffer that we couldn't fill with data */
Expand Down

0 comments on commit bcce2ea

Please sign in to comment.