diff --git a/iris/core/src/ui/render_state.rs b/iris/core/src/ui/render_state.rs index 822cee8..662a626 100644 --- a/iris/core/src/ui/render_state.rs +++ b/iris/core/src/ui/render_state.rs @@ -285,12 +285,14 @@ impl UiRenderState { self.apply_free(); #[cfg(debug_assertions)] debug_assert!(self.primitive_counts_agree(), "{}", self.orphan_report(rsc),); - let next: Vec<_> = std::mem::take(&mut self.next_frame) - .into_iter() - .filter(|id| self.active.contains_key(id)) - .collect(); - let requested = !next.is_empty(); - rsc.widgets_mut().needs_redraw.extend(next); + let active = &self.active; + let mut requested = false; + for id in self.next_frame.drain() { + if active.contains_key(&id) { + rsc.widgets_mut().needs_redraw.insert(id); + requested = true; + } + } requested }