Salud: el reinicio no se anota dos veces; en macOS la bandeja no se queda en «midiendo»

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Este commit está contenido en:
Munka
2026-10-14 08:33:16 -05:00
padre d7bf8c6740
commit 72553d5fa7

Ver fichero

@@ -125,6 +125,9 @@ pub fn carpeta() -> Option<PathBuf> {
/// Texto para la bandeja y el menú ⋮. /// Texto para la bandeja y el menú ⋮.
pub fn resumen() -> String { pub fn resumen() -> String {
if cfg!(not(windows)) {
return "Recursos: la medición es solo de Windows".into();
}
let Some(m) = *ULTIMA.lock().unwrap() else { return "Recursos: midiendo…".into() }; let Some(m) = *ULTIMA.lock().unwrap() else { return "Recursos: midiendo…".into() };
let mem = if m.memoria_mb >= 1024 { format!("{:.1} GB", m.memoria_mb as f64 / 1024.0).replace('.', ",") } else { format!("{} MB", m.memoria_mb) }; let mem = if m.memoria_mb >= 1024 { format!("{:.1} GB", m.memoria_mb as f64 / 1024.0).replace('.', ",") } else { format!("{} MB", m.memoria_mb) };
let mut s = format!("Recursos: {mem} · CPU {:.0} % · {} procesos", m.cpu, m.procesos); let mut s = format!("Recursos: {mem} · CPU {:.0} % · {} procesos", m.cpu, m.procesos);
@@ -363,9 +366,11 @@ pub fn vigilar_pestana<R: Runtime>(app: &AppHandle<R>, wv: &tauri::Webview<R>) {
RECUPERACIONES.fetch_add(1, Ordering::Relaxed); RECUPERACIONES.fetch_add(1, Ordering::Relaxed);
crate::save_persisted(&h); crate::save_persisted(&h);
let hh = h.clone(); let hh = h.clone();
// Desde un hilo aparte, restart() pide la salida al bucle de eventos: pasa por
// RunEvent::Exit (salida_limpia anota el reinicio y quita el testigo) y el
// plugin de instancia única suelta su mutex ANTES de lanzar la copia nueva.
std::thread::spawn(move || { std::thread::spawn(move || {
std::thread::sleep(Duration::from_millis(500)); std::thread::sleep(Duration::from_millis(500));
salida_limpia();
hh.restart(); hh.restart();
}); });
} }