summaryrefslogtreecommitdiff
path: root/audio/src/program.rs
diff options
context:
space:
mode:
Diffstat (limited to 'audio/src/program.rs')
-rw-r--r--audio/src/program.rs16
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;