update lua script file management:
[ardour.git] / libs / pbd / event_loop.cc
index e6f5414d11ff2136327574ebc420947be4d18f19..08f3c2e1583ab54a365f54c067c8fd0dfa74fefc 100644 (file)
@@ -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;
+               }
+       }
+}