Checkpoint
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
parent
e4e9da7673
commit
d1791a999d
2 changed files with 8 additions and 14 deletions
|
@ -47,9 +47,10 @@ impl App {
|
|||
where
|
||||
F: 'static + FnOnce(&mut AppContext),
|
||||
{
|
||||
let this = self.clone();
|
||||
let platform = self.0.lock().platform.clone();
|
||||
platform.borrow_on_main_thread().run(Box::new(move || {
|
||||
let cx = &mut *self.0.lock();
|
||||
let cx = &mut *this.0.lock();
|
||||
on_finish_launching(cx);
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -149,19 +149,12 @@ impl<T: 'static + ?Sized> MainThreadOnly<T> {
|
|||
where
|
||||
R: Send + 'static,
|
||||
{
|
||||
let (tx, rx) = oneshot::channel();
|
||||
if self.dispatcher.is_main_thread() {
|
||||
let _ = tx.send(f(&self.value));
|
||||
} else {
|
||||
let this = self.clone();
|
||||
let _ = crate::spawn_on_main(self.dispatcher.clone(), async move {
|
||||
crate::spawn_on_main(self.dispatcher.clone(), async move {
|
||||
// Required so we move `this` instead of this.value. Only `this` is `Send`.
|
||||
let this = this;
|
||||
let _ = tx.send(f(&this.value));
|
||||
});
|
||||
}
|
||||
|
||||
async move { rx.await.unwrap() }
|
||||
f(&this.value)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue