fix simultaneous flag_repeat + flag_end_tick
This commit is contained in:
parent
eef96a70de
commit
17f20d2b39
|
@ -172,7 +172,7 @@ struct Lsdpack {
|
||||||
setlist: &'static [usize],
|
setlist: &'static [usize],
|
||||||
current_ptr: usize,
|
current_ptr: usize,
|
||||||
sample_ptr: usize,
|
sample_ptr: usize,
|
||||||
repeat_cmd: Option<LsdpackCmd>,
|
repeat_cmd: Option<(LsdpackCmd, bool)>,
|
||||||
repeat_cmd_counter: usize,
|
repeat_cmd_counter: usize,
|
||||||
sample_pitch: u16,
|
sample_pitch: u16,
|
||||||
stopped: bool,
|
stopped: bool,
|
||||||
|
@ -243,10 +243,11 @@ impl Lsdpack {
|
||||||
}
|
}
|
||||||
let mut ongoing = true;
|
let mut ongoing = true;
|
||||||
while ongoing {
|
while ongoing {
|
||||||
if let Some(cmd) = self.repeat_cmd {
|
if let Some((cmd, flagged_ongoing)) = self.repeat_cmd {
|
||||||
if self.repeat_cmd_counter > 0 {
|
if self.repeat_cmd_counter > 0 {
|
||||||
self.repeat_cmd_counter -= 1;
|
self.repeat_cmd_counter -= 1;
|
||||||
ongoing = self.apply_cmd(cmd);
|
ongoing = flagged_ongoing;
|
||||||
|
ongoing &= self.apply_cmd(cmd);
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
self.repeat_cmd = None;
|
self.repeat_cmd = None;
|
||||||
|
@ -270,7 +271,7 @@ impl Lsdpack {
|
||||||
}
|
}
|
||||||
if cmd & FLAG_REPEAT != 0 {
|
if cmd & FLAG_REPEAT != 0 {
|
||||||
cmd &= !FLAG_REPEAT;
|
cmd &= !FLAG_REPEAT;
|
||||||
self.repeat_cmd = Some(cmd.into());
|
self.repeat_cmd = Some((cmd.into(), ongoing));
|
||||||
self.repeat_cmd_counter = self.next_byte() as usize;
|
self.repeat_cmd_counter = self.next_byte() as usize;
|
||||||
}
|
}
|
||||||
(cmd.into(), ongoing)
|
(cmd.into(), ongoing)
|
||||||
|
|
Loading…
Reference in a new issue