From 32576120fd4c7cb164a546c813cbb014c0b8da54 Mon Sep 17 00:00:00 2001 From: sftse Date: Thu, 29 Jan 2026 04:13:03 +0100 Subject: [PATCH] Fix busy loop (#14839) * refactor(tauri-cli): remove unneeded Arc * fix(tauri-cli): remove busy-looping --- crates/tauri-cli/src/interface/mod.rs | 1 - crates/tauri-cli/src/interface/rust.rs | 15 ++++----------- crates/tauri-cli/src/interface/rust/desktop.rs | 4 ---- crates/tauri-cli/src/mobile/mod.rs | 4 ---- 4 files changed, 4 insertions(+), 20 deletions(-) diff --git a/crates/tauri-cli/src/interface/mod.rs b/crates/tauri-cli/src/interface/mod.rs index f10bef030..683d29eba 100644 --- a/crates/tauri-cli/src/interface/mod.rs +++ b/crates/tauri-cli/src/interface/mod.rs @@ -16,7 +16,6 @@ pub use rust::{MobileOptions, Options, Rust as AppInterface, WatcherOptions}; pub trait DevProcess { fn kill(&self) -> std::io::Result<()>; - fn try_wait(&self) -> std::io::Result>; #[allow(unused)] fn wait(&self) -> std::io::Result; #[allow(unused)] diff --git a/crates/tauri-cli/src/interface/rust.rs b/crates/tauri-cli/src/interface/rust.rs index 2f0b635b1..c4c339e69 100644 --- a/crates/tauri-cli/src/interface/rust.rs +++ b/crates/tauri-cli/src/interface/rust.rs @@ -514,9 +514,7 @@ impl Rust { run: F, dirs: &Dirs, ) -> crate::Result<()> { - let child = run(self, config)?; - - let process = Arc::new(Mutex::new(child)); + let mut child = run(self, config)?; let (tx, rx) = sync_channel(1); let watch_folders = get_watch_folders(additional_watch_folders, dirs.tauri)?; @@ -581,17 +579,12 @@ impl Rust { display_path(event_path.strip_prefix(dirs.frontend).unwrap_or(event_path)) ); - let mut p = process.lock().unwrap(); - p.kill().context("failed to kill app process")?; + child.kill().context("failed to kill app process")?; // wait for the process to exit // note that on mobile, kill() already waits for the process to exit (duct implementation) - loop { - if !matches!(p.try_wait(), Ok(None)) { - break; - } - } - *p = run(self, config)?; + let _ = child.wait(); + child = run(self, config)?; } } } diff --git a/crates/tauri-cli/src/interface/rust/desktop.rs b/crates/tauri-cli/src/interface/rust/desktop.rs index adddfa60f..ddde0a4f0 100644 --- a/crates/tauri-cli/src/interface/rust/desktop.rs +++ b/crates/tauri-cli/src/interface/rust/desktop.rs @@ -33,10 +33,6 @@ impl DevProcess for DevChild { Ok(()) } - fn try_wait(&self) -> std::io::Result> { - self.dev_child.try_wait() - } - fn wait(&self) -> std::io::Result { self.dev_child.wait() } diff --git a/crates/tauri-cli/src/mobile/mod.rs b/crates/tauri-cli/src/mobile/mod.rs index 248b16dbe..f7ab30357 100644 --- a/crates/tauri-cli/src/mobile/mod.rs +++ b/crates/tauri-cli/src/mobile/mod.rs @@ -72,10 +72,6 @@ impl DevProcess for DevChild { Ok(()) } - fn try_wait(&self) -> std::io::Result> { - self.child.try_wait().map(|res| res.map(|o| o.status)) - } - fn wait(&self) -> std::io::Result { self.child.wait().map(|o| o.status) }