cvRunAsync2<T> function

Future<T> cvRunAsync2<T>(
  1. Pointer<CvStatus> func(
    1. CvCallback_2 callback
    ),
  2. void onComplete(
    1. Completer<T> completer,
    2. VoidPtr p,
    3. VoidPtr p1
    )
)

Implementation

Future<T> cvRunAsync2<T>(
  ffi.Pointer<cvg.CvStatus> Function(cvg.CvCallback_2 callback) func,
  void Function(Completer<T> completer, VoidPtr p, VoidPtr p1) onComplete,
) {
  final completer = Completer<T>();
  late final ffi.NativeCallable<cvg.CvCallback_2Function> ccallback;
  void onResponse(VoidPtr p, VoidPtr p1) {
    onComplete(completer, p, p1);
    ccallback.close();
  }

  ccallback = ffi.NativeCallable.listener(onResponse);
  throwIfFailed(func(ccallback.nativeFunction));
  return completer.future;
}