Avoid double borrow in tests by drawing windows explicitly in flush_effects
Co-authored-by: Antonio <antonio@zed.dev>
This commit is contained in:
parent
9b94f1483a
commit
fbfe108317
3 changed files with 16 additions and 3 deletions
|
@ -596,13 +596,26 @@ impl AppContext {
|
|||
}
|
||||
}
|
||||
|
||||
for (_, window) in &self.windows {
|
||||
for window in self.windows.values() {
|
||||
if let Some(window) = window.as_ref() {
|
||||
if window.dirty {
|
||||
window.platform_window.invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(test, feature = "test-support"))]
|
||||
for window in self
|
||||
.windows
|
||||
.values()
|
||||
.filter_map(|window| {
|
||||
let window = window.as_ref()?;
|
||||
window.dirty.then_some(window.handle)
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
{
|
||||
self.update_window(window, |_, cx| cx.draw()).ok();
|
||||
}
|
||||
}
|
||||
|
||||
/// Repeatedly called during `flush_effects` to release any entities whose
|
||||
|
|
|
@ -168,7 +168,7 @@ impl PlatformWindow for TestWindow {
|
|||
}
|
||||
|
||||
fn invalidate(&self) {
|
||||
(self.draw.lock())().unwrap();
|
||||
// (self.draw.lock())().unwrap();
|
||||
}
|
||||
|
||||
fn sprite_atlas(&self) -> sync::Arc<dyn crate::PlatformAtlas> {
|
||||
|
|
|
@ -1181,7 +1181,7 @@ impl<'a> WindowContext<'a> {
|
|||
}
|
||||
|
||||
/// Draw pixels to the display for this window based on the contents of its scene.
|
||||
fn draw(&mut self) -> Scene {
|
||||
pub(crate) fn draw(&mut self) -> Scene {
|
||||
self.text_system().start_frame();
|
||||
self.window.platform_window.clear_input_handler();
|
||||
self.window.layout_engine.as_mut().unwrap().clear();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue