summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2015-12-11 12:57:24 -0800
committerLen Ovens <len@ovenwerks.net>2015-12-11 12:57:24 -0800
commit0103de801afcbbf0b5ac58696bb0be45b3771745 (patch)
tree4b4b7641da41f78ce75de1b0caf8f98c182b896f /libs/surfaces
parent14ef6017f6a04caf720fbfd42488af59b6ef2f9b (diff)
Mackie Control, fix timecode sometimes won't update. Do full display if transport moves faster than 800%.
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc8
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index 7b7b0f5c9e..966a2cbedd 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -106,6 +106,7 @@ MackieControlProtocol::MackieControlProtocol (Session& session)
: ControlProtocol (session, X_("Mackie"))
, AbstractUI<MackieControlUIRequest> ("mackie")
, _current_initial_bank (0)
+ , _frame_last (0)
, _timecode_type (ARDOUR::AnyTime::BBT)
, _gui (0)
, _scrub_mode (false)
@@ -1143,6 +1144,13 @@ MackieControlProtocol::update_timecode_display()
// do assignment here so current_frame is fixed
framepos_t current_frame = session->transport_frame();
string timecode;
+ // For large jumps in play head possition do full reset
+ int moved = (current_frame - _frame_last) / session->frame_rate ();
+ if (moved) {
+ DEBUG_TRACE (DEBUG::MackieControl, "Timecode reset\n");
+ _timecode_last = string (10, ' ');
+ }
+ _frame_last = current_frame;
switch (_timecode_type) {
case ARDOUR::AnyTime::BBT:
diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h
index 9b08d47d35..f5db794251 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.h
+++ b/libs/surfaces/mackie/mackie_control_protocol.h
@@ -308,6 +308,7 @@ class MackieControlProtocol
Mackie::Timer _frm_left_last;
// last written timecode string
std::string _timecode_last;
+ framepos_t _frame_last;
// Which timecode are we displaying? BBT or Timecode
ARDOUR::AnyTime::Type _timecode_type;
// Bundle to represent our input ports