cvRunAsync3<T> function

Future<T> cvRunAsync3<T>(
  1. Pointer<CvStatus> func(
    1. CvCallback_3 callback
    ),
  2. void onComplete(
    1. Completer<T> completer,
    2. VoidPtr p,
    3. VoidPtr p1,
    4. VoidPtr p2,
    )
)

Implementation

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

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