Fixed regression which was causing a deadlock when de-registering event handlers from an event handler
This commit is contained in:
@@ -59,8 +59,12 @@ namespace Bloom
|
|||||||
Logger::debug("Dispatching event " + event->getName() + " (" + std::to_string(event->id) + ").");
|
Logger::debug("Dispatching event " + event->getName() + " (" + std::to_string(event->id) + ").");
|
||||||
|
|
||||||
// Dispatch the event to all registered handlers
|
// Dispatch the event to all registered handlers
|
||||||
const auto mappingLock = this->eventTypeToCallbacksMapping.acquireLock();
|
auto callbacks = std::vector<std::function<void(const Events::Event&)>>();
|
||||||
const auto& callbacks = this->eventTypeToCallbacksMapping.getValue().find(event->getType())->second;
|
|
||||||
|
{
|
||||||
|
const auto mappingLock = this->eventTypeToCallbacksMapping.acquireLock();
|
||||||
|
callbacks = this->eventTypeToCallbacksMapping.getValue().find(event->getType())->second;
|
||||||
|
}
|
||||||
|
|
||||||
for (auto& callback : callbacks) {
|
for (auto& callback : callbacks) {
|
||||||
callback(*(event.get()));
|
callback(*(event.get()));
|
||||||
|
|||||||
Reference in New Issue
Block a user