X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fauditioner.cc;h=33f74faf8037eb557a015f9b5a0feaf85b41ea65;hb=7fc3b0c34c552d7be862897bd0aaa542453e9973;hp=3242346e96d094db54ef11a80d07b531c8f83408;hpb=c4e31356170835bf3c4231b906db128187f471d8;p=ardour.git diff --git a/libs/ardour/auditioner.cc b/libs/ardour/auditioner.cc index 3242346e96..33f74faf80 100644 --- a/libs/ardour/auditioner.cc +++ b/libs/ardour/auditioner.cc @@ -85,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); @@ -165,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)); @@ -190,7 +194,7 @@ Auditioner::connect () oright->connect (right); } } - + } return 0; @@ -482,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);