changeset 1589:780604a036e4

Limit underflow warning spam
author Michael Pavone <pavone@retrodev.com>
date Wed, 20 Jun 2018 22:49:21 -0700
parents 348814d5b73f
children 220ede292e97
files render_sdl.c
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/render_sdl.c	Wed Jun 20 09:43:28 2018 -0700
+++ b/render_sdl.c	Wed Jun 20 22:49:21 2018 -0700
@@ -190,6 +190,10 @@
 static void audio_callback_drc(void *userData, uint8_t *byte_stream, int len)
 {
 	memset(byte_stream, 0, len);
+	if (cur_min_buffered < 0) {
+		//underflow last frame, but main thread hasn't gotten a chance to call SDL_PauseAudio yet
+		return;
+	}
 	cur_min_buffered = 0x7FFFFFFF;
 	min_remaining_buffer = 0xFFFFFFFF;
 	for (uint8_t i = 0; i < num_audio_sources; i++)
@@ -1436,6 +1440,7 @@
 				adjust_ratio = max_adjust;
 				SDL_PauseAudio(1);
 				last_buffered = NO_LAST_BUFFERED;
+				cur_min_buffered = 0;
 			} else {
 				adjust_ratio = -1.0 * average_change / ((float)sample_rate / (float)source_hz);
 				adjust_ratio /= 2.5 * source_hz;