Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include <glibmm/thread.h>
+#include <glibmm/threads.h>
-#include "pbd/failed_constructor.h"
-
-#include "ardour/audio_buffer.h"
#include "ardour/internal_return.h"
-#include "ardour/mute_master.h"
-#include "ardour/session.h"
#include "ardour/internal_send.h"
-#include "ardour/audioengine.h"
using namespace std;
using namespace ARDOUR;
return;
}
- /* _sends is only modified with the process lock held, so this is ok, I think */
-
- for (list<InternalSend*>::iterator i = _sends.begin(); i != _sends.end(); ++i) {
- if ((*i)->active ()) {
- bufs.merge_from ((*i)->get_buffers(), nframes);
+ Glib::Threads::Mutex::Lock lm (_sends_mutex, Glib::Threads::TRY_LOCK);
+
+ if (lm.locked ()) {
+ for (list<InternalSend*>::iterator i = _sends.begin(); i != _sends.end(); ++i) {
+ if ((*i)->active ()) {
+ bufs.merge_from ((*i)->get_buffers(), nframes);
+ }
}
}
void
InternalReturn::add_send (InternalSend* send)
{
- Glib::Mutex::Lock lm (_session.engine().process_lock());
+ Glib::Threads::Mutex::Lock lm (_sends_mutex);
_sends.push_back (send);
}
void
InternalReturn::remove_send (InternalSend* send)
{
- Glib::Mutex::Lock lm (_session.engine().process_lock());
+ Glib::Threads::Mutex::Lock lm (_sends_mutex);
_sends.remove (send);
}
}
bool
-InternalReturn::can_support_io_configuration (const ChanCount& in, ChanCount& out) const
+InternalReturn::can_support_io_configuration (const ChanCount& in, ChanCount& out)
{
out = in;
return true;
}
+
+bool
+InternalReturn::configure_io (ChanCount in, ChanCount out)
+{
+ IOProcessor::configure_io (in, out);
+ return true;
+}