Resolved issue where WASM was not available in production build

This commit is contained in:
Igor Zinken
2023-03-19 12:42:56 +01:00
parent b943b115f3
commit 3d1fd3dab7
5 changed files with 5 additions and 4 deletions

View File

@@ -8,7 +8,7 @@
"server": "vite preview",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore --fix src",
"test": "vitest --environment jsdom --no-watch",
"wasm": "emcc -O3 src/wasm/filters.cpp -s ENVIRONMENT=worker -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s EXPORTED_FUNCTIONS=\"['_malloc', '_free', '_filter']\" -o public/lib/filters.js"
"wasm": "emcc -O3 src/wasm/filters.cpp -s ENVIRONMENT=worker -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s EXPORTED_FUNCTIONS=\"['_malloc', '_free', '_filter']\" -o src/wasm/bin/filters.js"
},
"dependencies": {
"@simonwep/pickr": "^1.8.0",

View File

@@ -31,6 +31,7 @@ import { getLayerCache, setLayerCache } from "@/rendering/cache/bitmap-cache";
import { renderMultiLineText } from "@/rendering/text";
import { loadGoogleFont } from "@/services/font-service";
import FilterWorker from "@/workers/filter.worker.js?worker";
import wasmUrl from "@/wasm/bin/filters.wasm?url";
const jobQueue = [];
let UID = 0;
@@ -46,7 +47,7 @@ export const setWasmFilters = enabled => {
if ( enabled && !wasmWorker ) {
wasmWorker = new FilterWorker();
wasmWorker.onmessage = handleWorkerMessage;
wasmWorker.postMessage({ cmd: "initWasm" });
wasmWorker.postMessage({ cmd: "initWasm", wasmUrl });
}
};

View File

@@ -20,7 +20,7 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import wasmJs from "@/../public/lib/filters.js";
import wasmJs from "@/wasm/bin/filters.js";
import FiltersFactory from "@/factories/filters-factory";
import { imageDataAsFloat } from "@/utils/wasm-util";
@@ -42,7 +42,7 @@ self.addEventListener( "message", async ({ data }) => {
// as it will load the WASM binary
case "initWasm":
const wasm = await fetch( "/lib/filters.wasm" );
const wasm = await fetch( data.wasmUrl );
const bytes = await wasm.arrayBuffer();
wasmInstance = await wasmJs({
wasmBinary: bytes