summaryrefslogtreecommitdiff
path: root/src/mixer
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-10-27 15:50:21 -0400
committerAndrew Opalach <andrew@akon.city> 2024-10-27 15:50:21 -0400
commit72eb0c6381f9406a4e45d23f65373d4936770433 (patch)
tree13e1303372f858a69bfa5324f0aa9d17428fc43a /src/mixer
parent831f260ba2f6bc89f0451f6cc628bd131913a363 (diff)
downloadcamu-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.c10
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