Skip to content

Commit 85b40d2

Browse files
committed
1 parent 96ac601 commit 85b40d2

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

src/log.cc

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

109113
static 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
}

src/log.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#include <stdio.h>
77
#include <unordered_map>
88

9+
#define CHECK_STATUS_VOID if (checkStatus(env, status, __FILE__, __LINE__ - 1) != napi_ok) return
10+
911
extern const beamEnum* beam_logging_level;
1012
napi_value logging(napi_env env, napi_callback_info info);
1113
napi_value setLoggingCallback(napi_env env, napi_callback_info info);

0 commit comments

Comments
 (0)