Extract iterator to a variable

This commit is contained in:
Gwilym Inzani 2023-06-27 21:51:59 +01:00
parent 38868cb269
commit 3b35061a3a

View file

@ -422,31 +422,31 @@ impl MixerBuffer {
) { ) {
working_buffer.fill(0.into()); working_buffer.fill(0.into());
for (channel, playback_speed) in let channels = channels
channels .filter(|channel| !channel.is_done)
.filter(|channel| !channel.is_done) .filter_map(|channel| {
.filter_map(|channel| { let playback_speed = if channel.is_stereo {
let playback_speed = if channel.is_stereo { 2.into()
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 { } else {
channel.playback_speed channel.is_done = true;
}; return None;
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;
}
} }
}
Some((channel, playback_speed)) Some((channel, playback_speed))
}) });
{
for (channel, playback_speed) in channels {
if channel.volume != 0.into() { if channel.volume != 0.into() {
if channel.is_stereo { if channel.is_stereo {
unsafe { unsafe {