#include "pbd/enumwriter.h"
#include "pbd/convert.h"
-#include "ardour/midi_buffer.h"
-
-#include "ardour/debug.h"
-#include "ardour/delivery.h"
-#include "ardour/audio_buffer.h"
-#include "ardour/audio_port.h"
#include "ardour/amp.h"
+#include "ardour/audioengine.h"
#include "ardour/buffer_set.h"
-#include "ardour/configuration.h"
+#include "ardour/debug.h"
+#include "ardour/delivery.h"
#include "ardour/io.h"
-#include "ardour/meter.h"
#include "ardour/mute_master.h"
-#include "ardour/panner.h"
-#include "ardour/panner_shell.h"
#include "ardour/pannable.h"
+#include "ardour/panner_shell.h"
#include "ardour/port.h"
#include "ardour/session.h"
-#include "ardour/audioengine.h"
#include "i18n.h"
+namespace ARDOUR { class Panner; }
+
using namespace std;
using namespace PBD;
using namespace ARDOUR;
-PBD::Signal1<void, pframes_t> Delivery::CycleStart;
-PBD::Signal0<int> Delivery::PannersLegal;
+PBD::Signal0<void> Delivery::PannersLegal;
bool Delivery::panners_legal = false;
/* deliver to an existing IO object */
if (_output) {
_output->changed.connect_same_thread (*this, boost::bind (&Delivery::output_changed, this, _1, _2));
}
-
- CycleStart.connect_same_thread (*this, boost::bind (&Delivery::cycle_start, this, _1));
}
/* deliver to a new IO object */
if (_output) {
_output->changed.connect_same_thread (*this, boost::bind (&Delivery::output_changed, this, _1, _2));
}
-
- CycleStart.connect_same_thread (*this, boost::bind (&Delivery::cycle_start, this, _1));
}
Delivery::~Delivery()
{
- DEBUG_TRACE (DEBUG::Destruction, string_compose ("delivery %1 destructor\n", _name));
+ DEBUG_TRACE (DEBUG::Destruction, string_compose ("delivery %1 destructor\n", _name));
+
+ /* this object should vanish from any signal callback lists
+ that it is on before we get any further. The full qualification
+ of the method name is not necessary, but is here to make it
+ clear that this call is about signals, not data flow connections.
+ */
+
+ ScopedConnectionList::drop_connections ();
+
delete _output_buffers;
}
}
}
-void
-Delivery::cycle_start (pframes_t /*nframes*/)
-{
- _no_outs_cuz_we_no_monitor = false;
-}
-
bool
Delivery::can_support_io_configuration (const ChanCount& in, ChanCount& out) const
{
}
}
-int
+void
Delivery::panners_became_legal ()
{
if (_panshell) {
}
panner_legal_c.disconnect ();
- return 0;
}
void
return 0;
}
-int
+void
Delivery::reset_panners ()
{
panners_legal = true;
- return *PannersLegal ();
+ PannersLegal ();
}
void
-Delivery::flush_buffers (framecnt_t nframes, framepos_t time)
+Delivery::flush_buffers (framecnt_t nframes)
{
/* io_lock, not taken: function must be called from Session::process() calltree */
PortSet& ports (_output->ports());
for (PortSet::iterator i = ports.begin(); i != ports.end(); ++i) {
- i->flush_buffers (nframes, time);
+ i->flush_buffers (nframes);
}
}