cvRunAsync0<T> function
Future<T>
cvRunAsync0<
T>( - Pointer<CvStatus> func(
- CvCallback_0 callback
),
- void onComplete(
- Completer<T> completer
)
)
Implementation
Future<T> cvRunAsync0<T>(
ffi.Pointer<cvg.CvStatus> Function(cvg.CvCallback_0 callback) func,
void Function(Completer<T> completer) onComplete,
) async {
final completer = Completer<T>();
late final ffi.NativeCallable<cvg.CvCallback_0Function> ccallback;
var closed = false;
void close() {
if (!closed) {
closed = true;
ccallback.close();
}
}
void onResponse() {
onComplete(completer);
close();
}
ccallback = ffi.NativeCallable.listener(onResponse);
try {
throwIfFailed(func(ccallback.nativeFunction));
} catch (_) {
close();
rethrow;
}
return completer.future;
}