dispose method

void dispose()

Release resources

Implementation

void dispose() async {
  if (_pp == nullptr) {
    textureId.dispose();
    return;
  }
  // await: ensure no player ref in fvp plugin before mdkPlayerAPI_delete() in dart
  await updateTexture(width: -1);
  state = PlaybackState.stopped;
  Libfvp.unregisterPort(nativeHandle);
  _eventCb.close();
  Libfvp.unregisterType(nativeHandle, 0);
  _stateCb.close();
  Libfvp.unregisterType(nativeHandle, 1);
  _statusCb.close();
  Libfvp.unregisterType(nativeHandle, 2);

  _receivePort.close();

  Libmdk.instance.mdkPlayerAPI_delete(_pp);
  calloc.free(_pp);
  _pp = nullptr;
  textureId.dispose();
}