Skip to content

Commit f473f79

Browse files
committed
Fixed listener unregister
1 parent be55a0c commit f473f79

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

mod-src/src/demo.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
#include "game/print.h"
77
#include <stdio.h>
88

9+
ListenerID gFrameUpdateListenerID;
10+
ListenerID gRenderGamePostListenerID;
11+
912
void OnFrameUpdate(IEvent* event) {
1013
gMarioState->numCoins = 99;
1114
}
@@ -15,6 +18,11 @@ void OnGameRenderHud(IEvent* event) {
1518
}
1619

1720
MOD_INIT() {
18-
REGISTER_LISTENER(GameFrameUpdate, EVENT_PRIORITY_NORMAL, OnFrameUpdate);
19-
REGISTER_LISTENER(RenderGamePost, EVENT_PRIORITY_NORMAL, OnGameRenderHud);
21+
gFrameUpdateListenerID = REGISTER_LISTENER(GameFrameUpdate, EVENT_PRIORITY_NORMAL, OnFrameUpdate);
22+
gRenderGamePostListenerID = REGISTER_LISTENER(RenderGamePost, EVENT_PRIORITY_NORMAL, OnGameRenderHud);
23+
}
24+
25+
MOD_EXIT() {
26+
UNREGISTER_LISTENER(GameFrameUpdate, gFrameUpdateListenerID);
27+
UNREGISTER_LISTENER(RenderGamePost, gRenderGamePostListenerID);
2028
}

src/port/hooks/impl/EventSystem.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ typedef struct EventListener {
8787
#define REGISTER_LISTENER(eventType, priority, callback) \
8888
EventSystem_RegisterListener(eventType##ID, callback, priority, __FILE__, __LINE__);
8989

90+
#define UNREGISTER_LISTENER(eventType, listenerID) \
91+
EventSystem_UnregisterListener(eventType##ID, listenerID);
92+
9093
#ifdef __cplusplus
9194
#include <vector>
9295
#include <unordered_map>

0 commit comments

Comments
 (0)