diff options
author | Carl Hetherington <carl@carlh.net> | 2010-12-11 00:23:51 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-12-11 00:23:51 +0000 |
commit | 19ae4ed6403075647118180c241fd68cbbdc24a6 (patch) | |
tree | 2711c0e0080a94e7d28dec7a809b9dc58309ab81 | |
parent | cd175818edfd56d3db7d3cdae29124386e790221 (diff) |
Comment a few things and add missing process lock when adding a route from a template.
git-svn-id: svn://localhost/ardour2/branches/3.0@8242 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | libs/ardour/ardour/io.h | 7 | ||||
-rw-r--r-- | libs/ardour/io.cc | 1 | ||||
-rw-r--r-- | libs/ardour/route.cc | 4 | ||||
-rw-r--r-- | libs/ardour/session.cc | 3 |
4 files changed, 10 insertions, 5 deletions
diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h index fd7cb563fd..94dbfadb04 100644 --- a/libs/ardour/ardour/io.h +++ b/libs/ardour/ardour/io.h @@ -133,8 +133,11 @@ class IO : public SessionObject, public Latent const ChanCount& n_ports () const { return _ports.count(); } - /** Emitted with the process lock held */ - PBD::Signal2<void,IOChange,void*> changed; + /* The process lock will be held on emission of this signal if + * IOChange contains ConfigurationChanged. In other cases, + * the process lock status is undefined. + */ + PBD::Signal2<void, IOChange, void *> changed; virtual XMLNode& state (bool full); XMLNode& get_state (void); diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index c29ee51a58..ced4508d7a 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -189,7 +189,6 @@ IO::disconnect (Port* our_port, string other_port, void* src) return 0; } -/** Caller must hold process lock */ int IO::connect (Port* our_port, string other_port, void* src) { diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 55b3a59f51..51ea1960cb 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -2718,7 +2718,7 @@ Route::nonrealtime_handle_transport_stopped (bool /*abort_ignored*/, bool did_lo _roll_delay = _initial_delay; } -/** Called with the process lock held */ +/** Called with the process lock held if change contains ConfigurationChanged */ void Route::input_change_handler (IOChange change, void * /*src*/) { @@ -2729,7 +2729,7 @@ Route::input_change_handler (IOChange change, void * /*src*/) } } -/** Called with the process lock held */ +/** Called with the process lock held if change contains ConfigurationChanged */ void Route::output_change_handler (IOChange change, void * /*src*/) { diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 11fd1fc635..c80f9c3e2e 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1933,6 +1933,9 @@ Session::new_route_from_template (uint32_t how_many, const std::string& template picks up the configuration of the route. During session loading this normally happens in a different way. */ + + Glib::Mutex::Lock lm (AudioEngine::instance()->process_lock ()); + IOChange change (IOChange::Type (IOChange::ConfigurationChanged | IOChange::ConnectionsChanged)); change.after = route->input()->n_ports(); route->input()->changed (change, this); |