Fixed regression which was causing a deadlock when de-registering event handlers from an event handler

This commit is contained in:
Nav
2022-12-18 17:56:21 +00:00
parent 262c50ec3d
commit 0a6951865c

View File

@@ -59,8 +59,12 @@ namespace Bloom
Logger::debug("Dispatching event " + event->getName() + " (" + std::to_string(event->id) + ").");
// Dispatch the event to all registered handlers
const auto mappingLock = this->eventTypeToCallbacksMapping.acquireLock();
const auto& callbacks = this->eventTypeToCallbacksMapping.getValue().find(event->getType())->second;
auto callbacks = std::vector<std::function<void(const Events::Event&)>>();
{
const auto mappingLock = this->eventTypeToCallbacksMapping.acquireLock();
callbacks = this->eventTypeToCallbacksMapping.getValue().find(event->getType())->second;
}
for (auto& callback : callbacks) {
callback(*(event.get()));