From 0dbddeaeccfd4e34f200ad915f1028ce2140d988 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 27 May 2018 18:28:52 +0800 Subject: =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=9F=B3=E9=A2=91=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/audio/sdl/source.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/libjin/audio/sdl/source.cpp') diff --git a/src/libjin/audio/sdl/source.cpp b/src/libjin/audio/sdl/source.cpp index 7d71ce7..fc0a2fe 100644 --- a/src/libjin/audio/sdl/source.cpp +++ b/src/libjin/audio/sdl/source.cpp @@ -259,27 +259,29 @@ Manager::get()->pushCommand(cmd); \ int16_t* src16 = (int16_t*)((char*)source->raw.data + source->pos); int remainsample = (source->raw.length - source->pos) >> 1; int bound = min(samples, remainsample); - for (int i = 0; i < bound; ++i) + for (int i = 0; i < samples; ++i) { buf16[i] += src16[i]; // mix sources } - source->pos += (bound << 1); - if (source->pos == 0) + source->pos += (samples << 1); + if (remainsample < samples) { if (source->loop) { - int j = 0; - for (int i = bound; i < samples; ++i, ++j) + /* int j = 0; + for (int i = bound; i < samples; ++i) { int val = data16[j]; buf16[i] += val; - } - source->pos = (j << 1); - continue; + ++j; + }*/ + //sources.erase(it); + //source->pos = (j << 1); + source->pos = 0; + break; } else { - sources.erase(it); } } -- cgit v1.1-26-g67d0