From 0b1b083f6c3d4ef2ac0f8460b809612089e8950d Mon Sep 17 00:00:00 2001 From: Brad Grantham Date: Mon, 28 Nov 2016 09:54:36 -0800 Subject: [PATCH] don't enqueue new audio buffer if no audio --- apple2e.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apple2e.cpp b/apple2e.cpp index d482e18..3491c13 100644 --- a/apple2e.cpp +++ b/apple2e.cpp @@ -2286,7 +2286,15 @@ int main(int argc, char **argv) MAINboard::display_write_func display = [](int addr, unsigned char data)->bool{return APPLE2Einterface::write(addr, data);}; MAINboard::audio_flush_func audio; if(have_audio) - audio = [aodev](char *buf, size_t sz){ao_play(aodev, buf, sz);}; + audio = [aodev](char *buf, size_t sz){ + static char prev_sample; + for(int i = 0; i < sz; i++) + if(buf[i] != prev_sample) { + ao_play(aodev, buf, sz); + break; + } + prev_sample = buf[sz - 1]; + }; else audio = [](char *buf, size_t sz){}; mainboard = new MAINboard(clk, b, display, audio);