From 36943866e2ecba2e3cfccad8939e16d755dcffdd Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 12 Aug 2017 23:35:18 +0300 Subject: [PATCH] Better click prevention --- Core/apu.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Core/apu.c b/Core/apu.c index fe5d6b0..a44b466 100755 --- a/Core/apu.c +++ b/Core/apu.c @@ -309,13 +309,14 @@ void GB_apu_copy_buffer(GB_gameboy_t *gb, GB_sample_t *dest, size_t count) if (count > gb->apu_output.buffer_position) { // GB_log(gb, "Audio underflow: %d\n", count - gb->apu_output.buffer_position); - if (gb->apu_output.buffer_position != 0) { - for (unsigned i = 0; i < count - gb->apu_output.buffer_position; i++) { - dest[gb->apu_output.buffer_position + i] = gb->apu_output.buffer[gb->apu_output.buffer_position - 1]; - } + GB_sample_t output = {0,0}; + for (unsigned i = GB_N_CHANNELS; i--;) { + output.left += gb->apu_output.current_sample[i].left * CH_STEP; + output.right += gb->apu_output.current_sample[i].right * CH_STEP; } - else { - memset(dest + gb->apu_output.buffer_position, 0, (count - gb->apu_output.buffer_position) * sizeof(*gb->apu_output.buffer)); + + for (unsigned i = 0; i < count - gb->apu_output.buffer_position; i++) { + dest[gb->apu_output.buffer_position + i] = output; } count = gb->apu_output.buffer_position; }