summaryrefslogtreecommitdiff
path: root/gtk2_ardour/transport_masters_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2018-09-27 00:09:08 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2018-09-27 11:31:13 -0400
commit4840543272725e83ca67cdc942960117fd58492f (patch)
tree0def1973a6a6fce7fc74c90f05d881b8fabdd7ce /gtk2_ardour/transport_masters_dialog.cc
parentf8264ed1fb80e3106257130f26a6bc9dd811da89 (diff)
show last received and when for timecode timestamps in transport masters widget
Diffstat (limited to 'gtk2_ardour/transport_masters_dialog.cc')
-rw-r--r--gtk2_ardour/transport_masters_dialog.cc26
1 files changed, 23 insertions, 3 deletions
diff --git a/gtk2_ardour/transport_masters_dialog.cc b/gtk2_ardour/transport_masters_dialog.cc
index 540f39fbbd..7947f50df2 100644
--- a/gtk2_ardour/transport_masters_dialog.cc
+++ b/gtk2_ardour/transport_masters_dialog.cc
@@ -188,6 +188,7 @@ TransportMastersWidget::rebuild ()
TransportMastersWidget::Row::Row ()
: request_option_menu (0)
, name_editor (0)
+ , save_when (0)
, ignore_active_change (false)
{
}
@@ -400,38 +401,57 @@ TransportMastersWidget::Row::update (Session* s, samplepos_t now)
samplepos_t pos;
double speed;
- samplepos_t last;
+ samplepos_t most_recent;
samplepos_t when;
stringstream ss;
Time t;
+ Time l;
boost::shared_ptr<TimecodeTransportMaster> ttm;
boost::shared_ptr<MIDIClock_TransportMaster> mtm;
if (s) {
- if (tm->speed_and_position (speed, pos, last, when, now)) {
+ if (tm->speed_and_position (speed, pos, most_recent, when, now)) {
sample_to_timecode (pos, t, false, false, 25, false, AudioEngine::instance()->sample_rate(), 100, false, 0);
+ sample_to_timecode (most_recent, l, false, false, 25, false, AudioEngine::instance()->sample_rate(), 100, false, 0);
if ((ttm = boost::dynamic_pointer_cast<TimecodeTransportMaster> (tm))) {
format.set_text (timecode_format_name (ttm->apparent_timecode_format()));
+ last.set_text (Timecode::timecode_format_time (l));
} else if ((mtm = boost::dynamic_pointer_cast<MIDIClock_TransportMaster> (tm))) {
char buf[8];
snprintf (buf, sizeof (buf), "%.1f", mtm->bpm());
format.set_text (buf);
+ last.set_text ("");
} else {
format.set_text ("");
+ last.set_text ("");
}
current.set_text (Timecode::timecode_format_time (t));
timestamp.set_markup (tm->position_string());
delta.set_markup (tm->delta_string ());
+ char gap[32];
+ snprintf (gap, sizeof (gap), "%.3fs", (when - now) / (float) AudioEngine::instance()->sample_rate());
+ timestamp.set_text (gap);
+ save_when = when;
+
+ } else {
+
+ if (save_when) {
+ char gap[32];
+
+ snprintf (gap, sizeof (gap), "%.3fs", (save_when - now) / (float) AudioEngine::instance()->sample_rate());
+ timestamp.set_text (gap);
+ save_when = when;
+ }
}
}
}
void
-TransportMastersWidget::update (samplepos_t audible)
+ TransportMastersWidget::update (samplepos_t /* audible */)
{
samplepos_t now = AudioEngine::instance()->sample_time ();