From 3b35061a3a18e5a5e4f375d4e6cc4dca1ddee58d Mon Sep 17 00:00:00 2001 From: Gwilym Inzani Date: Tue, 27 Jun 2023 21:51:59 +0100 Subject: [PATCH] Extract iterator to a variable --- agb/src/sound/mixer/sw_mixer.rs | 44 ++++++++++++++++----------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/agb/src/sound/mixer/sw_mixer.rs b/agb/src/sound/mixer/sw_mixer.rs index 5895a08f..2cd3257b 100644 --- a/agb/src/sound/mixer/sw_mixer.rs +++ b/agb/src/sound/mixer/sw_mixer.rs @@ -422,31 +422,31 @@ impl MixerBuffer { ) { working_buffer.fill(0.into()); - for (channel, playback_speed) in - channels - .filter(|channel| !channel.is_done) - .filter_map(|channel| { - let playback_speed = if channel.is_stereo { - 2.into() + let channels = channels + .filter(|channel| !channel.is_done) + .filter_map(|channel| { + let playback_speed = if channel.is_stereo { + 2.into() + } else { + channel.playback_speed + }; + + if (channel.pos + playback_speed * self.frequency.buffer_size() as u32).floor() + >= channel.data.len() as u32 + { + // TODO: This should probably play what's left rather than skip the last bit + if channel.should_loop { + channel.pos = 0.into(); } else { - channel.playback_speed - }; - - if (channel.pos + playback_speed * self.frequency.buffer_size() as u32).floor() - >= channel.data.len() as u32 - { - // TODO: This should probably play what's left rather than skip the last bit - if channel.should_loop { - channel.pos = 0.into(); - } else { - channel.is_done = true; - return None; - } + channel.is_done = true; + return None; } + } - Some((channel, playback_speed)) - }) - { + Some((channel, playback_speed)) + }); + + for (channel, playback_speed) in channels { if channel.volume != 0.into() { if channel.is_stereo { unsafe {