Use ::g_rename instead of ::rename in ARDOUR::FileSource class
[ardour.git] / libs / ardour / plugin_insert.cc
index bfa86fbc80769006f6c2b36db9faa10f991c56dc..7b3aa60ba48cf49851542cd7660dae584dd47ae9 100644 (file)
@@ -77,6 +77,7 @@ PluginInsert::PluginInsert (Session& s, boost::shared_ptr<Plugin> plug)
        , _strict_io (false)
        , _custom_cfg (false)
        , _maps_from_state (false)
+       , _latency_changed (false)
        , _bypass_port (UINT32_MAX)
 {
        /* the first is the master */
@@ -555,6 +556,13 @@ PluginInsert::activate ()
        }
 
        Processor::activate ();
+       /* when setting state e.g ProcessorBox::paste_processor_state ()
+        * the plugin is not yet owned by a route.
+        * but no matter.  Route::add_processors() will call activate () again
+        */
+       if (!owner ()) {
+               return;
+       }
        if (_plugin_signal_latency != signal_latency ()) {
                _plugin_signal_latency = signal_latency ();
                latency_changed ();
@@ -1083,7 +1091,8 @@ PluginInsert::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame
                if (_session.transport_rolling() || _session.bounce_processing()) {
                        automation_run (bufs, start_frame, end_frame, speed, nframes);
                } else {
-                       connect_and_run (bufs, start_frame, end_frame, speed, nframes, 0, false);
+                       Glib::Threads::Mutex::Lock lm (control_lock(), Glib::Threads::TRY_LOCK);
+                       connect_and_run (bufs, start_frame, end_frame, speed, nframes, 0, lm.locked());
                }
 
        } else {