projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ignore midi on monitor-section and force strict-i/o
[ardour.git]
/
libs
/
ardour
/
route.cc
diff --git
a/libs/ardour/route.cc
b/libs/ardour/route.cc
index 5f98fba1fe47cf3a21b294fab37e65f482698c32..988f3251ef965f2abb88647fdb4fa3bf47f58c32 100644
(file)
--- a/
libs/ardour/route.cc
+++ b/
libs/ardour/route.cc
@@
-317,6
+317,8
@@
Route::process_output_buffers (BufferSet& bufs,
return;
}
return;
}
+ _mute_control->automation_run (start_frame, nframes);
+
/* figure out if we're going to use gain automation */
if (gain_automation_ok) {
_amp->set_gain_automation_buffer (_session.gain_automation_buffer ());
/* figure out if we're going to use gain automation */
if (gain_automation_ok) {
_amp->set_gain_automation_buffer (_session.gain_automation_buffer ());
@@
-1617,8
+1619,8
@@
Route::try_configure_processors_unlocked (ChanCount in, ProcessorStreams* err)
if (boost::dynamic_pointer_cast<Delivery> (*p)
&& boost::dynamic_pointer_cast<Delivery> (*p)->role() == Delivery::Main
if (boost::dynamic_pointer_cast<Delivery> (*p)
&& boost::dynamic_pointer_cast<Delivery> (*p)->role() == Delivery::Main
- && !
(is_monitor() || is_auditioner()
)
- && ( _strict_io || Profile->get_mixbus ())) {
+ && !
is_auditioner(
)
+ && (
is_monitor() ||
_strict_io || Profile->get_mixbus ())) {
/* with strict I/O the panner + output are forced to
* follow the last processor's output.
*
/* with strict I/O the panner + output are forced to
* follow the last processor's output.
*
@@
-2237,7
+2239,7
@@
Route::state(bool full_state)
node->add_property("default-type", _default_type.to_string());
node->add_property ("strict-io", _strict_io);
node->add_property("default-type", _default_type.to_string());
node->add_property ("strict-io", _strict_io);
-
Stripable::add_state (*node
);
+
node->add_child_nocopy (_presentation_info.get_state()
);
node->add_property("active", _active?"yes":"no");
string p;
node->add_property("active", _active?"yes":"no");
string p;
@@
-2826,9
+2828,14
@@
Route::set_processor_state (const XMLNode& node)
}
{
}
{
- Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ());
Glib::Threads::RWLock::WriterLock lm (_processor_lock);
Glib::Threads::RWLock::WriterLock lm (_processor_lock);
+ /* re-assign _processors w/o process-lock.
+ * if there's an IO-processor present in _processors but
+ * not in new_order, it will be deleted and ~IO takes
+ * a process lock.
+ */
_processors = new_order;
_processors = new_order;
+ Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ());
if (must_configure) {
configure_processors_unlocked (0, &lm);
if (must_configure) {
configure_processors_unlocked (0, &lm);