From 137ca87fdc7cd0a4ffc18f582b7c99720db02158 Mon Sep 17 00:00:00 2001 From: Atreya Bain Date: Tue, 20 Feb 2024 22:53:27 +0530 Subject: [PATCH] [aud] fix audio stuttering --- src/emu/audio.rs | 6 +++++- src/main.rs | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/emu/audio.rs b/src/emu/audio.rs index 94828bb..11bd5c3 100644 --- a/src/emu/audio.rs +++ b/src/emu/audio.rs @@ -1,3 +1,4 @@ +use std::time::Duration; use sdl2::audio::AudioQueue; use crate::emu::memory::RamMemory; @@ -35,7 +36,10 @@ impl<'a> AudioProcessor<'a> { let audio_base_reg = (self.get_audio_base_reg() as u32) << 8; let fb = self.frame_buffer.as_mut(); if self.audio_queue.size() == 0 { - log::warn!("Detected Queue empty!"); + log::trace!("Detected Queue empty!"); + } + while self.audio_queue.size() > 10 { + ::std::thread::sleep(Duration::from_micros(1)) } self.ram.try_copy_block(audio_base_reg, fb)?; self.audio_queue.queue_audio(fb).map_err(|s| { EmulatorError::OtherError(Some(AUDIO), s) }) diff --git a/src/main.rs b/src/main.rs index 6a39d21..1b00a34 100644 --- a/src/main.rs +++ b/src/main.rs @@ -77,7 +77,7 @@ fn main() -> EmulatorResult<()> { canvas.present(); - ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60)); + ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60 - 2000_000)); } Ok(())