forked from external-repos/squoosh
- Refactor to work around Chromium's issue with postMessage queuing. https://bugs.chromium.org/p/chromium/issues/detail?id=1075645 - Convert codec code to TypeScript. - Make separate parallel and non-parallel builds. - Switch to nightly Rust for OxiPNG to allow parallel builds (but also reuse it for regular builds to avoid installing two toolchains).
21 lines
538 B
TypeScript
21 lines
538 B
TypeScript
/// <reference lib="webworker" />
|
|
|
|
import initOxiPNG, { start_worker_thread } from './pkg-parallel';
|
|
|
|
export type WorkerInit = [WebAssembly.Module, WebAssembly.Memory];
|
|
|
|
addEventListener(
|
|
'message',
|
|
async (event) => {
|
|
// Tell the "main" thread that we've received the message.
|
|
//
|
|
// At this point, the "main" thread can run Wasm that
|
|
// will synchronously block waiting on other atomics.
|
|
postMessage(null);
|
|
|
|
await initOxiPNG(...(event.data as WorkerInit));
|
|
start_worker_thread();
|
|
},
|
|
{ once: true },
|
|
);
|