summaryrefslogtreecommitdiff
path: root/src/app/runtime.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-24 18:03:24 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-24 18:03:24 +0300
commit5ce738cf5397d0d8a50ed1aa6335297073cc0f0f (patch)
treebed3b4f720c58f76562709d22ce30aabf734eaf2 /src/app/runtime.rs
parent26205a2ac5e21053bd94a0925efcfca44c6f549b (diff)
fix: avoid app event queue stalls
refs #265
Diffstat (limited to 'src/app/runtime.rs')
-rw-r--r--src/app/runtime.rs17
1 files changed, 16 insertions, 1 deletions
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);
}