mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-23 11:59:23 +01:00
39 lines
826 B
C++
39 lines
826 B
C++
#include "listener.hh"
|
|
#include "utils.hh"
|
|
|
|
ListenerManager::ListenerManager()
|
|
{
|
|
printf("Flushing listeners\n");
|
|
this->flushListeners();
|
|
}
|
|
|
|
void ListenerManager::registerListener(Listener *kl)
|
|
{
|
|
int n_listeners = sizeof(this->listeners) / sizeof(*this->listeners);
|
|
int i;
|
|
|
|
/* Don't register already registered listeners */
|
|
for (i = 0; i < n_listeners; i++)
|
|
if (this->listeners[i] == kl)
|
|
return;
|
|
/* Find a free spot */
|
|
for (i = 0; i < n_listeners; i++)
|
|
if (!this->listeners[i])
|
|
break;
|
|
|
|
panic_if(i == n_listeners,
|
|
"No free listeners!\n");
|
|
this->listeners[i] = kl;
|
|
}
|
|
|
|
void ListenerManager::unregisterListener(Listener *kl)
|
|
{
|
|
int n_listeners = sizeof(this->listeners) / sizeof(*this->listeners);
|
|
|
|
for (int i = 0; i < n_listeners; i++)
|
|
{
|
|
if (this->listeners[i] == kl)
|
|
this->listeners[i] = NULL;
|
|
}
|
|
}
|