co-authored by
Nathan Sobo
parent
e4e9da7673
commit
d1791a999d
@@ -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 {
|
||||
// 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() }
|
||||
let this = self.clone();
|
||||
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;
|
||||
f(&this.value)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user