startInIsolateFromRom static method
Implementation
static Future<Chip8IsolatePortAndStreams> startInIsolateFromRom(Uint8List rom) async {
final mainThreadReceivePort = ReceivePort();
final completer = Completer<Chip8IsolatePortAndStreams>();
await Isolate.spawn<SendPort>(_isolateEntrypointFromRom(rom), mainThreadReceivePort.sendPort);
var bStream = mainThreadReceivePort.asBroadcastStream();
bStream.listen((event) {
if (event is SendPort) {
completer.complete(Chip8IsolatePortAndStreams(
event,
bStream.where((event) => event is Chip8Display).cast<Chip8Display>(),
bStream.where((event) => event is Chip8SoundEvent).cast<Chip8SoundEvent>(),
));
}
if (event is String && event == "terminate") mainThreadReceivePort.close();
});
return completer.future;
}