diff options
author | Len Ovens <len@ovenwerks.net> | 2015-12-11 12:57:24 -0800 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2015-12-11 12:57:24 -0800 |
commit | 0103de801afcbbf0b5ac58696bb0be45b3771745 (patch) | |
tree | 4b4b7641da41f78ce75de1b0caf8f98c182b896f /libs/surfaces | |
parent | 14ef6017f6a04caf720fbfd42488af59b6ef2f9b (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.cc | 8 | ||||
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.h | 1 |
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 |