skip dead threads (if the event remains, it'll be cleaned up below)
authorRobin Gareus <robin@gareus.org>
Wed, 14 Dec 2016 16:48:44 +0000 (17:48 +0100)
committerRobin Gareus <robin@gareus.org>
Wed, 14 Dec 2016 16:48:44 +0000 (17:48 +0100)
libs/pbd/pbd/abstract_ui.cc

index d37b3e2f746cca7e5f89ac1aa6eb17cff41d3606..7fdb213ad08d72ea3fc77aade5452b34e2bca908 100644 (file)
@@ -237,14 +237,12 @@ AbstractUI<RequestObject>::handle_ui_requests ()
                                        }
 
                                        rbml.acquire ();
-                                       if (vec.buf[0]->invalidation) {
+                                       if (vec.buf[0]->invalidation && !(*i).second->dead) {
                                                DEBUG_TRACE (PBD::DEBUG::AbstractUI, string_compose ("%1: removing invalidation record for that request\n", event_loop_name()));
                                                if (vec.buf[0]->invalidation->event_loop && vec.buf[0]->invalidation->event_loop != this) {
                                                        vec.buf[0]->invalidation->event_loop->slot_invalidation_mutex().lock ();
                                                }
-                                               //if (!(*i).second->dead) {
-                                                       vec.buf[0]->invalidation->requests.remove (vec.buf[0]);
-                                               //}
+                                               vec.buf[0]->invalidation->requests.remove (vec.buf[0]);
                                                if (vec.buf[0]->invalidation->event_loop && vec.buf[0]->invalidation->event_loop != this) {
                                                        vec.buf[0]->invalidation->event_loop->slot_invalidation_mutex().unlock ();
                                                }