From 5ce738cf5397d0d8a50ed1aa6335297073cc0f0f Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Sun, 24 May 2026 18:03:24 +0300 Subject: fix: avoid app event queue stalls refs #265 --- src/app/runtime.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/app/runtime.rs') diff --git a/src/app/runtime.rs b/src/app/runtime.rs index 7f7306cc..284fb882 100644 --- a/src/app/runtime.rs +++ b/src/app/runtime.rs @@ -418,8 +418,23 @@ impl App { } pub(crate) fn drain_internal_events(&mut self) -> bool { + self.drain_internal_events_up_to(super::APP_EVENT_DRAIN_LIMIT) + } + + pub(crate) fn drain_all_internal_events(&mut self) -> bool { + let mut had_event = false; + while self.drain_internal_events_up_to(super::APP_EVENT_DRAIN_LIMIT) { + had_event = true; + } + had_event + } + + fn drain_internal_events_up_to(&mut self, limit: usize) -> bool { let mut had_event = false; - while let Ok(ev) = self.event_rx.try_recv() { + for _ in 0..limit { + let Ok(ev) = self.event_rx.try_recv() else { + break; + }; had_event = true; self.handle_internal_event(ev); } -- cgit v1.2.3