summaryrefslogtreecommitdiff
path: root/libs/pbd
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-12-14 02:25:13 +0100
committerRobin Gareus <robin@gareus.org>2016-12-14 02:25:13 +0100
commitdd525d1613c30e212a8c529cdf3500ce88ab4885 (patch)
treea899a3868a3c1cc91425bfd59da4ef6e2dd771c7 /libs/pbd
parent112fba182fb4d2ab05a8fa12efdf515684182dca (diff)
release locks before deleting record
Diffstat (limited to 'libs/pbd')
-rw-r--r--libs/pbd/event_loop.cc19
1 files changed, 11 insertions, 8 deletions
diff --git a/libs/pbd/event_loop.cc b/libs/pbd/event_loop.cc
index fbbf9c83aa..d3aaa3c672 100644
--- a/libs/pbd/event_loop.cc
+++ b/libs/pbd/event_loop.cc
@@ -86,17 +86,20 @@ EventLoop::invalidate_request (void* data)
* inherit (indirectly) from sigc::trackable.
*/
- if (ir->event_loop) {
- Glib::Threads::Mutex::Lock lm (ir->event_loop->slot_invalidation_mutex());
- Glib::Threads::Mutex::Lock lr (ir->event_loop->request_invalidation_mutex());
- for (list<BaseRequestObject*>::iterator i = ir->requests.begin(); i != ir->requests.end(); ++i) {
- (*i)->valid = false;
- (*i)->invalidation = 0;
+ if (ir->event_loop) {
+ {
+ Glib::Threads::Mutex::Lock lm (ir->event_loop->slot_invalidation_mutex());
+ Glib::Threads::Mutex::Lock lr (ir->event_loop->request_invalidation_mutex());
+ for (list<BaseRequestObject*>::iterator i = ir->requests.begin(); i != ir->requests.end(); ++i) {
+ (*i)->valid = false;
+ (*i)->invalidation = 0;
+ }
}
+ // should this not always be deleted, regardless if there's an event_loop?
delete ir;
- }
+ }
- return 0;
+ return 0;
}
vector<EventLoop::ThreadBufferMapping>