destroy method

  1. @override
Future<void> destroy()

Destroys the outlet and cleans up resources. You can no longer use the outlet 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 (_outlet != null) {
    try {
      lsl_destroy_outlet(_outletBang);
    } catch (e) {
      // Ignore errors during destroy, as the outlet may already be destroyed
    }
  }
  _outlet = null;
  _isolateManager = null;
  if (!_buffer.isNullPointer) {
    _buffer.free();
  }
}