destroy method

  1. @override
Future<void> destroy()

Destroys the inlet and cleans up resources. You can no longer use the inlet after calling this method.

Implementation

@override
Future<void> destroy() async {
  if (destroyed) {
    return; // Already destroyed
  }
  super.destroy();
  // Clean up resources
  if (_useIsolates) {
    await _isolateManagerBang.sendMessage(
      LSLMessage(LSLMessageType.destroy, {}),
    );
    _isolateManagerBang.dispose();
  } else if (_inlet != null) {
    try {
      lsl_close_stream(_inletBang);
    } catch (e) {
      // Ignore errors during close, as the inlet may already be closed
    }
    try {
      lsl_destroy_inlet(_inletBang);
    } catch (e) {
      // Ignore errors during destroy, as the inlet may already be destroyed
    }
  }
  _inlet = null;
  _isolateManager = null;
  _buffer.free();
}