use process on KernelLog

This commit is contained in:
Djeeberjr 2023-04-18 19:57:12 +02:00
parent 2da337b8a9
commit 8dca828cf3
2 changed files with 24 additions and 20 deletions

View File

@ -1,5 +1,7 @@
package bin;
import kernel.ps.ProcessHandle;
import kernel.ps.Process;
import lib.Color;
import lib.MathI;
import kernel.log.Log;
@ -8,24 +10,22 @@ import lib.ui.UIApp;
using tink.CoreApi;
class KernelLog extends UIApp{
class KernelLog implements Process {
private var handle: ProcessHandle;
private var ctx: WindowContext;
private var exitTrigger: Bool -> Void;
public function new() {}
public function invoke(context:WindowContext):Future<Bool> {
this.ctx = context;
public function run(handle: ProcessHandle):Void {
this.handle = handle;
var statelessCtx = handle.createStatelessWindowContext();
this.ctx = statelessCtx.ctx;
statelessCtx.setRenderFunc(this.render);
Log.instance.onLog.handle(()->{
render();
});
render();
return new Future<Bool>(cb -> {
this.exitTrigger = cb;
return null;
statelessCtx.requestRender();
});
}

View File

@ -1,5 +1,6 @@
package lib;
import kernel.ps.ProcessManager;
import bin.KernelLog;
import lib.ui.elements.UIElement;
import lib.ui.elements.TextElement;
@ -104,17 +105,20 @@ class HomeContext {
private function addLog(){
var newContext = WindowManager.instance.createNewBufferedContext();
var pid = ProcessManager.run(new KernelLog(),{
// Create new terminal
var term = new KernelLog();
term.invoke(newContext);
});
var contextID = addContextNextWorkspace(newContext);
if (contextID == -1) {
var lastContextID = -1;
for ( ctx in WindowManager.instance.getContextByPID(pid)){
lastContextID = addContextNextWorkspace(ctx);
}
if (lastContextID == -1) {
return;
}
focusContext(contextID);
focusContext(lastContextID);
}
private function render() {