X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fauditioner.cc;h=33f74faf8037eb557a015f9b5a0feaf85b41ea65;hb=7fc3b0c34c552d7be862897bd0aaa542453e9973;hp=184688c3c3f6fe2e937b2c0d8927861283a8fa8a;hpb=12d437521145a9ab39d9d6f2a9c3c237df3fbc73;p=ardour.git diff --git a/libs/ardour/auditioner.cc b/libs/ardour/auditioner.cc index 184688c3c3..33f74faf80 100644 --- a/libs/ardour/auditioner.cc +++ b/libs/ardour/auditioner.cc @@ -34,6 +34,7 @@ #include "ardour/midi_region.h" #include "ardour/plugin.h" #include "ardour/plugin_insert.h" +#include "ardour/profile.h" #include "ardour/region_factory.h" #include "ardour/route.h" #include "ardour/session.h" @@ -84,13 +85,17 @@ Auditioner::init () Auditioner::~Auditioner () { + if (asynth) { + asynth->drop_references (); + } + asynth.reset (); } void Auditioner::lookup_synth () { string plugin_id = Config->get_midi_audition_synth_uri(); - asynth = boost::shared_ptr(); + asynth.reset (); if (!plugin_id.empty()) { boost::shared_ptr p; p = find_plugin (_session, plugin_id, ARDOUR::LV2); @@ -164,20 +169,20 @@ Auditioner::connect () /* create (and connect) new ports */ _main_outs->defer_pan_reset (); - + if (left.length()) { _output->add_port (left, this, DataType::AUDIO); } - + if (right.length()) { _output->add_port (right, this, DataType::AUDIO); } - + _main_outs->allow_pan_reset (); _main_outs->reset_panner (); } else { - + /* reconnect existing ports */ boost::shared_ptr oleft (_output->nth (0)); @@ -189,7 +194,7 @@ Auditioner::connect () oright->connect (right); } } - + } return 0; @@ -327,7 +332,11 @@ Auditioner::set_diskstream (boost::shared_ptr ds) Track::set_diskstream (ds); _diskstream->set_track (this); - _diskstream->set_destructive (_mode == Destructive); + if (Profile->get_trx()) { + _diskstream->set_destructive (false); + } else { + _diskstream->set_destructive (_mode == Destructive); + } _diskstream->set_non_layered (_mode == NonLayered); _diskstream->set_record_enabled (false); _diskstream->request_input_monitoring (false); @@ -429,7 +438,7 @@ Auditioner::audition_region (boost::shared_ptr region) if (!_synth_added && asynth) { - int rv = add_processor_by_index(asynth, PreFader, &ps, true); + int rv = add_processor (asynth, PreFader, &ps, true); if (rv) { error << _("Failed to load synth for MIDI-Audition.") << endmsg; } else { @@ -477,7 +486,7 @@ Auditioner::audition_region (boost::shared_ptr region) offset = 0; } - _diskstream->seek (offset); + _diskstream->seek (offset, true); current_frame = offset; g_atomic_int_set (&_auditioning, 1);