summaryrefslogtreecommitdiff
path: root/render_audio.c
diff options
context:
space:
mode:
Diffstat (limited to 'render_audio.c')
-rw-r--r--render_audio.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/render_audio.c b/render_audio.c
index 39a9ccd..8560159 100644
--- a/render_audio.c
+++ b/render_audio.c
@@ -9,7 +9,6 @@
static uint8_t output_channels;
static uint32_t buffer_samples, sample_rate;
-static uint32_t missing_count;
static audio_source *audio_sources[8];
static audio_source *inactive_audio_sources[8];
@@ -238,7 +237,19 @@ void render_resume_source(audio_source *src)
void render_free_source(audio_source *src)
{
- render_pause_source(src);
+ uint8_t found = 0;
+ for (uint8_t i = 0; i < num_inactive_audio_sources; i++)
+ {
+ if (inactive_audio_sources[i] == src) {
+ inactive_audio_sources[i] = inactive_audio_sources[--num_inactive_audio_sources];
+ found = 1;
+ break;
+ }
+ }
+ if (!found) {
+ render_pause_source(src);
+ num_inactive_audio_sources--;
+ }
free(src->front);
if (render_is_audio_sync()) {
@@ -246,7 +257,6 @@ void render_free_source(audio_source *src)
render_free_audio_opaque(src->opaque);
}
free(src);
- num_inactive_audio_sources--;
}
static int16_t lowpass_sample(audio_source *src, int16_t last, int16_t current)