package.src.util.global_worker_pool.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mapbox-gl Show documentation
Show all versions of mapbox-gl Show documentation
A WebGL interactive maps library
The newest version!
// @flow
import WorkerPool, {PRELOAD_POOL_ID} from './worker_pool';
let globalWorkerPool;
/**
* Creates (if necessary) and returns the single, global WorkerPool instance
* to be shared across each Map
* @private
*/
export default function getGlobalWorkerPool () {
if (!globalWorkerPool) {
globalWorkerPool = new WorkerPool();
}
return globalWorkerPool;
}
export function prewarm() {
const workerPool = getGlobalWorkerPool();
workerPool.acquire(PRELOAD_POOL_ID);
}
export function clearPrewarmedResources() {
const pool = globalWorkerPool;
if (pool) {
// Remove the pool only if all maps that referenced the preloaded global worker pool have been removed.
if (pool.isPreloaded() && pool.numActive() === 1) {
pool.release(PRELOAD_POOL_ID);
globalWorkerPool = null;
} else {
console.warn('Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()');
}
}
}