Replaced external ID generation for event listeners

This commit is contained in:
Nav
2021-05-25 21:25:56 +01:00
parent 897482de1d
commit 3d7a9eb6f2
2 changed files with 4 additions and 16 deletions

View File

@@ -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<std::size_t> 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;
};

View File

@@ -4,10 +4,7 @@ using namespace Bloom;
void EventManager::registerListener(std::shared_ptr<EventListener> listener) {
auto registerListenersLock = std::unique_lock(this->registerListenerMutex);
size_t newId = this->registeredListeners.size() + 1;
this->registeredListeners.insert(std::pair<size_t, std::shared_ptr<EventListener>>(newId, listener));
listener->setId(newId);
this->registeredListeners.insert(std::pair(listener->getId(), listener));
}
void EventManager::deregisterListener(size_t listenerId) {