getFrameAsync method

Future<BitmapFrame?> getFrameAsync(
  1. int frameIndex
)

Implementation

Future<BitmapFrame?> getFrameAsync(int frameIndex) {
  final asyncInfo = calloc<COMObject>();

  final hr =
      ptr.ref.vtable
              .elementAt(10)
              .cast<
                  Pointer<
                      NativeFunction<
                          HRESULT Function(
                              VTablePointer lpVtbl,
                              Uint32 frameIndex,
                              Pointer<COMObject> asyncInfo)>>>()
              .value
              .asFunction<
                  int Function(VTablePointer lpVtbl, int frameIndex,
                      Pointer<COMObject> asyncInfo)>()(
          ptr.ref.lpVtbl, frameIndex, asyncInfo);

  if (FAILED(hr)) {
    free(asyncInfo);
    throwWindowsException(hr);
  }

  final asyncOperation = IAsyncOperation<BitmapFrame?>.fromPtr(asyncInfo,
      creator: BitmapFrame.fromPtr);
  return asyncOperation.toFuture(asyncOperation.getResults);
}