From 16db8b5972de36a640f6173aba4a8e27123fa49c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 13 Jul 2011 01:00:53 +0000 Subject: 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 --- libs/ardour/buffer_set.cc | 2 ++ libs/ardour/io.cc | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'libs') 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 proc, framepos_t start_frame, framepos_t end_frame, pframes_t nframes) { -- cgit v1.2.3