Skip to content

Commit 969e0bb

Browse files
committed
Python Callback Utils
1 parent a1ee486 commit 969e0bb

1 file changed

Lines changed: 15 additions & 19 deletions

File tree

Applications/Python/PikaPython/pikascript-lib/MatrixOS/PikaCallbackUtils.h

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,30 @@
22

33
#include "PikaObj.h"
44

5-
inline PikaEventListener* g_pika_user_listener = nullptr;
6-
inline uint32_t callbackRegistered = 0;
7-
8-
uint32_t RegisterCallback(Arg* cb)
5+
inline bool SaveCallbackObjToPikaObj(PikaObj *self, char* name, Arg* callback)
96
{
10-
if(NULL == cb)
11-
{
12-
return UINT32_MAX;
7+
// Check if callback already registed
8+
Arg* existing_callback = obj_getArg(self, name);
9+
if (existing_callback) {
10+
arg_deinit(existing_callback);
1311
}
1412

15-
if (NULL == g_pika_user_listener){
16-
pika_eventListener_init(&g_pika_user_listener);
13+
// Save callback
14+
if(obj_setArg(self, name, callback) != PIKA_RES_OK)
15+
{
16+
return true;
1717
}
1818

19-
uint32_t eventId = callbackRegistered;
20-
callbackRegistered++;
21-
22-
pika_eventListener_registEventCallback(g_pika_user_listener, eventId, cb);
23-
24-
return eventId;
19+
return false;
2520
}
2621

27-
Arg* EventCallback(uint32_t eventId, int eventSignal = 0)
22+
inline Arg* CallCallbackInPikaObj0(PikaObj *self, char* name)
2823
{
29-
if(eventId == UINT32_MAX)
30-
{
24+
Arg* callback = obj_getArg(self, name);
25+
if (!callback) {
3126
return nullptr;
3227
}
3328

34-
return pks_eventListener_sendSignalAwaitResult(g_pika_user_listener, eventId, eventSignal);
29+
Arg* callback_copy = arg_copy(callback);
30+
return obj_runMethodArg0(self, callback_copy);
3531
}

0 commit comments

Comments
 (0)