fix: khong panic khi spawn engine fail (UI khong thoat) + spawn.log chan doan (path + exists) + giu SF_PARENT_PID
This commit is contained in:
+26
-6
@@ -25,15 +25,35 @@ pub fn run() {
|
|||||||
} else {
|
} else {
|
||||||
engine_dir.join("daw_engine")
|
engine_dir.join("daw_engine")
|
||||||
};
|
};
|
||||||
let (_rx, child) = app
|
// Ghi log spawn de chan doan (UI khong duoc panic/thoat — chi log)
|
||||||
.shell()
|
let log_line = format!(
|
||||||
.command(engine_exe)
|
"spawn daw_engine: {} exists={}\n",
|
||||||
|
engine_exe.display(),
|
||||||
|
engine_exe.exists()
|
||||||
|
);
|
||||||
|
if let Some(mut f) = std::fs::OpenOptions::new()
|
||||||
|
.create(true)
|
||||||
|
.append(true)
|
||||||
|
.open(engine_dir.join("spawn.log"))
|
||||||
|
.ok()
|
||||||
|
{
|
||||||
|
use std::io::Write;
|
||||||
|
let _ = f.write_all(log_line.as_bytes());
|
||||||
|
}
|
||||||
|
match app.shell().command(&engine_exe)
|
||||||
.env("SF_PARENT_PID", std::process::id().to_string())
|
.env("SF_PARENT_PID", std::process::id().to_string())
|
||||||
.spawn()
|
.spawn() {
|
||||||
.expect("Failed to spawn daw_engine (onedir resource) — run build_windows.ps1 first");
|
Ok((_rx, child)) => {
|
||||||
|
|
||||||
app.manage(EngineProcess(Mutex::new(Some(child))));
|
app.manage(EngineProcess(Mutex::new(Some(child))));
|
||||||
println!("Python Background Engine started (localhost:8000, auto-fallback 8000-8010)");
|
println!("Python Background Engine started (localhost:8000, auto-fallback 8000-8010)");
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
// Khong panic: UI van mo, engine loi se hien trong UI loader
|
||||||
|
// ("Khong tim thay SonicForge Engine"). Log ro de chan doan.
|
||||||
|
println!("Failed to spawn daw_engine: {e}");
|
||||||
|
app.manage(EngineProcess(Mutex::new(None)));
|
||||||
|
}
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
.on_window_event(|window, event| {
|
.on_window_event(|window, event| {
|
||||||
|
|||||||
Reference in New Issue
Block a user