diff --git a/src/ui/app.rs b/src/ui/app.rs index bdd2a81..8d1260a 100644 --- a/src/ui/app.rs +++ b/src/ui/app.rs @@ -309,6 +309,17 @@ impl SimpleComponent for App { self.main_view .sender() .emit(MainViewMsg::XRServiceActiveChanged(false, None)); + if let Some(worker) = self.xrservice_worker.as_ref() { + if let Some(code) = worker.exit_code() { + if code != 0 && code != 15 { // 15 is SIGTERM + sender.input(Msg::OnServiceLog(vec![format!( + "{} exited with code {}", + self.get_selected_profile().xrservice_type, + code + )])); + } + } + } self.xrservice_worker = None; if self.restart_xrservice { self.restart_xrservice = false; diff --git a/src/ui/job_worker/mod.rs b/src/ui/job_worker/mod.rs index b1a6e8c..7ff802c 100644 --- a/src/ui/job_worker/mod.rs +++ b/src/ui/job_worker/mod.rs @@ -79,4 +79,12 @@ impl JobWorker { } } } + + pub fn exit_code(&self) -> Option { + if let Ok(state) = self.state.lock() { + return state.exit_status; + } + + None + } }