Checkpoint

This commit is contained in:
Nathan Sobo 2023-10-05 00:13:17 -06:00
parent 1c70ca2214
commit ed20397a2b
3 changed files with 10 additions and 4 deletions

View file

@ -146,6 +146,7 @@ impl AppContext {
}
fn flush_effects(&mut self) {
dbg!("flush effects");
while let Some(effect) = self.pending_effects.pop_front() {
match effect {
Effect::Notify(entity_id) => self.apply_notify_effect(entity_id),

View file

@ -67,6 +67,12 @@ impl AsyncWindowContext {
pub fn update<R>(&self, update: impl FnOnce(&mut WindowContext) -> R) -> Result<R> {
self.app.update_window(self.window, update)
}
pub fn on_next_frame(&mut self, f: impl FnOnce(&mut WindowContext) + Send + 'static) {
self.app
.update_window(self.window, |cx| cx.on_next_frame(f))
.ok();
}
}
impl Context for AsyncWindowContext {

View file

@ -75,12 +75,11 @@ impl<S: Send + Sync + 'static> Element for Img<S> {
let corner_radii = style.corner_radii.to_pixels(bounds, cx.rem_size());
cx.paint_image(bounds, corner_radii, order, data, self.grayscale)?;
} else {
cx.spawn(|view, mut cx| async move {
cx.spawn(|_, mut cx| async move {
if image_future.await.log_err().is_some() {
view.update(&mut cx, |_, cx| {
cx.on_next_frame(|cx| {
cx.notify();
})
.ok();
});
}
})
.detach()