@@ -75,7 +75,7 @@ napi_value logging(napi_env env, napi_callback_info info) {
7575 return result;
7676}
7777
78- napi_threadsafe_function customCallback ;
78+ napi_threadsafe_function threadSafeFunction ;
7979
8080// Inspired from https://github.com/FFmpeg/FFmpeg/blob/321a3c244d0a89b2826c38611284cc403a9808fa/libavutil/log.c#L346
8181#define LINE_SZ 1024
@@ -103,7 +103,11 @@ void av_log_custom_callback(void* ptr, int level, const char* fmt, va_list vl)
103103 logCarrier* c = new logCarrier;
104104 c->msg = line;
105105 c->level = level;
106- napi_status status = napi_call_threadsafe_function (customCallback, c, napi_tsfn_blocking);
106+ napi_status status;
107+
108+ status = napi_call_threadsafe_function (threadSafeFunction, c, napi_tsfn_nonblocking);
109+
110+ return ;
107111}
108112
109113static void callJsCb (
@@ -119,15 +123,16 @@ static void callJsCb(
119123 napi_status status;
120124
121125 status = napi_create_object (env, &jsThis);
122- if (checkStatus (env, status, __FILE__, __LINE__ - 1 ) != napi_ok) return ;
126+ CHECK_STATUS_VOID;
127+
123128 napi_value jsStr;
124129 status = napi_create_string_utf8 (env, c->msg .c_str (), NAPI_AUTO_LENGTH, &jsStr);
125- if ( checkStatus (env, status, __FILE__, __LINE__ - 1 ) != napi_ok) return ;
130+ CHECK_STATUS_VOID ;
126131
127132 napi_value return_val;
128133 status = napi_call_function (env, jsThis, jsCallback, 1 , &jsStr, &return_val);
129- if ( checkStatus (env, status, __FILE__, __LINE__ - 1 ) != napi_ok) return ;
130-
134+ CHECK_STATUS_VOID ;
135+
131136 return ;
132137}
133138
@@ -141,7 +146,7 @@ napi_value setLoggingCallback(napi_env env, napi_callback_info info){
141146 CHECK_STATUS;
142147
143148 if (argc != 1 ) {
144- status = napi_throw_error (env, nullptr , " One argumentis required to set logging callback." );
149+ status = napi_throw_error (env, nullptr , " One argument required to set logging callback." );
145150 return nullptr ;
146151 }
147152 napi_value callback = args[0 ];
@@ -155,24 +160,27 @@ napi_value setLoggingCallback(napi_env env, napi_callback_info info){
155160 }
156161
157162 napi_value work_name;
158- status = napi_create_string_utf8 (env," Thread-safe Function For Libav Custom Logging" ,NAPI_AUTO_LENGTH, &work_name);
163+ status = napi_create_string_utf8 (env, " Thread-safe Function For Libav Custom Logging" , NAPI_AUTO_LENGTH, &work_name);
159164 CHECK_STATUS;
160-
165+
161166 status = napi_create_threadsafe_function (
162167 env,
163168 callback,
164169 NULL ,
165170 work_name,
166171 0 ,
167172 1 ,
168- NULL ,
169- NULL ,
170- NULL ,
173+ nullptr ,
174+ nullptr ,
175+ nullptr ,
171176 callJsCb,
172- &customCallback
177+ &threadSafeFunction
173178 );
174179 CHECK_STATUS;
175-
180+
181+ status = napi_unref_threadsafe_function (env, threadSafeFunction);
182+ CHECK_STATUS;
183+
176184 av_log_set_callback (av_log_custom_callback);
177185 return nullptr ;
178186}
0 commit comments