aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/audio/sdl/source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/audio/sdl/source.cpp')
-rw-r--r--src/libjin/audio/sdl/source.cpp20
1 files changed, 11 insertions, 9 deletions
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);
}
}