From 51aecb14c63152ccbc5f5f439d990960ba03eadd Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Sun, 12 Jan 2020 17:51:04 +0000 Subject: [PATCH] Refinement of the checks, so no IRQ is raised when not in autodma mode. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4307 --- src/hardware/sblaster.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hardware/sblaster.cpp b/src/hardware/sblaster.cpp index 78f52b7a..843c154f 100644 --- a/src/hardware/sblaster.cpp +++ b/src/hardware/sblaster.cpp @@ -294,7 +294,9 @@ static void DSP_DMA_CallBack(DmaChannel * chan, DMAEvent event) { if (!min_size) min_size = 1; min_size *= 2; if (sb.dma.left > min_size) { - if (s > (sb.dma.left-min_size)) s = sb.dma.left - min_size; + if (s > (sb.dma.left - min_size)) s = sb.dma.left - min_size; + //This will trigger a irq, see GenerateDMASound, so lets not do that + if (!sb.dma.autoinit && sb.dma.left <= sb.dma.min) s = 0; if (s) GenerateDMASound(s); } sb.mode = MODE_DMA_MASKED;