runVmapWorker function
void
runVmapWorker()
Builds tiles, or draws label glyphs, for the page that started this worker, as the first message it is sent asks.
Implementation
void runVmapWorker() {
final scope = globalContext as web.DedicatedWorkerGlobalScope;
StreamController<Object?>? inbox;
scope.onmessage = ((web.MessageEvent event) {
final message = decodeMessage(event.data);
final open = inbox;
if (open != null) return open.add(message);
final box = inbox = StreamController<Object?>();
scope.postMessage(null);
final init = message! as List<Object?>;
final main = init.isNotEmpty && init[0] == GlyphRasterWorker.glyphWorkerTag
? glyphWorkerMain
: tileWorkerMain;
unawaited(
main(init, (answer) {
final moved = <JSObject>[];
scope.postMessage(encodeMessage(answer, moved), moved.toJS);
}, box.stream),
);
}).toJS;
}