diff options
author | David Robillard <d@drobilla.net> | 2008-11-17 06:01:02 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-11-17 06:01:02 +0000 |
commit | a22ca975556ef1516302f5e559748f9a37dbcd99 (patch) | |
tree | eb328b572987769284931e2d74474556d2725c80 /src/engine/Machine.cpp | |
parent | 3e3a237c0272d322d102e30b60ddea6dca69d077 (diff) | |
download | machina-a22ca975556ef1516302f5e559748f9a37dbcd99.tar.gz machina-a22ca975556ef1516302f5e559748f9a37dbcd99.tar.bz2 machina-a22ca975556ef1516302f5e559748f9a37dbcd99.zip |
Run. Sorta.
git-svn-id: http://svn.drobilla.net/lad/trunk/machina@1757 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/Machine.cpp')
-rw-r--r-- | src/engine/Machine.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/engine/Machine.cpp b/src/engine/Machine.cpp index 4106a98..7530637 100644 --- a/src/engine/Machine.cpp +++ b/src/engine/Machine.cpp @@ -34,7 +34,7 @@ Machine::Machine(TimeUnit unit) : _active_nodes(MAX_ACTIVE_NODES, SharedPtr<Node>()) , _is_activated(false) , _is_finished(false) - , _time(unit) + , _time(unit, 0, 0) { } @@ -49,7 +49,7 @@ Machine::Machine(const Machine& copy) , _active_nodes(MAX_ACTIVE_NODES, SharedPtr<Node>()) , _is_activated(false) , _is_finished(false) - , _time(copy.time().unit()) + , _time(copy.time()) , _sink(copy._sink) { map< SharedPtr<Node>, SharedPtr<Node> > replacements; @@ -76,7 +76,7 @@ Machine::operator=(const Machine& other) _active_nodes = std::vector< SharedPtr<Node> >(MAX_ACTIVE_NODES, SharedPtr<Node>()); _is_activated = false; _is_finished = false; - _time = 0; + _time = other._time; _pending_learn = SharedPtr<LearnRequest>(); _sink = other._sink; _nodes.clear(); @@ -181,7 +181,7 @@ Machine::reset(Raul::TimeStamp time) _active_nodes.at(i).reset(); } - _time = 0; + _time = TimeStamp(_time.unit(), 0, 0); _is_finished = false; } @@ -307,7 +307,8 @@ Machine::run(const Raul::TimeSlice& time) SharedPtr<Raul::MIDISink> sink = _sink.lock(); - const TimeStamp cycle_end = time.start_ticks() + time.length_ticks(); + const TimeStamp cycle_end_frames = time.start_ticks() + time.length_ticks(); + const TimeStamp cycle_end = time.ticks_to_beats(cycle_end_frames); assert(_is_activated); @@ -349,16 +350,15 @@ Machine::run(const Raul::TimeSlice& time) break; // Earliest active state ends this cycle - } else if (time.beats_to_ticks(earliest->exit_time()) <= cycle_end) { + } else if (earliest->exit_time() <= cycle_end) { this_time += earliest->exit_time() - _time; - _time = time.ticks_to_beats( - time.beats_to_ticks(earliest->exit_time())); + _time = earliest->exit_time(); exit_node(sink, earliest); // Earliest active state ends in the future, done this cycle } else { _time = cycle_end; - this_time = time.length_beats(); // ran the entire cycle + this_time = cycle_end; // ran the entire cycle break; } |