1
1
#include "SDL_internal.h"
2
2
#include <EGL/egl.h>
3
3
#include <EGL/eglplatform.h>
4
+ #include <js_native_api.h>
5
+ #include <js_native_api_types.h>
6
+ #include <node_api.h>
7
+ #include <node_api_types.h>
4
8
5
9
#ifdef SDL_PLATFORM_OHOS
6
10
@@ -17,6 +21,36 @@ static OH_NativeXComponent_Callback callback;
17
21
static OH_NativeXComponent_MouseEvent_Callback mouseCallback ;
18
22
SDL_WindowData windowData ;
19
23
SDL_VideoData videoData ;
24
+ struct
25
+ {
26
+ napi_env env ;
27
+ napi_threadsafe_function func ;
28
+ napi_ref interface ;
29
+ } napiEnv ;
30
+
31
+ typedef union
32
+ {
33
+ int i ;
34
+ short s ;
35
+ char c ;
36
+ long long l ;
37
+ float f ;
38
+ double d ;
39
+ const char * str ;
40
+ bool b ;
41
+ } napiCallbackArg ;
42
+ typedef struct
43
+ {
44
+ const char * func ;
45
+ napiCallbackArg arg1 ;
46
+ napiCallbackArg arg2 ;
47
+ napiCallbackArg arg3 ;
48
+ napiCallbackArg arg4 ;
49
+ napiCallbackArg arg5 ;
50
+ napiCallbackArg arg6 ;
51
+ napiCallbackArg arg7 ;
52
+ napiCallbackArg arg8 ;
53
+ } napiCallbackData ;
20
54
21
55
static napi_value minus (napi_env env , napi_callback_info info )
22
56
{
@@ -43,6 +77,30 @@ static napi_value minus(napi_env env, napi_callback_info info)
43
77
return sum ;
44
78
}
45
79
80
+ static void sdlJSCallback (napi_env env , napi_value jsCb , void * content , void * data )
81
+ {
82
+
83
+ }
84
+
85
+ static napi_value sdlCallbackInit (napi_env env , napi_callback_info info )
86
+ {
87
+ napiEnv .env = env ;
88
+ size_t argc = 1 ;
89
+ napi_value args [1 ] = { NULL };
90
+
91
+ napi_get_cb_info (env , info , & argc , args , NULL , NULL );
92
+
93
+ napi_create_reference (env , args [0 ], 1 , & napiEnv .interface );
94
+
95
+ napi_value resName = NULL ;
96
+ napi_create_string_utf8 (env , "SDLThreadSafe" , NAPI_AUTO_LENGTH , & resName );
97
+ napi_create_threadsafe_function (env , args [0 ], NULL , resName , 0 , 1 , NULL , NULL , NULL , sdlJSCallback , & napiEnv .func );
98
+
99
+ napi_value result ;
100
+ napi_create_int32 (env , 0 , & result );
101
+ return result ;
102
+ }
103
+
46
104
static void OnSurfaceCreatedCB (OH_NativeXComponent * component , void * window )
47
105
{
48
106
nativeWindow = (OHNativeWindow * )window ;
@@ -136,7 +194,8 @@ void OnBlurEvent(OH_NativeXComponent *component, void *window) {}
136
194
static napi_value SDL_OHOS_NAPI_Init (napi_env env , napi_value exports )
137
195
{
138
196
napi_property_descriptor desc [] = {
139
- { "minus" , NULL , minus , NULL , NULL , NULL , napi_default , NULL }
197
+ { "minus" , NULL , minus , NULL , NULL , NULL , napi_default , NULL },
198
+ { "sdlCallbackInit" , NULL , sdlCallbackInit , NULL , NULL , NULL , napi_default , NULL }
140
199
};
141
200
napi_define_properties (env , exports , sizeof (desc ) / sizeof (desc [0 ]), desc );
142
201
0 commit comments