From 22fbffca7684f5c1a9181a7787bd3b164b1b9e4d Mon Sep 17 00:00:00 2001 From: Joseph Cloutier Date: Tue, 29 Mar 2022 13:49:03 -0400 Subject: [PATCH] Use an integer map key. --- src/lime/app/Future.hx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/lime/app/Future.hx b/src/lime/app/Future.hx index c4ebaa176..fb861679a 100644 --- a/src/lime/app/Future.hx +++ b/src/lime/app/Future.hx @@ -354,7 +354,7 @@ import lime.utils.Log; #if lime_threads private static var multiThreadPool:ThreadPool; // It isn't safe to pass a promise object to a web worker. - private static var promises:Map<{}, Promise> = new Map(); + private static var promises:Map> = new Map(); #end public static var minThreads(default, set):Int = 0; public static var maxThreads(default, set):Int = 1; @@ -392,12 +392,18 @@ import lime.utils.Log; work.makePortable(); #end - promises[bundle] = promise; bundle.promise = null; } #end - getPool(mode).run(threadPool_doWork, bundle); + var jobID:Int = getPool(mode).run(threadPool_doWork, bundle); + + #if lime_threads + if (mode == MULTI_THREADED) + { + promises[jobID] = (cast promise:Promise); + } + #end } // Event Handlers @@ -436,15 +442,15 @@ import lime.utils.Log; #if lime_threads private static function multiThreadPool_onComplete(result:Dynamic):Void { - var promise:Promise = promises[multiThreadPool.activeJob.state]; - promises.remove(multiThreadPool.activeJob.state); + var promise:Promise = promises[multiThreadPool.activeJob.id]; + promises.remove(multiThreadPool.activeJob.id); promise.complete(result); } private static function multiThreadPool_onError(error:Dynamic):Void { - var promise:Promise = promises[multiThreadPool.activeJob.state]; - promises.remove(multiThreadPool.activeJob.state); + var promise:Promise = promises[multiThreadPool.activeJob.id]; + promises.remove(multiThreadPool.activeJob.id); promise.error(error); } #end