From 935577c33943ba9e4c2e5ed1548cc505946fc046 Mon Sep 17 00:00:00 2001 From: Fam Zheng Date: Thu, 14 Aug 2025 22:42:51 +0100 Subject: [PATCH] scanner: Fix worker creation order against camera listener setup --- scanner/app.js | 11 ++++++++--- scanner/pages/camera/camera.js | 6 +++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/scanner/app.js b/scanner/app.js index 515edd7..498db67 100644 --- a/scanner/app.js +++ b/scanner/app.js @@ -19,9 +19,14 @@ App({ this.get_real_ip(); // On iOS, the js runtime is reported to be too slow for wasm, use experimental JIT worker. // https://developers.weixin.qq.com/community/develop/doc/000cac2319cbd8ecdc7f062eb53400 - this.globalData.worker = wx.createWorker('worker/index.js', { - useExperimentalWorker: true, - }); + this.globalData.get_worker = () => { + if (!this.globalData.worker) { + this.globalData.worker = wx.createWorker('worker/index.js', { + useExperimentalWorker: true, + }); + } + return this.globalData.worker; + } }, onShow(options) { if (options.referrerInfo && options.referrerInfo.extraData && options.referrerInfo.extraData.caller_info) { diff --git a/scanner/pages/camera/camera.js b/scanner/pages/camera/camera.js index 441d2aa..f6a1742 100644 --- a/scanner/pages/camera/camera.js +++ b/scanner/pages/camera/camera.js @@ -109,7 +109,7 @@ Page({ this.log("phone model: " + phone_model); getApp().globalData.phone_model = phone_model; this.log("window width", si.windowWidth, "height", si.windowHeight); - const use_worker = false; //phone_model.toLowerCase().includes("iphone"); + const use_worker = phone_model.toLowerCase().includes("iphone"); this.setData({ enable_debug, phone_model, @@ -118,7 +118,7 @@ Page({ use_worker, }); if (use_worker) { - this.worker = getApp().globalData.worker; + this.worker = getApp().globalData.get_worker(); this.worker.onMessage((msg) => { if (msg.type == "result") { var res = msg.res; @@ -366,7 +366,7 @@ Page({ const listener = ctx.onCameraFrame((res) => { this.handle_frame(res) }); this.listener = listener; } - const worker = getApp().globalData.worker; + const worker = getApp().globalData.get_worker(); this.listener.start({ worker, });