fix ChanCount min/max
[ardour.git] / libs / ardour / return.cc
index 0152155338f9401b045a470c09f807c28290b2c4..db8156847957bb420488c42322ff22d1a2e4df54 100644 (file)
 #include "pbd/xml++.h"
 
 #include "ardour/amp.h"
-#include "ardour/audio_port.h"
+#include "ardour/audioengine.h"
 #include "ardour/buffer_set.h"
+#include "ardour/gain_control.h"
 #include "ardour/io.h"
 #include "ardour/meter.h"
-#include "ardour/panner.h"
-#include "ardour/port.h"
 #include "ardour/return.h"
 #include "ardour/session.h"
-#include "ardour/mute_master.h"
-#include "ardour/audioengine.h"
 
 #include "i18n.h"
 
@@ -53,8 +50,12 @@ Return::Return (Session& s, bool internal)
 {
        /* never muted */
 
-       _amp.reset (new Amp (_session));
-       _meter.reset (new PeakMeter (_session));
+       boost::shared_ptr<AutomationList> gl (new AutomationList (Evoral::Parameter (GainAutomation)));
+       _gain_control = boost::shared_ptr<GainControl> (new GainControl (_session, Evoral::Parameter (GainAutomation), gl));
+       add_control (_gain_control);
+
+       _amp.reset (new Amp (_session, X_("Fader"), _gain_control, true));
+       _meter.reset (new PeakMeter (_session, name()));
 }
 
 Return::~Return ()
@@ -140,7 +141,7 @@ Return::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pfra
 }
 
 bool
-Return::can_support_io_configuration (const ChanCount& in, ChanCount& out) const
+Return::can_support_io_configuration (const ChanCount& in, ChanCount& out)
 {
        out = in + _input->n_ports();
        return true;
@@ -155,7 +156,7 @@ Return::configure_io (ChanCount in, ChanCount out)
 
        // Ensure there are enough buffers (since we add some)
        if (_session.get_scratch_buffers(in).count() < out) {
-               Glib::Mutex::Lock em (_session.engine().process_lock());
+               Glib::Threads::Mutex::Lock em (_session.engine().process_lock());
                IO::PortCountChanged(out);
        }
 
@@ -163,4 +164,3 @@ Return::configure_io (ChanCount in, ChanCount out)
 
        return true;
 }
-