replaceWriteLogMessageEx function
Implementation
void replaceWriteLogMessageEx({LogCallbackExFunction? callback}) {
if (callback == null) {
cvRun(() => ccore.replaceWriteLogMessageEx(ffi.nullptr));
_logCallbackEx?.close();
_logCallbackEx = null;
} else {
void cCallback(
int logLevel,
ffi.Pointer<ffi.Char> tag,
int tagLen,
ffi.Pointer<ffi.Char> file,
int fileLen,
int line,
ffi.Pointer<ffi.Char> func,
int funcLen,
ffi.Pointer<ffi.Char> message,
int msgLen,
) {
final tagStr = tag.cast<Utf8>().toDartString(length: tagLen);
final fileStr = file.cast<Utf8>().toDartString(length: fileLen);
final funcStr = func.cast<Utf8>().toDartString(length: funcLen);
final messageStr = message.cast<Utf8>().toDartString(length: msgLen);
callback(LogLevel.fromValue(logLevel), tagStr, fileStr, line, funcStr, messageStr);
}
final fp = ffi.NativeCallable<cvg.LogCallbackExFunction>.listener(cCallback);
cvRun(() => ccore.replaceWriteLogMessageEx(fp.nativeFunction));
_logCallbackEx = fp;
}
}