add independent panner for internal (Aux) sends
authorRobin Gareus <robin@gareus.org>
Mon, 13 Jan 2014 09:48:37 +0000 (10:48 +0100)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 13 Jan 2014 14:39:50 +0000 (09:39 -0500)
gtk2_ardour/mixer_strip.cc
gtk2_ardour/processor_box.cc
libs/ardour/delivery.cc
libs/ardour/route.cc

index a0f9f241987bb133d8c8e45d25c05571b295a0f7..8c8f675cf46400366a6598e9d7d1423b2833a658 100644 (file)
@@ -1893,16 +1893,8 @@ MixerStrip::show_send (boost::shared_ptr<Send> send)
 
        panner_ui().set_panner (_current_delivery->panner_shell(), _current_delivery->panner());
        panner_ui().set_available_panners(boost::shared_ptr<ARDOUR::Route>(), std::map<std::string,std::string>());
-
        panner_ui().setup_pan ();
-
-       /* make sure the send has audio output */
-
-       if (_current_delivery->output() && _current_delivery->output()->n_ports().n_audio() > 0) {
-               panners.show_all ();
-       } else {
-               panners.hide_all ();
-       }
+       panners.show_all ();
 
        input_button.set_sensitive (false);
        group_button.set_sensitive (false);
index 605fbbc25fb3587c99d2c96ed2e52e24e0afa39c..e5a5157764341479b672009be9668e57be6af67f 100644 (file)
@@ -46,6 +46,7 @@
 #include "ardour/internal_return.h"
 #include "ardour/internal_send.h"
 #include "ardour/plugin_insert.h"
+#include "ardour/pannable.h"
 #include "ardour/port_insert.h"
 #include "ardour/profile.h"
 #include "ardour/return.h"
@@ -2051,8 +2052,9 @@ ProcessorBox::paste_processor_state (const XMLNodeList& nlist, boost::shared_ptr
                                        continue;
                                }
 
+                               boost::shared_ptr<Pannable> sendpan(new Pannable (*_session));
                                XMLNode n (**niter);
-                                InternalSend* s = new InternalSend (*_session, _route->pannable(), _route->mute_master(),
+                                InternalSend* s = new InternalSend (*_session, sendpan, _route->mute_master(),
                                                                    boost::shared_ptr<Route>(), Delivery::Aux); 
 
                                IOProcessor::prepare_for_reset (n, s->name());
index 575d26acdddc8f9852c40a6bb712318a6413ac29..26d2cf3acd8b027ebe01188e0646bb9a03f9ce85 100644 (file)
@@ -329,6 +329,9 @@ Delivery::state (bool full_state)
 
        if (_panshell) {
                node.add_child_nocopy (_panshell->get_state ());
+               if (_panshell->pannable()) {
+                       node.add_child_nocopy (_panshell->pannable()->get_state ());
+               }
        }
 
        return node;
@@ -358,6 +361,11 @@ Delivery::set_state (const XMLNode& node, int version)
 
        reset_panner ();
 
+       XMLNode* pannnode = node.child (X_("Pannable"));
+       if (_panshell->panner() && pannnode) {
+               _panshell->pannable()->set_state (*pannnode, version);
+       }
+
        return 0;
 }
 
index e86d2c5b0dead97a75d3e3b72ab263c7b6c1e806..315c98ab127e5518cba34112a1a290c667fc728e 100644 (file)
@@ -2552,7 +2552,8 @@ Route::set_processor_state (const XMLNode& node)
 
                                if (prop->value() == "intsend") {
 
-                                       processor.reset (new InternalSend (_session, _pannable, _mute_master, boost::shared_ptr<Route>(), Delivery::Role (0)));
+                                       boost::shared_ptr<Pannable> sendpan (new Pannable (_session));
+                                       processor.reset (new InternalSend (_session, sendpan, _mute_master, boost::shared_ptr<Route>(), Delivery::Role (0)));
 
                                } else if (prop->value() == "ladspa" || prop->value() == "Ladspa" ||
                                           prop->value() == "lv2" ||
@@ -2758,7 +2759,8 @@ Route::add_aux_send (boost::shared_ptr<Route> route, boost::shared_ptr<Processor
 
                {
                        Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock ());
-                       listener.reset (new InternalSend (_session, _pannable, _mute_master, route, Delivery::Aux));
+                       boost::shared_ptr<Pannable> sendpan (new Pannable (_session));
+                       listener.reset (new InternalSend (_session, sendpan, _mute_master, route, Delivery::Aux));
                }
 
                add_processor (listener, before);