Compare commits

..

No commits in common. "7021b7a401c73deb7ff69a5e687e5cbf5cf1ad70" and "8e5a421753cc8899a0d61f9d3c91cab04d105543" have entirely different histories.

3 changed files with 12 additions and 12 deletions

View File

@ -170,12 +170,12 @@ RETURN_EVENT:
return event; return event;
} }
void es_deregister_event(EventSystem event_system, Event *event) { void es_deregister_event(EventSystem *event_system, Event *event) {
if (IS_INVALID_SYSTEM(event_system) || IS_INVALID_EVENT((*event)) || event_system.id != event->system.id) { if (!event_system || IS_INVALID_SYSTEM((*event_system)) || IS_INVALID_EVENT((*event)) || event_system->id != event->system.id) {
return; return;
} }
ESInternal *es = get_event_system_internal(event_system); ESInternal *es = get_event_system_internal(*event_system);
if (!VALID_MAGIC(es) || event->id > es->event_count) { if (!VALID_MAGIC(es) || event->id > es->event_count) {
return; return;
} }
@ -193,14 +193,14 @@ void es_deregister_event(EventSystem event_system, Event *event) {
event->id = 0; event->id = 0;
} }
EventListener es_add_event_listener(EventSystem *event_system, Event event, EventCallback callback) { EventListener es_add_event_listener(EventSystem event_system, Event event, EventCallback callback) {
EventListener listener = INVALID_LISTENER; EventListener listener = INVALID_LISTENER;
if (!event_system || IS_INVALID_SYSTEM((*event_system)) || IS_INVALID_EVENT(event) || event_system->id != event.system.id || !callback) { if (IS_INVALID_SYSTEM(event_system) || IS_INVALID_EVENT(event) || event_system.id != event.system.id || !callback) {
goto RETURN_LISTENER; goto RETURN_LISTENER;
} }
ESInternal *es = get_event_system_internal(*event_system); ESInternal *es = get_event_system_internal(event_system);
if (!VALID_MAGIC(es)) { if (!VALID_MAGIC(es)) {
goto RETURN_LISTENER; goto RETURN_LISTENER;
} }

View File

@ -31,7 +31,7 @@ typedef void (*EventCallback)(void *data);
EventSystem es_init(u64 initial_event_capacity, u64 initial_listeners_capacity); EventSystem es_init(u64 initial_event_capacity, u64 initial_listeners_capacity);
void es_deinit(EventSystem *event_system); void es_deinit(EventSystem *event_system);
Event es_register_event(EventSystem *event_system); Event es_register_event(EventSystem *event_system);
void es_deregister_event(EventSystem event_system, Event *event); void es_deregister_event(EventSystem *event_system, Event *event);
EventListener es_add_event_listener(EventSystem *event_system, Event event, EventCallback callback); EventListener es_add_event_listener(EventSystem event_system, Event event, EventCallback callback);
void es_remove_event_listener(EventSystem event_system, EventListener listener); void es_remove_event_listener(EventSystem event_system, EventListener listener);
void es_emit_event(EventSystem event_system, Event event, void *data); void es_emit_event(EventSystem event_system, Event event, void *data);

View File

@ -41,7 +41,7 @@ int main(void) {
for (int i = 0; i < COUNT_EVENTS; ++i) { for (int i = 0; i < COUNT_EVENTS; ++i) {
events[i] = es_register_event(&es); events[i] = es_register_event(&es);
listeners[i] = es_add_event_listener(&es, events[i], callbacks[i]); listeners[i] = es_add_event_listener(es, events[i], callbacks[i]);
} }
WindowEvent window_event = { .window_width = 1280, .window_height = 720 }; WindowEvent window_event = { .window_width = 1280, .window_height = 720 };
@ -62,14 +62,14 @@ int main(void) {
// You can also add other events not stored in an array // You can also add other events not stored in an array
Event extra_event = es_register_event(&es); Event extra_event = es_register_event(&es);
EventListener listener = es_add_event_listener(&es, extra_event, extra_event_handler); EventListener listener = es_add_event_listener(es, extra_event, extra_event_handler);
es_emit_event(es, extra_event, NULL); es_emit_event(es, extra_event, NULL);
es_remove_event_listener(es, listener); es_remove_event_listener(es, listener);
es_deregister_event(es, &extra_event); es_deregister_event(&es, &extra_event);
for (int i = 0; i < COUNT_EVENTS; ++i) { for (int i = 0; i < COUNT_EVENTS; ++i) {
es_remove_event_listener(es, listeners[i]); es_remove_event_listener(es, listeners[i]);
es_deregister_event(es, &events[i]); es_deregister_event(&es, &events[i]);
} }
es_deinit(&es); es_deinit(&es);