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