UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

149 lines (134 loc) 5.22 kB
// Class: lime._internal.backend.html5.HTML5Thread var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../../../hxClasses_stub").default; var $hxEnums = require("./../../../../hxEnums_stub").default; var $import = require("./../../../../import_stub").default; var $bind = require("./../../../../bind_stub").default; function lime__$internal_backend_html5__$HTML5Thread_Message_$Impl_$() {return require("./../../../../lime/_internal/backend/html5/_HTML5Thread/Message_Impl_");} function haxe_CallStack() {return require("./../../../../haxe/CallStack");} function js__$Boot_HaxeError() {return require("./../../../../js/_Boot/HaxeError");} function haxe_ds_List() {return require("./../../../../haxe/ds/List");} function HxOverrides() {return require("./../../../../HxOverrides");} function lime_app_Application() {return require("./../../../../lime/app/Application");} function lime__$internal_backend_html5__$HTML5Thread_WorkFunction_$Impl_$() {return require("./../../../../lime/_internal/backend/html5/_HTML5Thread/WorkFunction_Impl_");} function lime_app__$Event_$Dynamic_$Void() {return require("./../../../../lime/app/_Event_Dynamic_Void");} // Constructor var HTML5Thread = function(href,worker) { this.__href = href; if(worker != null) { this.__worker = worker; this.__worker.onmessage = $bind(this,this.dispatchMessage); this.onMessage = new (lime_app__$Event_$Dynamic_$Void().default)(); } (lime__$internal_backend_html5__$HTML5Thread_Message_$Impl_$().default).disablePreserveClasses(this); } // Meta HTML5Thread.__name__ = "lime._internal.backend.html5.HTML5Thread"; HTML5Thread.__isInterface__ = false; HTML5Thread.prototype = { sendMessage: function(message,transferList,preserveClasses) { if(preserveClasses == null) { preserveClasses = true; } if(this.__worker != null) { if(preserveClasses) { (lime__$internal_backend_html5__$HTML5Thread_Message_$Impl_$().default).preserveClasses(message); } this.__worker.postMessage(message,transferList); } else { HTML5Thread.__messages.add(message); } }, dispatchMessage: function(event) { var message = event.data; (lime__$internal_backend_html5__$HTML5Thread_Message_$Impl_$().default).restoreClasses(message); if(this.onMessage != null) { this.onMessage.dispatch(message); } if(HTML5Thread.__resolveMethods.isEmpty()) { HTML5Thread.__messages.add(message); } else { (HTML5Thread.__resolveMethods.pop())(message); } }, destroy: function() { if(this.__worker != null) { this.__worker.terminate(); } else if(HTML5Thread.__isWorker) { try { $global.close(); } catch( e ) { (haxe_CallStack().default).lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; } } }, isWorker: function() { if(this.__worker == null) { return HTML5Thread.__isWorker; } else { return true; } } }; HTML5Thread.prototype.__class__ = HTML5Thread.prototype.constructor = $hxClasses["lime._internal.backend.html5.HTML5Thread"] = HTML5Thread; // Init if(typeof window == "undefined") { $global.onmessage = function(event) { var job = event.data; try { $global.onmessage = ($_=HTML5Thread.__current,$bind($_,$_.dispatchMessage)); ((lime__$internal_backend_html5__$HTML5Thread_WorkFunction_$Impl_$().default).toFunction(job))(); } catch( e ) { (haxe_CallStack().default).lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; HTML5Thread.__current.destroy(); } }; }; // Statics HTML5Thread.current = function() { return HTML5Thread.__current; } HTML5Thread.create = function(job) { var url = new URL(HTML5Thread.__current.__href); url.pathname = (HxOverrides().default).substr(url.pathname,0,url.pathname.lastIndexOf("/") + 1) + (lime_app_Application().default).current.meta.get("file") + ".js"; if(url.hash.length > 0) { url.hash += "_"; } url.hash += HTML5Thread.__workerCount; HTML5Thread.__workerCount++; (lime__$internal_backend_html5__$HTML5Thread_WorkFunction_$Impl_$().default).makePortable(job); var thread = new HTML5Thread(url.href,new Worker(url.href)); thread.sendMessage(job); return thread; } HTML5Thread.zeroDelay = function() { return new Promise(function(resolve,_) { $global.setTimeout(resolve); }); } HTML5Thread.returnMessage = function(message,transferList,preserveClasses) { if(preserveClasses == null) { preserveClasses = true; } if(HTML5Thread.__isWorker) { if(preserveClasses) { (lime__$internal_backend_html5__$HTML5Thread_Message_$Impl_$().default).preserveClasses(message); } $global.postMessage(message,transferList); } } HTML5Thread.equals = function(a,b) { return a.__href == b.__href; } HTML5Thread.__current = new HTML5Thread($global.location.href) HTML5Thread.__isWorker = typeof window == "undefined" HTML5Thread.__messages = new (haxe_ds_List().default)() HTML5Thread.__resolveMethods = new (haxe_ds_List().default)() HTML5Thread.__workerCount = 0 // Export exports.default = HTML5Thread;