diff --git a/platform/viewer/src/utils/initWebWorkers.js b/platform/viewer/src/utils/initWebWorkers.js index 6e8fb9107..8bbfa28d9 100644 --- a/platform/viewer/src/utils/initWebWorkers.js +++ b/platform/viewer/src/utils/initWebWorkers.js @@ -1,6 +1,8 @@ import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'; -export default function initWebWorkers() { +let initialized = false; + +export default function initWebWorkers() { const config = { maxWebWorkers: Math.max(navigator.hardwareConcurrency - 1, 1), startWebWorkersOnDemand: true, @@ -13,5 +15,8 @@ export default function initWebWorkers() { }, }; - cornerstoneWADOImageLoader.webWorkerManager.initialize(config); + if (!initialized) { + cornerstoneWADOImageLoader.webWorkerManager.initialize(config); + initialized = true; + } } diff --git a/platform/viewer/src/utils/initWebWorkers.test.js b/platform/viewer/src/utils/initWebWorkers.test.js index ae6743eaf..cbd554a79 100644 --- a/platform/viewer/src/utils/initWebWorkers.test.js +++ b/platform/viewer/src/utils/initWebWorkers.test.js @@ -10,3 +10,14 @@ describe('initWebWorkers', () => { ).toHaveBeenCalled(); }); }); + +describe('initWebWorkers', () => { + it("initializes cornerstoneWADOImageLoader's web workers only once", () => { + initWebWorkers(); + initWebWorkers(); + + expect( + cornerstoneWADOImageLoader.webWorkerManager.initialize + ).toHaveBeenCalledTimes(1); + }); +});