diff options
| author | 2024-10-27 15:50:21 -0400 | |
|---|---|---|
| committer | 2024-10-27 15:50:21 -0400 | |
| commit | 72eb0c6381f9406a4e45d23f65373d4936770433 (patch) | |
| tree | 13e1303372f858a69bfa5324f0aa9d17428fc43a /src/mixer | |
| parent | 831f260ba2f6bc89f0451f6cc628bd131913a363 (diff) | |
| download | camu-72eb0c6381f9406a4e45d23f65373d4936770433.tar.gz camu-72eb0c6381f9406a4e45d23f65373d4936770433.tar.bz2 camu-72eb0c6381f9406a4e45d23f65373d4936770433.zip | |
More synced list, another vcr fix
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/mixer')
| -rw-r--r-- | src/mixer/mixer.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mixer/mixer.c b/src/mixer/mixer.c index 987bc8b..e6fd178 100644 --- a/src/mixer/mixer.c +++ b/src/mixer/mixer.c @@ -30,12 +30,20 @@ static s32 data_callback(void *userdata, u8 *data, s32 frame_count, bool *silenc } else { *silence = true; } + struct camu_audio_buffer *buf; + // Read from all current buffers on each callback to + // emulate the behavior of an actual mixer. + al_array_foreach(mixer->buffers, i, buf) { + if (i < mixer->buffers.size - 1) { + camu_audio_buffer_read(buf, data, req); + } + } do { if (al_array_is_empty(mixer->buffers)) { al_memset(data, 0, req); } else { size_t signal; - struct camu_audio_buffer *buf = al_array_last(mixer->buffers); + buf = al_array_last(mixer->buffers); *silence = false; if ((signal = camu_audio_buffer_read(buf, data, req)) < req) { #ifdef CAMU_MIXER_THREADED |