diff options
-rw-r--r-- | libs/ardour/mtc_slave.cc | 7 | ||||
-rw-r--r-- | libs/midi++2/mtc.cc | 13 |
2 files changed, 6 insertions, 14 deletions
diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index 8cc54d577d..d3fbbf01d6 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -23,7 +23,6 @@ #include <unistd.h> #include "pbd/error.h" -#include "pbd/stacktrace.h" #include "pbd/enumwriter.h" #include "pbd/failed_constructor.h" #include "pbd/pthread_utils.h" @@ -57,6 +56,7 @@ MTC_Slave::MTC_Slave (Session& s, MIDI::Port& p) { can_notify_on_unknown_rate = true; did_reset_tc_format = false; + reset_pending = false; pic = new PIChaser(); @@ -190,10 +190,7 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full, nframes_t now) session.timecode_to_sample (timecode, mtc_frame, true, false); session.request_locate (mtc_frame, false); session.request_transport_speed (0); - DEBUG_TRACE (DEBUG::MTC, string_compose ("reset MTC status to stopped, outside MTC window (%1 .. %2 vs. %3)\n", - window_begin, window_end, mtc_frame)); update_mtc_status (MIDI::MTC_Stopped); - DEBUG_TRACE (DEBUG::MTC, string_compose ("outside, so window root reset to %1\n", mtc_frame)); reset (); reset_window (mtc_frame); @@ -506,8 +503,6 @@ void MTC_Slave::reset () { DEBUG_TRACE (DEBUG::MTC, "*****************\n\n\n MTC SLAVE reset ********************\n\n\n"); - PBD::stacktrace (cerr, 35); - port->input()->reset_mtc_state (); last_inbound_frame = 0; current.guard1++; diff --git a/libs/midi++2/mtc.cc b/libs/midi++2/mtc.cc index d7c089eecd..32fb8cf3d6 100644 --- a/libs/midi++2/mtc.cc +++ b/libs/midi++2/mtc.cc @@ -185,7 +185,9 @@ Parser::process_mtc_quarter_frame (byte *msg) true, just ignore this in terms of it being an error. */ - if (1) { /* mtc_skipped () */ + boost::optional<bool> res = mtc_skipped (); + + if (res.get_value_or (false)) { /* no error, reset next expected frame */ @@ -217,17 +219,12 @@ Parser::process_mtc_quarter_frame (byte *msg) return; } - /* go back to waiting for the first frame */ - - expected_mtc_quarter_frame_code = 0; - memset (_qtr_mtc_time, 0, sizeof (_qtr_mtc_time)); - - _mtc_running = MTC_Stopped; - _mtc_locked = false; + /* skip counts as an error ... go back to waiting for the first frame */ #ifdef DEBUG_MTC cerr << "Skipped MTC qtr frame, return to stopped state" << endl; #endif + reset_mtc_state (); mtc_status (MTC_Stopped); return; |