From f807558781ff5f5d059fa4f0c6f9eb8590534601 Mon Sep 17 00:00:00 2001 From: ChUrl Date: Sat, 16 Jul 2022 18:24:11 +0200 Subject: [PATCH] use arraylist in eventmanager --- c_os/user/event/KeyEventManager.cc | 9 ++++----- c_os/user/event/KeyEventManager.h | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/c_os/user/event/KeyEventManager.cc b/c_os/user/event/KeyEventManager.cc index 7137a57..d6b998c 100644 --- a/c_os/user/event/KeyEventManager.cc +++ b/c_os/user/event/KeyEventManager.cc @@ -2,13 +2,12 @@ #include "kernel/Globals.h" void KeyEventManager::subscribe(KeyEventListener& listener) { - this->listeners[this->num_subscribed] = &listener; - this->num_subscribed = this->num_subscribed + 1; + this->listeners.insert(&listener); } void KeyEventManager::broadcast(char c) { - for (unsigned int i = 0; i < this->num_subscribed; ++i) { - this->listeners[i]->trigger(c); // Sets lastChar, do this before wakeup - scheduler.deblock(&this->listeners[i]->thread); + for (KeyEventListener* listener : this->listeners) { + listener->trigger(c); + scheduler.deblock(&listener->thread); } } diff --git a/c_os/user/event/KeyEventManager.h b/c_os/user/event/KeyEventManager.h index a3b0b0b..4e14d16 100644 --- a/c_os/user/event/KeyEventManager.h +++ b/c_os/user/event/KeyEventManager.h @@ -2,6 +2,7 @@ #define __KeyEventManager_Include_H_ #include "user/event/KeyEventListener.h" +#include "user/lib/ArrayList.h" // NOTE: Could do this more generally but we only have key events @@ -9,9 +10,7 @@ class KeyEventManager { private: KeyEventManager(const KeyEventManager& copy) = delete; - // TODO: Implement some sort of set structure - KeyEventListener* listeners[16]; // This is pretty limited but should be enough - unsigned int num_subscribed = 0; + ArrayList listeners; public: KeyEventManager() {}