summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-07-13 01:00:53 +0000
committerCarl Hetherington <carl@carlh.net>2011-07-13 01:00:53 +0000
commit16db8b5972de36a640f6173aba4a8e27123fa49c (patch)
tree43901589083daa6882b3cbdffa97071242de68ee /libs
parent84e10e93d148e0b81d6a84592855753339b5a617 (diff)
Add a couple of missing attach_buffers() calls after _ports has been changed. I think this fixes #3856.
git-svn-id: svn://localhost/ardour2/branches/3.0@9858 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/buffer_set.cc2
-rw-r--r--libs/ardour/io.cc6
2 files changed, 7 insertions, 1 deletions
diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc
index 2f091854cf..3c66bddbb7 100644
--- a/libs/ardour/buffer_set.cc
+++ b/libs/ardour/buffer_set.cc
@@ -87,6 +87,8 @@ BufferSet::clear()
/** Set up this BufferSet so that its data structures mirror a PortSet's buffers.
* This is quite expensive and not RT-safe, so it should not be called in a process context;
* get_jack_port_addresses() will fill in a structure set up by this method.
+ *
+ * XXX: this *is* called in a process context; I'm not sure quite what `should not' means above.
*/
void
BufferSet::attach_buffers (PortSet& ports)
diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc
index 13d22e6592..db3bffbe30 100644
--- a/libs/ardour/io.cc
+++ b/libs/ardour/io.cc
@@ -267,7 +267,7 @@ IO::remove_port (Port* port, void* src)
if (change.type != IOChange::NoChange) {
changed (change, src);
- _session.set_dirty ();
+ _buffers.attach_buffers (_ports);
}
}
@@ -279,6 +279,8 @@ IO::remove_port (Port* port, void* src)
return -1;
}
+ _session.set_dirty ();
+
return 0;
}
@@ -332,6 +334,7 @@ IO::add_port (string destination, void* src, DataType type)
change.type = IOChange::ConfigurationChanged;
change.after = _ports.count ();
changed (change, src); /* EMIT SIGNAL */
+ _buffers.attach_buffers (_ports);
}
if (destination.length()) {
@@ -1531,6 +1534,7 @@ IO::connected_to (const string& str) const
return false;
}
+/** Caller must hold process lock */
void
IO::process_input (boost::shared_ptr<Processor> proc, framepos_t start_frame, framepos_t end_frame, pframes_t nframes)
{