diff options
Diffstat (limited to 'src/app/runtime.rs')
| -rw-r--r-- | src/app/runtime.rs | 17 |
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); } |
