diff --git a/tracker-engine/src/file/mod.rs b/tracker-engine/src/file/mod.rs index 0f6e970..3e14386 100644 --- a/tracker-engine/src/file/mod.rs +++ b/tracker-engine/src/file/mod.rs @@ -22,11 +22,12 @@ impl InFilePtr { /// /// R should be buffered in some way and not do a syscall on every read. /// If you ever find yourself using multiple different reader and/or handlers please open an issue on Github, i will change this to take &dyn. -pub fn parse_song( +pub fn parse_song( reader: &mut R, - defect_handler: &mut H, ) -> Result, LoadErr> { - let header = header::ImpulseHeader::parse(reader, defect_handler)?; + //ignore defects + let mut defect_handler = |_| (); + let header = header::ImpulseHeader::parse(reader, &mut defect_handler)?; let mut song = Song::default(); song.copy_values_from_header(&header); @@ -38,7 +39,7 @@ pub fn parse_song( .flat_map(|(idx, ptr)| ptr.map(|ptr| (idx, ptr))) { ptr.move_to_self(reader)?; - let pattern = pattern::parse_pattern(reader, defect_handler)?; + let pattern = pattern::parse_pattern(reader, &mut defect_handler)?; song.patterns[idx] = pattern; } diff --git a/tracker-engine/src/live_audio.rs b/tracker-engine/src/live_audio.rs index 1833e7a..7e48972 100644 --- a/tracker-engine/src/live_audio.rs +++ b/tracker-engine/src/live_audio.rs @@ -45,10 +45,8 @@ impl LiveAudio { } fn send_state(&mut self, info: Option) { - self.state_sender.write(( - self.playback_state.as_ref().map(|s| s.get_status()), - info, - )); + self.state_sender + .write((self.playback_state.as_ref().map(|s| s.get_status()), info)); } #[inline] diff --git a/tracker-engine/src/manager.rs b/tracker-engine/src/manager.rs index cf48a25..17f53d2 100644 --- a/tracker-engine/src/manager.rs +++ b/tracker-engine/src/manager.rs @@ -80,18 +80,17 @@ mod cpal { use super::{OutputConfig, OutputStream, StreamBuilder}; - impl OutputStream for Stream { type BufferInformation = cpal::OutputStreamTimestamp; - + type PauseErr = cpal::PauseStreamError; - + type PlayErr = cpal::PlayStreamError; - + fn pause(&mut self) -> Result<(), Self::PauseErr> { ::pause(self) } - + fn play(&mut self) -> Result<(), Self::PlayErr> { ::play(self) } @@ -103,8 +102,10 @@ mod cpal { type Stream = Device::Stream; fn create( self, - mut data_callback: impl FnMut(&mut [f32], <::Stream as OutputStream>::BufferInformation) - + Send + mut data_callback: impl FnMut( + &mut [f32], + <::Stream as OutputStream>::BufferInformation, + ) + Send + 'static, err_callback: impl FnMut(Self::StreamErr) + Send + 'static, config: OutputConfig, @@ -134,7 +135,7 @@ mod cpal { impl TryFrom for OutputConfig { type Error = (); - + /// fails if BufferSize isn't explicit or zero output channels are specified. fn try_from(value: cpal::StreamConfig) -> Result { match value.buffer_size { @@ -156,9 +157,9 @@ struct ActiveStream { status: triple_buffer::Output<(Option, Option)>, } -impl Debug for ActiveStream -where - S::BufferInformation: Debug +impl Debug for ActiveStream +where + S::BufferInformation: Debug, { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.debug_struct("ActiveStream") @@ -264,7 +265,9 @@ impl AudioManager { } /// last playback status sent by the audio worker - pub fn playback_status(&mut self) -> Option<&(Option, Option)> { + pub fn playback_status( + &mut self, + ) -> Option<&(Option, Option)> { self.stream.as_mut().map(|s| s.status.read()) } @@ -296,9 +299,9 @@ impl AudioManager { &mut self, create_stream: Builder, config: OutputConfig, - ) -> Result<(), Builder::CreateErr> + ) -> Result<(), Builder::CreateErr> where - Builder: StreamBuilder + Builder: StreamBuilder, { const TO_WORKER_CAPACITY: usize = 5; @@ -306,7 +309,8 @@ impl AudioManager { let to_worker = rtrb::RingBuffer::new(TO_WORKER_CAPACITY); let reader = self.song.build_reader().unwrap(); - let audio_worker = LiveAudio::::new(reader, to_worker.1, from_worker.0, config); + let audio_worker = + LiveAudio::::new(reader, to_worker.1, from_worker.0, config); // let stream = device.build_output_stream_raw( // &config.into(), @@ -315,7 +319,11 @@ impl AudioManager { // |err| println!("{err}"), // None, // )?; - let stream = create_stream.create(audio_worker.get_typed_callback(), |err| eprintln!("{err:?}"), config)?; + let stream = create_stream.create( + audio_worker.get_typed_callback(), + |err| eprintln!("{err:?}"), + config, + )?; let buffer_time = Duration::from_millis((config.buffer_size * 1000 / config.buffer_size).into());