summaryrefslogtreecommitdiff
path: root/libs/pbd/event_loop.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/pbd/event_loop.cc')
-rw-r--r--libs/pbd/event_loop.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/libs/pbd/event_loop.cc b/libs/pbd/event_loop.cc
index 3bc4abcbdf..69223efe49 100644
--- a/libs/pbd/event_loop.cc
+++ b/libs/pbd/event_loop.cc
@@ -1,6 +1,9 @@
+#include <iostream>
#include "pbd/event_loop.h"
+#include "pbd/stacktrace.h"
using namespace PBD;
+using namespace std;
Glib::StaticPrivate<EventLoop> EventLoop::thread_event_loop;
@@ -17,3 +20,29 @@ EventLoop::set_event_loop_for_thread (EventLoop* loop)
thread_event_loop.set (loop, do_not_delete_the_loop_pointer);
}
+void*
+EventLoop::invalidate_request (void* data)
+{
+ InvalidationRecord* ir = (InvalidationRecord*) data;
+
+ if (ir->event_loop) {
+ Glib::Mutex::Lock lm (ir->event_loop->slot_invalidation_mutex());
+ if (ir->request) {
+ cerr << "Object deleted had outstanding event loop request, IR created @ "
+ << ir->file << ':' << ir->line
+ << endl;
+ ir->request->valid = false;
+ ir->request->invalidation = 0;
+ } else {
+ cerr << "No queued request associated with object deletion from "
+ << ir->file << ':' << ir->line
+ << endl;
+
+ }
+
+ delete ir;
+ }
+
+ return 0;
+}
+