From 2fe854df51dc244f6fd704ef11b766fb2f832a87 Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Sun, 28 Dec 2025 19:55:11 -0800 Subject: [PATCH] Implement on other platforms --- crates/gpui/src/platform/linux/headless/client.rs | 6 +++++- crates/gpui/src/platform/linux/wayland/client.rs | 9 ++++++++- crates/gpui/src/platform/linux/x11/client.rs | 9 ++++++++- crates/gpui/src/platform/windows/dispatcher.rs | 9 ++++++++- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/crates/gpui/src/platform/linux/headless/client.rs b/crates/gpui/src/platform/linux/headless/client.rs index 33f1bb17e3230d0b9c9b2c53bcd0603a9cc7f22c..9de820a6b8938e2e37923dfc658487945ca91671 100644 --- a/crates/gpui/src/platform/linux/headless/client.rs +++ b/crates/gpui/src/platform/linux/headless/client.rs @@ -32,7 +32,11 @@ impl HeadlessClient { .insert_source(main_receiver, |event, _, _: &mut HeadlessClient| { if let calloop::channel::Event::Msg(runnable) = event { match runnable { - crate::RunnableVariant::Meta(runnable) => runnable.run(), + crate::RunnableVariant::Meta(runnable) => { + if runnable.metadata().is_app_alive() { + runnable.run(); + } + } crate::RunnableVariant::Compat(runnable) => runnable.run(), }; } diff --git a/crates/gpui/src/platform/linux/wayland/client.rs b/crates/gpui/src/platform/linux/wayland/client.rs index b6bfbec0679f9413fceef2bb37e7bd304371707e..84023d38d4beec8a8c7f2f2f01dfc6436bb631bf 100644 --- a/crates/gpui/src/platform/linux/wayland/client.rs +++ b/crates/gpui/src/platform/linux/wayland/client.rs @@ -502,7 +502,14 @@ impl WaylandClient { let start = Instant::now(); let mut timing = match runnable { RunnableVariant::Meta(runnable) => { - let location = runnable.metadata().location; + let metadata = runnable.metadata(); + let location = metadata.location; + + if !metadata.is_app_alive() { + drop(runnable); + return; + } + let timing = TaskTiming { location, start, diff --git a/crates/gpui/src/platform/linux/x11/client.rs b/crates/gpui/src/platform/linux/x11/client.rs index 0de5ff02f7d0895da05dfa480bff2e19abff40db..8adf733580291a93ecee645439f63c71f9e809b3 100644 --- a/crates/gpui/src/platform/linux/x11/client.rs +++ b/crates/gpui/src/platform/linux/x11/client.rs @@ -316,7 +316,14 @@ impl X11Client { let start = Instant::now(); let mut timing = match runnable { RunnableVariant::Meta(runnable) => { - let location = runnable.metadata().location; + let metadata = runnable.metadata(); + let location = metadata.location; + + if !metadata.is_app_alive() { + drop(runnable); + return; + } + let timing = TaskTiming { location, start, diff --git a/crates/gpui/src/platform/windows/dispatcher.rs b/crates/gpui/src/platform/windows/dispatcher.rs index 14486ccee9843ef9c0792d62f22fa825f0db43ee..b3b7d43d972a5727d52dc805be0b025ebaee26cc 100644 --- a/crates/gpui/src/platform/windows/dispatcher.rs +++ b/crates/gpui/src/platform/windows/dispatcher.rs @@ -73,7 +73,14 @@ impl WindowsDispatcher { let mut timing = match runnable { RunnableVariant::Meta(runnable) => { - let location = runnable.metadata().location; + let metadata = runnable.metadata(); + let location = metadata.location; + + if !metadata.is_app_alive() { + drop(runnable); + return; + } + let timing = TaskTiming { location, start,