summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-02-25 21:35:07 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2020-03-17 16:31:49 -0600
commita4d7b45fe00996fd37a1af6d5be8c913a0b3bbf4 (patch)
tree35463bfb8a0b7def08b254378873305b7d0f1aa0 /gtk2_ardour
parente89b0cfd27be8dc8ea8099d624adb999d957fa3e (diff)
remove destructive/tape mode tracks
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/add_route_dialog.cc13
-rw-r--r--gtk2_ardour/audio_streamview.cc8
-rw-r--r--gtk2_ardour/editor_audio_import.cc25
-rw-r--r--gtk2_ardour/editor_ops.cc9
-rw-r--r--gtk2_ardour/enums.cc1
-rw-r--r--gtk2_ardour/po/pt.po2
-rw-r--r--gtk2_ardour/route_time_axis.cc6
-rw-r--r--gtk2_ardour/route_ui.cc10
-rw-r--r--gtk2_ardour/session_option_editor.cc8
-rw-r--r--gtk2_ardour/sfdb_ui.cc12
-rw-r--r--gtk2_ardour/streamview.cc6
-rw-r--r--gtk2_ardour/tape_region_view.cc160
-rw-r--r--gtk2_ardour/tape_region_view.h46
-rw-r--r--gtk2_ardour/wscript1
14 files changed, 11 insertions, 296 deletions
diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc
index 80bf7f0ba5..18f02885c2 100644
--- a/gtk2_ardour/add_route_dialog.cc
+++ b/gtk2_ardour/add_route_dialog.cc
@@ -105,7 +105,6 @@ AddRouteDialog::AddRouteDialog ()
"* " + _("A group which the track(s) will be assigned to") + "\n" +
#ifndef MIXBUS
"* " + _("The pin connections mode (see tooltip for details)") + "\n" +
- "* " + _("Normal (non-destructive) or tape (destructive) recording mode") + "\n" +
#endif
"\n" + _("The track(s) will be added at the location specified by \"Position\"")
));
@@ -135,7 +134,6 @@ AddRouteDialog::AddRouteDialog ()
"* " + _("A group which the track(s) will be assigned to") + "\n" +
#ifndef MIXBUS
"* " + _("The pin connections mode (see tooltip for details)") + "\n" +
- "* " + _("Normal (non-destructive) or tape (destructive) recording mode") + "\n" +
#endif
"\n" + _("The track(s) will be added at the location specified by \"Position\"")
));
@@ -449,11 +447,6 @@ AddRouteDialog::trk_template_row_selected ()
case ARDOUR::Normal:
mode_combo.set_active_text (_("Normal"));
break;
- case ARDOUR::Destructive:
- if (!ARDOUR::Profile->get_mixbus ()) {
- mode_combo.set_active_text (_("Tape"));
- }
- break;
default: // "NonLayered" enum is still present for session-format compat
break;
}
@@ -820,10 +813,6 @@ AddRouteDialog::refill_track_modes ()
vector<string> s;
s.push_back (_("Normal"));
- if (!ARDOUR::Profile->get_mixbus ()) {
- s.push_back (_("Tape"));
- }
-
set_popdown_strings (mode_combo, s);
mode_combo.set_active_text (s.front());
}
@@ -836,8 +825,6 @@ AddRouteDialog::mode ()
return ARDOUR::Normal;
} else if (str == _("Non Layered")){
return ARDOUR::NonLayered;
- } else if (str == _("Tape")) {
- return ARDOUR::Destructive;
} else {
fatal << string_compose (X_("programming error: unknown track mode in add route dialog combo = %1"), str)
<< endmsg;
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc
index 969e439cfd..a4a9347001 100644
--- a/gtk2_ardour/audio_streamview.cc
+++ b/gtk2_ardour/audio_streamview.cc
@@ -44,7 +44,6 @@
#include "audio_streamview.h"
#include "audio_region_view.h"
-#include "tape_region_view.h"
#include "audio_time_axis.h"
#include "region_selection.h"
#include "region_gain_line.h"
@@ -114,10 +113,7 @@ AudioStreamView::create_region_view (boost::shared_ptr<Region> r, bool wait_for_
_samples_per_pixel, region_color);
}
break;
- case Destructive:
- region_view = new TapeAudioRegionView (_canvas_group, _trackview, region,
- _samples_per_pixel, region_color);
- break;
+
default:
fatal << string_compose (_("programming error: %1"), "illegal track mode in ::create_region_view()") << endmsg;
abort(); /*NOTREACHED*/
@@ -240,7 +236,7 @@ AudioStreamView::setup_rec_box ()
boost::shared_ptr<AudioTrack> at = _trackview.audio_track();
samplepos_t const sample_pos = at->current_capture_start ();
- double const width = ((at->mode() == Destructive) ? 2 : 0);
+ double const width = 2;
create_rec_box(sample_pos, width);
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index 25b3373be2..4474949190 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -719,9 +719,7 @@ Editor::embed_sndfiles (vector<string> paths,
source = boost::dynamic_pointer_cast<AudioFileSource> (
SourceFactory::createExternal (DataType::AUDIO, *_session,
path, n,
- (mode == ImportAsTapeTrack
- ? Source::Destructive
- : Source::Flag (0)),
+ Source::Flag (0),
true, true));
} else {
source = boost::dynamic_pointer_cast<AudioFileSource> (s);
@@ -1070,27 +1068,6 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region,
break;
}
- case ImportAsTapeTrack:
- {
- if (!ar) {
- return -1;
- }
-
- list<boost::shared_ptr<AudioTrack> > at (_session->new_audio_track (in_chans, out_chans, 0, 1, string(), PresentationInfo::max_order, Destructive));
- if (!at.empty()) {
- boost::shared_ptr<Playlist> playlist = at.front()->playlist();
- boost::shared_ptr<Region> copy (RegionFactory::create (region, true));
- playlist->clear_changes ();
- playlist->add_region (copy, pos);
- _session->add_command (new StatefulDiffCommand (playlist));
- }
- if (Config->get_strict_io ()) {
- for (list<boost::shared_ptr<AudioTrack> >::iterator i = at.begin(); i != at.end(); ++i) {
- (*i)->set_strict_io (true);
- }
- }
- break;
- }
}
return 0;
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index c68034afdd..fe4b45da4e 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -3181,12 +3181,6 @@ Editor::separate_regions_between (const TimeSelection& ts)
continue;
}
- /* no edits to destructive tracks */
-
- if (rtv->track()->destructive()) {
- continue;
- }
-
if ((playlist = rtv->playlist()) != 0) {
playlist->clear_changes ();
@@ -3444,8 +3438,7 @@ Editor::crop_region_to (samplepos_t start, samplepos_t end)
boost::shared_ptr<Track> t = rtv->track();
- if (t != 0 && ! t->destructive()) {
-
+ if (t) {
if ((playlist = rtv->playlist()) != 0) {
playlists.push_back (playlist);
}
diff --git a/gtk2_ardour/enums.cc b/gtk2_ardour/enums.cc
index b7e808f871..222addca6a 100644
--- a/gtk2_ardour/enums.cc
+++ b/gtk2_ardour/enums.cc
@@ -80,7 +80,6 @@ setup_gtk_ardour_enums ()
REGISTER_ENUM (ImportAsTrack);
REGISTER_ENUM (ImportToTrack);
REGISTER_ENUM (ImportAsRegion);
- REGISTER_ENUM (ImportAsTapeTrack);
REGISTER (import_mode);
REGISTER_ENUM (EditAtPlayhead);
diff --git a/gtk2_ardour/po/pt.po b/gtk2_ardour/po/pt.po
index 7337c27b01..5c3144193f 100644
--- a/gtk2_ardour/po/pt.po
+++ b/gtk2_ardour/po/pt.po
@@ -12848,7 +12848,7 @@ msgid ""
msgstr ""
#: session_option_editor.cc:136
-msgid "destructive-xfade-seconds"
+msgid "mark_destructive-xfade-seconds"
msgstr ""
#: session_option_editor.cc:137
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index 4a723ba16e..60b4978462 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -1074,7 +1074,7 @@ RouteTimeAxisView::rename_current_playlist ()
string name;
boost::shared_ptr<Track> tr = track();
- if (!tr || tr->destructive()) {
+ if (!tr) {
return;
}
@@ -1148,7 +1148,7 @@ RouteTimeAxisView::use_new_playlist (bool prompt, vector<boost::shared_ptr<Playl
string name;
boost::shared_ptr<Track> tr = track ();
- if (!tr || tr->destructive()) {
+ if (!tr) {
return;
}
@@ -1216,7 +1216,7 @@ void
RouteTimeAxisView::clear_playlist ()
{
boost::shared_ptr<Track> tr = track ();
- if (!tr || tr->destructive()) {
+ if (!tr) {
return;
}
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc
index 9b9421b643..2110c2ff17 100644
--- a/gtk2_ardour/route_ui.cc
+++ b/gtk2_ardour/route_ui.cc
@@ -2173,15 +2173,7 @@ void
RouteUI::track_mode_changed (void)
{
assert(is_track());
- switch (track()->mode()) {
- case ARDOUR::NonLayered:
- case ARDOUR::Normal:
- rec_enable_button->set_icon (ArdourIcon::RecButton);
- break;
- case ARDOUR::Destructive:
- rec_enable_button->set_icon (ArdourIcon::RecTapeMode);
- break;
- }
+ rec_enable_button->set_icon (ArdourIcon::RecButton);
rec_enable_button->queue_draw();
}
diff --git a/gtk2_ardour/session_option_editor.cc b/gtk2_ardour/session_option_editor.cc
index 8b897c95b6..8cacb3bd62 100644
--- a/gtk2_ardour/session_option_editor.cc
+++ b/gtk2_ardour/session_option_editor.cc
@@ -142,14 +142,6 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
/* FADES */
add_option (_("Fades"), new OptionEditorHeading (_("Audio Fades")));
- add_option (_("Fades"), new SpinOption<float> (
- _("destructive-xfade-seconds"),
- _("Destructive crossfade length"),
- sigc::mem_fun (*_session_config, &SessionConfiguration::get_destructive_xfade_msecs),
- sigc::mem_fun (*_session_config, &SessionConfiguration::set_destructive_xfade_msecs),
- 0, 1000, 1, 10,
- _("ms")
- ));
add_option (_("Fades"), new BoolOption (
"use-transport-fades",
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index 2f3d899aef..ebf0d5965b 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -144,8 +144,6 @@ importmode2string (ImportMode mode)
return _("to selected tracks");
case ImportAsRegion:
return _("to source list");
- case ImportAsTapeTrack:
- return _("as new tape tracks");
}
abort(); /*NOTREACHED*/
return _("as new tracks");
@@ -1503,9 +1501,6 @@ SoundFileOmega::reset_options ()
action_strings.push_back (importmode2string (ImportAsTrack));
action_strings.push_back (importmode2string (ImportAsRegion));
- if (!Profile->get_mixbus()) {
- action_strings.push_back (importmode2string (ImportAsTapeTrack));
- }
existing_choice = action_combo.get_active_text();
@@ -1539,7 +1534,7 @@ SoundFileOmega::reset_options ()
vector<string> channel_strings;
- if (mode == ImportAsTrack || mode == ImportAsTapeTrack || mode == ImportToTrack) {
+ if (mode == ImportAsTrack || mode == ImportToTrack) {
channel_strings.push_back (_("one track per file"));
@@ -1551,9 +1546,7 @@ SoundFileOmega::reset_options ()
/* tape tracks are a single region per track, so we cannot
sequence multiple files.
*/
- if (mode != ImportAsTapeTrack) {
- channel_strings.push_back (_("sequence files"));
- }
+ channel_strings.push_back (_("sequence files"));
if (same_size) {
channel_strings.push_back (_("all files in one track"));
channel_strings.push_back (_("merge files"));
@@ -1922,7 +1915,6 @@ SoundFileOmega::SoundFileOmega (string title, ARDOUR::Session* s,
str.push_back (importmode2string (ImportAsTrack));
str.push_back (importmode2string (ImportToTrack));
str.push_back (importmode2string (ImportAsRegion));
- str.push_back (importmode2string (ImportAsTapeTrack));
set_popdown_strings (action_combo, str);
action_combo.set_active_text (importmode2string(mode_hint));
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc
index 23989d2f24..b7e0d17234 100644
--- a/gtk2_ardour/streamview.cc
+++ b/gtk2_ardour/streamview.cc
@@ -471,12 +471,6 @@ StreamView::update_rec_box ()
xend = _trackview.editor().sample_to_pixel (at);
break;
- case Destructive:
- rect.length = 2;
- xstart = _trackview.editor().sample_to_pixel (_trackview.track()->current_capture_start());
- xend = _trackview.editor().sample_to_pixel (at);
- break;
-
default:
fatal << string_compose (_("programming error: %1"), "illegal track mode") << endmsg;
abort(); /*NOTREACHED*/
diff --git a/gtk2_ardour/tape_region_view.cc b/gtk2_ardour/tape_region_view.cc
deleted file mode 100644
index 41a4a9c8c8..0000000000
--- a/gtk2_ardour/tape_region_view.cc
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2006-2012 David Robillard <d@drobilla.net>
- * Copyright (C) 2008-2017 Paul Davis <paul@linuxaudiosystems.com>
- * Copyright (C) 2009-2010 Carl Hetherington <carl@carlh.net>
- * Copyright (C) 2015-2017 Robin Gareus <robin@gareus.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <cmath>
-#include <algorithm>
-
-#include <gtkmm2ext/gtk_ui.h>
-
-#include "ardour/audioregion.h"
-#include "ardour/audiosource.h"
-
-#include "tape_region_view.h"
-#include "audio_time_axis.h"
-#include "gui_thread.h"
-
-#include "pbd/i18n.h"
-
-using namespace ARDOUR;
-using namespace PBD;
-using namespace Editing;
-using namespace ArdourCanvas;
-
-const TimeAxisViewItem::Visibility TapeAudioRegionView::default_tape_visibility
- = TimeAxisViewItem::Visibility (
- TimeAxisViewItem::ShowNameHighlight |
- TimeAxisViewItem::ShowNameText |
- TimeAxisViewItem::ShowFrame |
- TimeAxisViewItem::HideFrameRight |
- TimeAxisViewItem::FullWidthNameHighlight);
-
-TapeAudioRegionView::TapeAudioRegionView (ArdourCanvas::Container *parent, RouteTimeAxisView &tv,
- boost::shared_ptr<AudioRegion> r,
- double spu,
- uint32_t basic_color)
-
- : AudioRegionView (parent, tv, r, spu, basic_color, false,
- TimeAxisViewItem::Visibility ((r->position() != 0) ? default_tape_visibility :
- TimeAxisViewItem::Visibility (default_tape_visibility|TimeAxisViewItem::HideFrameLeft)))
-{
-}
-
-void
-TapeAudioRegionView::init (bool /*wfw*/)
-{
- /* never wait for data: always just create the waves, connect once and then
- we'll update whenever we need to.
- */
-
- AudioRegionView::init (false);
-
- /* every time the wave data changes and peaks are ready, redraw */
-
- for (uint32_t n = 0; n < audio_region()->n_channels(); ++n) {
- audio_region()->audio_source(n)->PeaksReady.connect (*this, invalidator (*this), boost::bind (&TapeAudioRegionView::update, this, n), gui_context());
- }
-
-}
-
-TapeAudioRegionView::~TapeAudioRegionView()
-{
-}
-
-void
-TapeAudioRegionView::update (uint32_t /*n*/)
-{
- /* this code doesn't work properly, the WaveViewCache is not updated
- * when recording over (replacing) an existing part of the tape.
- *
- * WaveView probably needs to become aware if the given Region is
- * tape-track and handle caching.
- *
- * explicitly forcing an update here can deadlock if the rendering
- * request is non-threaded (resize track height or at rec-stop)
- */
-
-#if 0
- /* deadlock:
-#1 0x00007f9570ebd77c in g_mutex_lock_slowpath (mutex=0x7f9575157760 <ArdourWaveView::WaveView::current_image_lock>) at ././glib/gthread-posix.c:1313
-#2 0x000055f6f8d1aac0 in Glib::Threads::Mutex::Lock::Lock(Glib::Threads::Mutex&) (this=0x7ffc4d905aa0, mutex=...) at /usr/include/glibmm-2.4/glibmm/threads.h:688
-#3 0x00007f9574f05054 in ArdourWaveView::WaveView::invalidate_image_cache() (this=0x55f6fdf341a0) at ../libs/canvas/wave_view.cc:275
-#4 0x00007f9574f0b1b0 in ArdourWaveView::WaveView::gain_changed() (this=0x55f6fdf341a0) at ../libs/canvas/wave_view.cc:1329
-#5 0x000055f6f96eb1b8 in TapeAudioRegionView::update(unsigned int) (this=0x55f6fdf32640) at ../gtk2_ardour/tape_region_view.cc:102
-#6 0x000055f6f96eba9f in boost::_mfi::mf1<void, TapeAudioRegionView, unsigned int>::operator()(TapeAudioRegionView*, unsigned int) const (this=0x55f6fa74ce10, p=0x55f6fdf32640, a1=0)
- at /usr/include/boost/bind/mem_fn_template.hpp:165
-#7 0x000055f6f96eb9b3 in boost::_bi::list2<boost::_bi::value<TapeAudioRegionView*>, boost::_bi::value<unsigned int> >::operator()<boost::_mfi::mf1<void, TapeAudioRegionView, unsigned int>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf1<void, TapeAudioRegionView, unsigned int>&, boost::_bi::list0&, int) (this=0x55f6fa74ce20, f=..., a=...)
- at /usr/include/boost/bind/bind.hpp:319
-#8 0x000055f6f96eb76f in boost::_bi::bind_t<void, boost::_mfi::mf1<void, TapeAudioRegionView, unsigned int>, boost::_bi::list2<boost::_bi::value<TapeAudioRegionView*>, boost::_bi::value<unsigned int> > >::operator()() (this=0x55f6fa74ce10) at /usr/include/boost/bind/bind.hpp:1294
-#9 0x000055f6f96eb6b4 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf1<void, TapeAudioRegionView, unsigned int>, boost::_bi::list2<boost::_bi::value<TapeAudioRegionView*>, boost::_bi::value<unsigned int> > >, void>::invoke(boost::detail::function::function_buffer&) (function_obj_ptr=...)
- at /usr/include/boost/function/function_template.hpp:159
-#10 0x000055f6f8d73fc8 in boost::function0<void>::operator()() const (this=0x55f6fefe4f60) at /usr/include/boost/function/function_template.hpp:771
-#11 0x000055f6f8da3a00 in boost::_bi::list0::operator()<boost::function<void ()>, boost::_bi::list0>(boost::_bi::type<void>, boost::function<void ()>&, boost::_bi::list0&, int) (this=0x55f6fefe4f80, f=...) at /usr/include/boost/bind/bind.hpp:198
-#12 0x000055f6f8d9869f in boost::_bi::bind_t<boost::_bi::unspecified, boost::function<void ()>, boost::_bi::list0>::operator()() (this=0x55f6fefe4f60)
- at /usr/include/boost/bind/bind.hpp:1294
-#13 0x000055f6f8d8f068 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<boost::_bi::unspecified, boost::function<void ()>, boost::_bi::list0>, void>::invoke(boost::detail::function::function_buffer&) (function_obj_ptr=...) at /usr/include/boost/function/function_template.hpp:159
-#14 0x000055f6f8d73fc8 in boost::function0<void>::operator()() const (this=0x7ffc4d905f60) at /usr/include/boost/function/function_template.hpp:771
-#15 0x00007f9574b11192 in AbstractUI<Gtkmm2ext::UIRequest>::call_slot(PBD::EventLoop::InvalidationRecord*, boost::function<void ()> const&) (this=
- 0x55f6fa47dfe0, invalidation=0x55f6fdf375d0, f=...) at /home/rgareus/src/ardour/libs/pbd/pbd/abstract_ui.cc:425
-#16 0x000055f6f8d70a9c in PBD::Signal0<void, PBD::OptionalLastValue<void> >::compositor(boost::function<void ()>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*) (f=..., event_loop=0x55f6fa47dfe0, ir=0x55f6fdf375d0) at /home/rgareus/src/ardour/build/libs/pbd/pbd/signals_generated.h:216
-#17 0x000055f6f8da3c64 in boost::_bi::list3<boost::_bi::value<boost::function<void ()> >, boost::_bi::value<PBD::EventLoop*>, boost::_bi::value<PBD::EventLoop::InvalidationRecord*> >::operator()<void (*)(boost::function<void ()>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(boost::function<void ()>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*), boost::_bi::list0&, int) (this=0x55f6fa6a9bd8, f=
- @0x55f6fa6a9bd0: 0x55f6f8d70a0f <PBD::Signal0<void, PBD::OptionalLastValue<void> >::compositor(boost::function<void ()>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*)>, a=...)
- at /usr/include/boost/bind/bind.hpp:398
-#18 0x000055f6f8d98827 in boost::_bi::bind_t<void, void (*)(boost::function<void ()>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*), boost::_bi::list3<boost::_bi::value<boost::function<void ()> >, boost::_bi::value<PBD::EventLoop*>, boost::_bi::value<PBD::EventLoop::InvalidationRecord*> > >::operator()() (this=0x55f6fa6a9bd0) at /usr/include/boost/bind/bind.hpp:1294
-#19 0x000055f6f8d8f1ee in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, void (*)(boost::function<void ()>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*), boost::_bi::list3<boost::_bi::value<boost::function<void ()> >, boost::_bi::value<PBD::EventLoop*>, boost::_bi::value<PBD::EventLoop::InvalidationRecord*> > >, void>::invoke(boost::detail::function::function_buffer&) (function_obj_ptr=...) at /usr/include/boost/function/function_template.hpp:159
-#20 0x000055f6f8d73fc8 in boost::function0<void>::operator()() const (this=0x55f6ffdb4de0) at /usr/include/boost/function/function_template.hpp:771
-#21 0x000055f6f8d70ea8 in PBD::Signal0<void, PBD::OptionalLastValue<void> >::operator()() (this=0x55f6fd359158) at /home/rgareus/src/ardour/build/libs/pbd/pbd/signals_generated.h:325
-#22 0x00007f95739515a3 in ARDOUR::AudioSource::done_with_peakfile_writes(bool) (this=0x55f6fd359140, done=true) at ../libs/ardour/audiosource.cc:841
-#23 0x00007f9573950fbe in ARDOUR::AudioSource::build_peaks_from_scratch() (this=0x55f6fd359140) at ../libs/ardour/audiosource.cc:779
-#24 0x00007f957394ee6b in ARDOUR::AudioSource::read_peaks_with_fpp(ARDOUR::PeakData*, long, long, long, double, long) const (this=0x55f6fd359140, peaks=0x55f700da6b80, npeaks=1356, start=113190, cnt=447480, samples_per_visual_peak=330, samples_per_file_peak=256) at ../libs/ardour/audiosource.cc:391
-#25 0x00007f957394eb15 in ARDOUR::AudioSource::read_peaks(ARDOUR::PeakData*, long, long, long, double) const (this=0x55f6fd359140, peaks=0x55f700da6b80, npeaks=1356, start=113190, cnt=447480, samples_per_visual_peak=330) at ../libs/ardour/audiosource.cc:337
-#26 0x00007f957393a905 in ARDOUR::AudioRegion::read_peaks(ARDOUR::PeakData*, long, long, long, unsigned int, double) const (this=
- 0x55f6fd84c3b0, buf=0x55f700da6b80, npeaks=1356, offset=113190, cnt=447480, chan_n=0, samples_per_pixel=330) at ../libs/ardour/audioregion.cc:431
-#27 0x00007f9574f09caa in ArdourWaveView::WaveView::generate_image(boost::shared_ptr<ArdourWaveView::WaveViewThreadRequest>, bool) const (this=0x55f6fdf341a0, req=..., in_render_thread=false)
- at ../libs/canvas/wave_view.cc:1005
-#28 0x00007f9574f08e99 in ArdourWaveView::WaveView::get_image(long, long, bool&) const (this=0x55f6fdf341a0, start=225060, end=448800, full_image=@0x7ffc4d9070c7: false)
----Type <return> to continue, or q <return> to quit---
- at ../libs/canvas/wave_view.cc:870
-#29 0x00007f9574f0a6e8 in ArdourWaveView::WaveView::render(ArdourCanvas::Rect const&, Cairo::RefPtr<Cairo::Context>) const (this=0x55f6fdf341a0, area=..., context=...)
- at ../libs/canvas/wave_view.cc:1180
-*/
-
- /* check that all waves are build and ready */
- if (!tmp_waves.empty()) {
- return;
- }
-
- ENSURE_GUI_THREAD (*this, &TapeAudioRegionView::update, n);
- // CAIROCANVAS
-
- /* this is a quick hack to draw something (abuse gain_changed to force
- * an image-cache invalidation.
- *
- * TODO: ArdourWaveView::WaveView needs an API to look up the specific channel "n"
- * and a special case to not only invalidate the cache but re-expose the
- * waveform. e.g.
- *
- * waves[m]->rebuild(); // where 'm' corresponds to channel 'n'.
- */
- for (uint32_t i = 0; i < waves.size(); ++i) {
- waves[i]->gain_changed ();
- }
-#endif
-}
diff --git a/gtk2_ardour/tape_region_view.h b/gtk2_ardour/tape_region_view.h
deleted file mode 100644
index 04dc3225b2..0000000000
--- a/gtk2_ardour/tape_region_view.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2006-2009 David Robillard <d@drobilla.net>
- * Copyright (C) 2006-2014 Paul Davis <paul@linuxaudiosystems.com>
- * Copyright (C) 2009 Carl Hetherington <carl@carlh.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef __gtk_ardour_tape_audio_region_view_h__
-#define __gtk_ardour_tape_audio_region_view_h__
-
-#include <vector>
-
-#include "audio_region_view.h"
-
-class TapeAudioRegionView : public AudioRegionView
-{
-public:
- TapeAudioRegionView (ArdourCanvas::Container *,
- RouteTimeAxisView&,
- boost::shared_ptr<ARDOUR::AudioRegion>,
- double initial_samples_per_pixel,
- uint32_t base_color);
- ~TapeAudioRegionView ();
-
-protected:
- void init (bool wait_for_waves);
-
- void update (uint32_t n);
-
- static const TimeAxisViewItem::Visibility default_tape_visibility;
-};
-
-#endif /* __gtk_ardour_tape_audio_region_view_h__ */
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index f6225bc880..1b84fe3fb1 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -264,7 +264,6 @@ gtk2_ardour_sources = [
'stripable_colorpicker.cc',
'stripable_time_axis.cc',
'sys_ex.cc',
- 'tape_region_view.cc',
'template_dialog.cc',
'tempo_curve.cc',
'tempo_dialog.cc',