From 3d7a9eb6f2dbb990907671c983d454c04b2f8720 Mon Sep 17 00:00:00 2001 From: Nav Date: Tue, 25 May 2021 21:25:56 +0100 Subject: [PATCH] Replaced external ID generation for event listeners --- src/EventManager/EventListener.hpp | 15 +++------------ src/EventManager/EventManager.cpp | 5 +---- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/EventManager/EventListener.hpp b/src/EventManager/EventListener.hpp index 0a1f259f..6f0f7c10 100644 --- a/src/EventManager/EventListener.hpp +++ b/src/EventManager/EventListener.hpp @@ -49,13 +49,8 @@ namespace Bloom */ std::string name; - /** - * Each event listener is supplied an ID upon registering with the EventManager. - * - * @TODO: It might be a better idea to use an std::atomic to generate this auto-incremented ID. Like we do - * with events. - */ - size_t id = 0; + static inline std::atomic lastId = 0; + std::size_t id = ++(this->lastId); /** * Holds all events registered to this listener. @@ -83,11 +78,7 @@ namespace Bloom public: explicit EventListener(const std::string& name): name(name) {}; - void setId(size_t id) { - this->id = id; - }; - - size_t getId() const { + std::size_t getId() const { return this->id; }; diff --git a/src/EventManager/EventManager.cpp b/src/EventManager/EventManager.cpp index 5dba52c2..f008d9d1 100644 --- a/src/EventManager/EventManager.cpp +++ b/src/EventManager/EventManager.cpp @@ -4,10 +4,7 @@ using namespace Bloom; void EventManager::registerListener(std::shared_ptr listener) { auto registerListenersLock = std::unique_lock(this->registerListenerMutex); - size_t newId = this->registeredListeners.size() + 1; - - this->registeredListeners.insert(std::pair>(newId, listener)); - listener->setId(newId); + this->registeredListeners.insert(std::pair(listener->getId(), listener)); } void EventManager::deregisterListener(size_t listenerId) {