summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_regions.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-04-28 02:53:20 +0200
committerRobin Gareus <robin@gareus.org>2015-04-28 03:07:11 +0200
commit1b1cbec00b9ecac8cd7431b89ec6490ca599ef89 (patch)
treebaa97551c927a28f3e3a0b5a6aac73e12ac06c7d /gtk2_ardour/editor_regions.cc
parent4aace9be681539d5b131f84337b871f8de39a6ec (diff)
prevent live loops (format negative BBT)
can happen with empty tape-tracks
Diffstat (limited to 'gtk2_ardour/editor_regions.cc')
-rw-r--r--gtk2_ardour/editor_regions.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc
index 1d6ac8c16c..d029e3fc74 100644
--- a/gtk2_ardour/editor_regions.cc
+++ b/gtk2_ardour/editor_regions.cc
@@ -690,6 +690,12 @@ EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize, bool
Timecode::BBT_Time bbt;
Timecode::Time timecode;
+ if (pos < 0) {
+ error << string_compose (_("EditorRegions::format_position: negative timecode position: %1"), pos) << endmsg;
+ snprintf (buf, bufsize, "invalid");
+ return;
+ }
+
switch (ARDOUR_UI::instance()->secondary_clock->mode ()) {
case AudioClock::BBT:
_session->tempo_map().bbt_time (pos, bbt);
@@ -816,10 +822,12 @@ EditorRegions::populate_row_end (boost::shared_ptr<Region> region, TreeModel::Ro
row[_columns.end] = "";
} else if (used > 1) {
row[_columns.end] = _("Mult.");
- } else {
+ } else if (region->last_frame() >= region->first_frame()) {
char buf[16];
format_position (region->last_frame(), buf, sizeof (buf));
row[_columns.end] = buf;
+ } else {
+ row[_columns.end] = "empty";
}
}