use arraylist in eventmanager
This commit is contained in:
@ -2,13 +2,12 @@
|
|||||||
#include "kernel/Globals.h"
|
#include "kernel/Globals.h"
|
||||||
|
|
||||||
void KeyEventManager::subscribe(KeyEventListener& listener) {
|
void KeyEventManager::subscribe(KeyEventListener& listener) {
|
||||||
this->listeners[this->num_subscribed] = &listener;
|
this->listeners.insert(&listener);
|
||||||
this->num_subscribed = this->num_subscribed + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeyEventManager::broadcast(char c) {
|
void KeyEventManager::broadcast(char c) {
|
||||||
for (unsigned int i = 0; i < this->num_subscribed; ++i) {
|
for (KeyEventListener* listener : this->listeners) {
|
||||||
this->listeners[i]->trigger(c); // Sets lastChar, do this before wakeup
|
listener->trigger(c);
|
||||||
scheduler.deblock(&this->listeners[i]->thread);
|
scheduler.deblock(&listener->thread);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#define __KeyEventManager_Include_H_
|
#define __KeyEventManager_Include_H_
|
||||||
|
|
||||||
#include "user/event/KeyEventListener.h"
|
#include "user/event/KeyEventListener.h"
|
||||||
|
#include "user/lib/ArrayList.h"
|
||||||
|
|
||||||
// NOTE: Could do this more generally but we only have key events
|
// NOTE: Could do this more generally but we only have key events
|
||||||
|
|
||||||
@ -9,9 +10,7 @@ class KeyEventManager {
|
|||||||
private:
|
private:
|
||||||
KeyEventManager(const KeyEventManager& copy) = delete;
|
KeyEventManager(const KeyEventManager& copy) = delete;
|
||||||
|
|
||||||
// TODO: Implement some sort of set structure
|
ArrayList<KeyEventListener*> listeners;
|
||||||
KeyEventListener* listeners[16]; // This is pretty limited but should be enough
|
|
||||||
unsigned int num_subscribed = 0;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
KeyEventManager() {}
|
KeyEventManager() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user