diff options
Diffstat (limited to 'audio/src/program.rs')
| -rw-r--r-- | audio/src/program.rs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/audio/src/program.rs b/audio/src/program.rs index c6f048d..b775e24 100644 --- a/audio/src/program.rs +++ b/audio/src/program.rs @@ -53,12 +53,11 @@ use Instruction as I; #[derive(Debug, Clone, PartialEq, Eq)] pub struct Track { pub ins: Rc<Vec<Instruction>>, - pub looping: bool, } impl Track { - pub fn parse(src: &str, looping: bool) -> parse::Result<Self> { + pub fn parse(src: &str) -> parse::Result<Self> { let ins = Rc::new(parse::parse(src)?); - Ok(Self { ins, looping }) + Ok(Self { ins }) } pub fn merge(self, other: Self) -> Self { @@ -125,10 +124,7 @@ impl Track { } } - Self { - ins: Rc::new(res), - looping: self.looping, - } + Self { ins: Rc::new(res) } } } impl fmt::Display for Track { @@ -147,16 +143,18 @@ impl fmt::Display for Track { pub struct Program { track: Track, priority: u32, + looping: bool, pc: usize, pause_cnt: usize, pause_len: usize, channels: Channels, } impl Program { - pub const fn new(track: Track, priority: u32) -> Self { + pub const fn new(track: Track, priority: u32, looping: bool) -> Self { Self { track, priority, + looping, pc: 0, pause_cnt: 0, pause_len: 4, @@ -220,7 +218,7 @@ impl Program { } loop { if self.is_finished() { - if self.track.looping { + if self.looping { self.pc = 0; } else { break; |