more MTC debugging
[ardour.git] / libs / ardour / mtc_slave.cc
index 13f0bb0a3da3aa49722ff9118eaf8b036329b81b..cf308f98749a17a783747e3ffeb467bb8c0bf239 100644 (file)
@@ -21,7 +21,9 @@
 #include <poll.h>
 #include <sys/types.h>
 #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"
@@ -115,6 +117,7 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full, nframes_t now)
        */
 
        if (now) {
+               DEBUG_TRACE (DEBUG::MTC, string_compose ("update MTC time does a reset, was full ? %1 now = %2\n", was_full, now));
                maybe_reset ();
        }
 
@@ -180,7 +183,7 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full, nframes_t now)
 
        DEBUG_TRACE (DEBUG::MTC, string_compose ("MTC time timestamp = %1 TC %2 = frame %3 (from full message ? %4)\n", 
                                                 now, timecode, mtc_frame, was_full));
-
+       
        if (was_full || outside_window (mtc_frame)) {
 
                session.timecode_to_sample (timecode, mtc_frame, true, false);
@@ -488,6 +491,7 @@ MTC_Slave::maybe_reset ()
        reset_lock.lock ();
 
        if (reset_pending) {
+               DEBUG_TRACE (DEBUG::MTC, "actually reset\n");
                reset ();
                reset_pending = 0;
        } 
@@ -529,19 +533,21 @@ MTC_Slave::reset_window (nframes64_t root)
        */
 
        DEBUG_TRACE (DEBUG::MTC, string_compose ("trying to reset MTC window with state = %1\n", enum_2_string (port->input()->mtc_running())));
+       PBD::stacktrace (cerr, 35);
 
        switch (port->input()->mtc_running()) {
        case MTC_Forward:
+               DEBUG_TRACE (DEBUG::MTC, "set MTC window while running forward\n");
                window_begin = root;
                if (session.slave_state() == Session::Running) {
                        window_end = root + (session.frames_per_timecode_frame() * frame_tolerance);
                } else {
                        window_end = root + seekahead_distance ();
                }
-               DEBUG_TRACE (DEBUG::MTC, string_compose ("legal MTC window now %1 .. %2\n", window_begin, window_end));
                break;
 
        case MTC_Backward:
+               DEBUG_TRACE (DEBUG::MTC, "set MTC window while running backward\n");
                if (session.slave_state() == Session::Running) {
                        nframes_t d = session.frames_per_timecode_frame() * frame_tolerance;
                        if (root > d) {
@@ -559,13 +565,15 @@ MTC_Slave::reset_window (nframes64_t root)
                        }
                }
                window_end = root;
-               DEBUG_TRACE (DEBUG::MTC, string_compose ("legal MTC window now %1 .. %2\n", window_begin, window_end));
                break;
                
        default:
+               DEBUG_TRACE (DEBUG::MTC, "not touching MTC window - MTC_Stopped\n");
                /* do nothing */
                break;
        }
+
+       DEBUG_TRACE (DEBUG::MTC, string_compose ("legal MTC window now %1 .. %2\n", window_begin, window_end));
 }
 
 nframes64_t