diff options
author | Carl Hetherington <carl@carlh.net> | 2011-10-28 17:04:09 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-10-28 17:04:09 +0000 |
commit | 7bdcc127e3e42bd76b997b56ecd938b1127d790b (patch) | |
tree | f1e9856094ee5a54cc28957508f2b693fbcd043a /gtk2_ardour/global_port_matrix.cc | |
parent | f65e3f287b48fef6d4fdb8c4456c0eada4c4431c (diff) |
Use shared_ptr for Port in the AudioEngine; improves thread-safety of the audio engine's port list as a writer cannot destroy a port in one thread while the port list is being iterated in another.
git-svn-id: svn://localhost/ardour2/branches/3.0@10327 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/global_port_matrix.cc')
-rw-r--r-- | gtk2_ardour/global_port_matrix.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gtk2_ardour/global_port_matrix.cc b/gtk2_ardour/global_port_matrix.cc index 565def896e..5e5218bda8 100644 --- a/gtk2_ardour/global_port_matrix.cc +++ b/gtk2_ardour/global_port_matrix.cc @@ -56,8 +56,8 @@ GlobalPortMatrix::set_state (BundleChannel c[2], bool s) for (Bundle::PortList::const_iterator i = in_ports.begin(); i != in_ports.end(); ++i) { for (Bundle::PortList::const_iterator j = out_ports.begin(); j != out_ports.end(); ++j) { - Port* p = _session->engine().get_port_by_name (*i); - Port* q = _session->engine().get_port_by_name (*j); + boost::shared_ptr<Port> p = _session->engine().get_port_by_name (*i); + boost::shared_ptr<Port> q = _session->engine().get_port_by_name (*j); if (p) { if (s) { @@ -105,8 +105,8 @@ GlobalPortMatrix::get_state (BundleChannel c[2]) const for (Bundle::PortList::const_iterator i = in_ports.begin(); i != in_ports.end(); ++i) { for (Bundle::PortList::const_iterator j = out_ports.begin(); j != out_ports.end(); ++j) { - Port* p = _session->engine().get_port_by_name (*i); - Port* q = _session->engine().get_port_by_name (*j); + boost::shared_ptr<Port> p = _session->engine().get_port_by_name (*i); + boost::shared_ptr<Port> q = _session->engine().get_port_by_name (*j); if (!p && !q) { /* two non-Ardour ports; things are slightly more involved */ |