diff --git a/src/kiri-run/engine.js b/src/kiri-run/engine.js index 95ea3c94..ff395742 100644 --- a/src/kiri-run/engine.js +++ b/src/kiri-run/engine.js @@ -83,6 +83,17 @@ class Engine { return this; } + setController(controller) { + let ctrl = this.settings.controller; + Object.assign(ctrl, controller); + if (ctrl.threaded) { + kiri.client.pool.start(); + } else { + kiri.client.pool.stop(); + } + return this; + } + setTools(tools) { this.settings.tools = tools; return this; diff --git a/src/kiri-run/frame.js b/src/kiri-run/frame.js index ed629ecb..02d06e62 100644 --- a/src/kiri-run/frame.js +++ b/src/kiri-run/frame.js @@ -63,6 +63,8 @@ setFeatures: (features) => { send({ features })}, + setController: (controller) => { send({ controller })}, + slice: () => { send({ function: "slice", callback: true }) }, prepare: () => { send({ function: "prepare", callback: true }) }, diff --git a/src/kiri/frame.js b/src/kiri/frame.js index ec8b1198..b09d3081 100644 --- a/src/kiri/frame.js +++ b/src/kiri/frame.js @@ -57,18 +57,25 @@ window.addEventListener('message', msg => { } - if (data.set) switch (data.set) { - case "features": - Object.assign(feature, data.features); - break; - case "device": - Object.assign(settings.dev(), data.options); - conf.save(); - break; - case "process": - Object.assign(settings.proc(), data.options); - conf.save(); - break; + if (data.features) { + Object.assign(feature, data.features); + } + + if (data.device) { + Object.assign(settings.dev(), data.device); + conf.save(); + } + + if (data.process){ + Object.assign(settings.proc(), data.process); + conf.save(); + } + + if (data.controller){ + let ctrl = settings.ctrl(); + Object.assign(ctrl, data.controller); + api.event.emit("set.threaded", ctrl.threaded); + conf.save(); } if (data.parse) { diff --git a/src/kiri/init.js b/src/kiri/init.js index d773ec75..6bff1c65 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -165,6 +165,8 @@ gapp.register("kiri.init", [], (root, exports) => { return bool; } + api.event.on("set.threaded", bool => setThreaded(bool)); + function booleanSave() { let control = settings().controller; let isDark = control.dark; diff --git a/src/kiri/settings.js b/src/kiri/settings.js index d590baf7..f37ddaa4 100644 --- a/src/kiri/settings.js +++ b/src/kiri/settings.js @@ -684,6 +684,18 @@ function settingsPrusaConvert(data) { }); } +function setThreaded(bool) { + bool = bool ? true : false; + settings.controller.threaded = bool; + api.event.emit("set.threaded", bool); +} + +function setEnableWASM(bool) { + bool = bool ? true : false; + settings.controller.assembly = bool; + api.event.emit("set.assembly", bool); +} + api.conf = { dbo: () => { return ls2o('ws-settings') }, get: getSettings, @@ -695,6 +707,8 @@ api.conf = { update_from: updateSettingsFromFields, update_fields: updateFieldsFromSettings, update_fields_from_range: updateFieldsFromRange, + set_enable_wasm: setEnableWASM, + set_threaded: setThreaded, restore: restoreSettings, export: settingsExport, import: settingsImport,