summaryrefslogtreecommitdiff
path: root/libs/ardour/control_protocol_manager.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-05-12 20:09:40 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2017-05-12 20:09:40 +0100
commitb23d7d9170a12cbcd788e1c2cbcf688f376752ed (patch)
tree727874888dde6324fe681f9a92e66bf2a276be50 /libs/ardour/control_protocol_manager.cc
parent7021d02782ef9c8a15a0b2cd0762c12a8d87c470 (diff)
change ControlProtocolManager protocol mutex into a RW lock.
Probably not gaining much in terms of contention, but there's really no reason to be using a mutex
Diffstat (limited to 'libs/ardour/control_protocol_manager.cc')
-rw-r--r--libs/ardour/control_protocol_manager.cc20
1 files changed, 10 insertions, 10 deletions
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc
index a84ee9eb6e..2f4b187fec 100644
--- a/libs/ardour/control_protocol_manager.cc
+++ b/libs/ardour/control_protocol_manager.cc
@@ -65,7 +65,7 @@ ControlProtocolManager::ControlProtocolManager ()
ControlProtocolManager::~ControlProtocolManager()
{
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::WriterLock lm (protocols_lock);
for (list<ControlProtocol*>::iterator i = control_protocols.begin(); i != control_protocols.end(); ++i) {
delete (*i);
@@ -87,7 +87,7 @@ ControlProtocolManager::set_session (Session* s)
SessionHandlePtr::set_session (s);
if (_session) {
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::ReaderLock lm (protocols_lock);
for (list<ControlProtocolInfo*>::iterator i = control_protocol_info.begin(); i != control_protocol_info.end(); ++i) {
if ((*i)->requested || (*i)->mandatory) {
@@ -158,7 +158,7 @@ ControlProtocolManager::drop_protocols ()
* before the process cycle stops and ports vanish.
*/
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::WriterLock lm (protocols_lock);
for (list<ControlProtocol*>::iterator p = control_protocols.begin(); p != control_protocols.end(); ++p) {
delete *p;
@@ -245,7 +245,7 @@ ControlProtocolManager::teardown (ControlProtocolInfo& cpi, bool lock_required)
cpi.descriptor->destroy (cpi.descriptor, cpi.protocol);
if (lock_required) {
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::WriterLock lm (protocols_lock);
list<ControlProtocol*>::iterator p = find (control_protocols.begin(), control_protocols.end(), cpi.protocol);
if (p != control_protocols.end()) {
control_protocols.erase (p);
@@ -290,7 +290,7 @@ ControlProtocolManager::load_mandatory_protocols ()
return;
}
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::ReaderLock lm (protocols_lock);
for (list<ControlProtocolInfo*>::iterator i = control_protocol_info.begin(); i != control_protocol_info.end(); ++i) {
if ((*i)->mandatory && ((*i)->protocol == 0)) {
@@ -443,7 +443,7 @@ ControlProtocolManager::set_state (const XMLNode& node, int /*version*/)
XMLNodeList clist;
XMLNodeConstIterator citer;
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::WriterLock lm (protocols_lock);
clist = node.children();
@@ -495,7 +495,7 @@ XMLNode&
ControlProtocolManager::get_state ()
{
XMLNode* root = new XMLNode (state_node_name);
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::ReaderLock lm (protocols_lock);
for (list<ControlProtocolInfo*>::iterator i = control_protocol_info.begin(); i != control_protocol_info.end(); ++i) {
@@ -533,7 +533,7 @@ ControlProtocolManager::instance ()
void
ControlProtocolManager::midi_connectivity_established ()
{
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::ReaderLock lm (protocols_lock);
for (list<ControlProtocol*>::iterator p = control_protocols.begin(); p != control_protocols.end(); ++p) {
(*p)->midi_connectivity_established ();
@@ -543,7 +543,7 @@ ControlProtocolManager::midi_connectivity_established ()
void
ControlProtocolManager::register_request_buffer_factories ()
{
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::ReaderLock lm (protocols_lock);
for (list<ControlProtocolInfo*>::iterator i = control_protocol_info.begin(); i != control_protocol_info.end(); ++i) {
@@ -572,7 +572,7 @@ ControlProtocolManager::stripable_selection_changed (StripableNotificationListPt
*/
{
- Glib::Threads::Mutex::Lock lm (protocols_lock);
+ Glib::Threads::RWLock::ReaderLock lm (protocols_lock);
for (list<ControlProtocol*>::iterator p = control_protocols.begin(); p != control_protocols.end(); ++p) {
DEBUG_TRACE (DEBUG::Selection, string_compose ("selection change notification for surface \"%1\"\n", (*p)->name()));