X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fevent_loop.cc;h=08f3c2e1583ab54a365f54c067c8fd0dfa74fefc;hb=b7754af246dd5446828217a636d8a24e751e41d1;hp=e6f5414d11ff2136327574ebc420947be4d18f19;hpb=077c65cc2a2a058505256ea7d4c58508f3a30593;p=ardour.git diff --git a/libs/pbd/event_loop.cc b/libs/pbd/event_loop.cc index e6f5414d11..08f3c2e158 100644 --- a/libs/pbd/event_loop.cc +++ b/libs/pbd/event_loop.cc @@ -147,7 +147,7 @@ EventLoop::pre_register (const string& emitting_thread_name, uint32_t num_reques */ ThreadBufferMapping mapping; - Glib::Threads::RWLock::ReaderLock lm (thread_buffer_requests_lock); + Glib::Threads::RWLock::WriterLock lm (thread_buffer_requests_lock); for (RequestBufferSuppliers::iterator trs = request_buffer_suppliers.begin(); trs != request_buffer_suppliers.end(); ++trs) { @@ -219,3 +219,15 @@ EventLoop::pre_register (const string& emitting_thread_name, uint32_t num_reques } } +void +EventLoop::remove_request_buffer_from_map (void* ptr) +{ + Glib::Threads::RWLock::WriterLock lm (thread_buffer_requests_lock); + + for (ThreadRequestBufferList::iterator x = thread_buffer_requests.begin(); x != thread_buffer_requests.end(); ++x) { + if (x->second.request_buffer == ptr) { + thread_buffer_requests.erase (x); + break; + } + } +}