something for chris g. to try when he gets up before me
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 27 Jan 2010 03:26:41 +0000 (03:26 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 27 Jan 2010 03:26:41 +0000 (03:26 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@6573 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/mtc_slave.cc
libs/midi++2/mtc.cc

index 8cc54d577d6d3dec533f041314ccfff35279d1c9..d3fbbf01d6d0cf0ed5821c146e7225df60b8cdec 100644 (file)
@@ -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++;
index d7c089eecd4e6cc643d748b54f672070f7741162..32fb8cf3d6ec738976243f958351b77c5910d6ab 100644 (file)
@@ -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;