Checkpoint: Narrow down error
This commit is contained in:
parent
66e4d75e6f
commit
0e1d2fdf21
8 changed files with 37 additions and 31 deletions
|
@ -47,10 +47,10 @@ impl AppCell {
|
||||||
AppRef(self.app.borrow())
|
AppRef(self.app.borrow())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn borrow_mut(&self, label: &str) -> AppRefMut {
|
pub fn borrow_mut(&self) -> AppRefMut {
|
||||||
let thread_id = std::thread::current().id();
|
let thread_id = std::thread::current().id();
|
||||||
|
|
||||||
eprintln!(">>> borrowing {thread_id:?}: {label}");
|
eprintln!(">>> borrowing {thread_id:?}");
|
||||||
AppRefMut(self.app.borrow_mut())
|
AppRefMut(self.app.borrow_mut())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ impl App {
|
||||||
let platform = self.0.borrow().platform.clone();
|
let platform = self.0.borrow().platform.clone();
|
||||||
platform.run(Box::new(move || {
|
platform.run(Box::new(move || {
|
||||||
dbg!("run callback");
|
dbg!("run callback");
|
||||||
let cx = &mut *this.borrow_mut("app::borrow_mut");
|
let cx = &mut *this.borrow_mut();
|
||||||
on_finish_launching(cx);
|
on_finish_launching(cx);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ impl App {
|
||||||
let this = Rc::downgrade(&self.0);
|
let this = Rc::downgrade(&self.0);
|
||||||
self.0.borrow().platform.on_open_urls(Box::new(move |urls| {
|
self.0.borrow().platform.on_open_urls(Box::new(move |urls| {
|
||||||
if let Some(app) = this.upgrade() {
|
if let Some(app) = this.upgrade() {
|
||||||
callback(urls, &mut *app.borrow_mut("app.rs::on_open_urls"));
|
callback(urls, &mut *app.borrow_mut());
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
self
|
self
|
||||||
|
@ -110,9 +110,12 @@ impl App {
|
||||||
F: 'static + FnMut(&mut AppContext),
|
F: 'static + FnMut(&mut AppContext),
|
||||||
{
|
{
|
||||||
let this = Rc::downgrade(&self.0);
|
let this = Rc::downgrade(&self.0);
|
||||||
self.0.borrow_mut("app.rs::on_reopen").platform.on_reopen(Box::new(move || {
|
self.0
|
||||||
|
.borrow_mut()
|
||||||
|
.platform
|
||||||
|
.on_reopen(Box::new(move || {
|
||||||
if let Some(app) = this.upgrade() {
|
if let Some(app) = this.upgrade() {
|
||||||
callback(&mut app.borrow_mut("app.rs::on_reopen(callback)"));
|
callback(&mut app.borrow_mut());
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
self
|
self
|
||||||
|
|
|
@ -29,7 +29,7 @@ impl Context for AsyncAppContext {
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.ok_or_else(|| anyhow!("app was released"))?;
|
.ok_or_else(|| anyhow!("app was released"))?;
|
||||||
dbg!("BUILD MODEL A");
|
dbg!("BUILD MODEL A");
|
||||||
let mut app = app.borrow_mut("gpui2/async_context.rs::build_model");
|
let mut app = app.borrow_mut();
|
||||||
Ok(app.build_model(build_model))
|
Ok(app.build_model(build_model))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ impl Context for AsyncAppContext {
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.ok_or_else(|| anyhow!("app was released"))?;
|
.ok_or_else(|| anyhow!("app was released"))?;
|
||||||
dbg!("UPDATE MODEL B");
|
dbg!("UPDATE MODEL B");
|
||||||
let mut app = app.borrow_mut("gpui2/async_context.rs::update_model");
|
let mut app = app.borrow_mut();
|
||||||
Ok(app.update_model(handle, update))
|
Ok(app.update_model(handle, update))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ impl Context for AsyncAppContext {
|
||||||
{
|
{
|
||||||
let app = self.app.upgrade().context("app was released")?;
|
let app = self.app.upgrade().context("app was released")?;
|
||||||
dbg!("UPDATE WINDOW C");
|
dbg!("UPDATE WINDOW C");
|
||||||
let mut lock = app.borrow_mut("gpui2/async_context::update_window");
|
let mut lock = app.borrow_mut();
|
||||||
lock.update_window(window, f)
|
lock.update_window(window, f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ impl AsyncAppContext {
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.ok_or_else(|| anyhow!("app was released"))?;
|
.ok_or_else(|| anyhow!("app was released"))?;
|
||||||
dbg!("REFRESH");
|
dbg!("REFRESH");
|
||||||
let mut lock = app.borrow_mut("async_context.rs::refresh");
|
let mut lock = app.borrow_mut();
|
||||||
lock.refresh();
|
lock.refresh();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ impl AsyncAppContext {
|
||||||
.app
|
.app
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.ok_or_else(|| anyhow!("app was released"))?;
|
.ok_or_else(|| anyhow!("app was released"))?;
|
||||||
let mut lock = app.borrow_mut("async_context.rs::update");
|
let mut lock = app.borrow_mut();
|
||||||
Ok(f(&mut *lock))
|
Ok(f(&mut *lock))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ impl AsyncAppContext {
|
||||||
.app
|
.app
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.ok_or_else(|| anyhow!("app was released"))?;
|
.ok_or_else(|| anyhow!("app was released"))?;
|
||||||
let mut lock = app.borrow_mut("open_window");
|
let mut lock = app.borrow_mut();
|
||||||
Ok(lock.open_window(options, build_root_view))
|
Ok(lock.open_window(options, build_root_view))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ impl AsyncAppContext {
|
||||||
.app
|
.app
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.ok_or_else(|| anyhow!("app was released"))?;
|
.ok_or_else(|| anyhow!("app was released"))?;
|
||||||
let app = app.borrow_mut("has_global");
|
let app = app.borrow_mut();
|
||||||
Ok(app.has_global::<G>())
|
Ok(app.has_global::<G>())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ impl AsyncAppContext {
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.ok_or_else(|| anyhow!("app was released"))?;
|
.ok_or_else(|| anyhow!("app was released"))?;
|
||||||
dbg!("read global");
|
dbg!("read global");
|
||||||
let app = app.borrow_mut("async_context.rs::read_global");
|
let app = app.borrow_mut();
|
||||||
Ok(read(app.global(), &app))
|
Ok(read(app.global(), &app))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ impl AsyncAppContext {
|
||||||
) -> Option<R> {
|
) -> Option<R> {
|
||||||
let app = self.app.upgrade()?;
|
let app = self.app.upgrade()?;
|
||||||
dbg!("try read global");
|
dbg!("try read global");
|
||||||
let app = app.borrow_mut("async_context.rs::try_read_global");
|
let app = app.borrow_mut();
|
||||||
Some(read(app.try_global()?, &app))
|
Some(read(app.try_global()?, &app))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ impl AsyncAppContext {
|
||||||
.upgrade()
|
.upgrade()
|
||||||
.ok_or_else(|| anyhow!("app was released"))?;
|
.ok_or_else(|| anyhow!("app was released"))?;
|
||||||
dbg!("update global");
|
dbg!("update global");
|
||||||
let mut app = app.borrow_mut("async_context.rs::update_global");
|
let mut app = app.borrow_mut();
|
||||||
Ok(app.update_global(update))
|
Ok(app.update_global(update))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ impl Context for TestAppContext {
|
||||||
where
|
where
|
||||||
T: 'static,
|
T: 'static,
|
||||||
{
|
{
|
||||||
let mut app = self.app.borrow_mut("test_context.rs::build_model");
|
let mut app = self.app.borrow_mut();
|
||||||
app.build_model(build_model)
|
app.build_model(build_model)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ impl Context for TestAppContext {
|
||||||
handle: &Model<T>,
|
handle: &Model<T>,
|
||||||
update: impl FnOnce(&mut T, &mut ModelContext<'_, T>) -> R,
|
update: impl FnOnce(&mut T, &mut ModelContext<'_, T>) -> R,
|
||||||
) -> Self::Result<R> {
|
) -> Self::Result<R> {
|
||||||
let mut app = self.app.borrow_mut("test_context::update_model");
|
let mut app = self.app.borrow_mut();
|
||||||
app.update_model(handle, update)
|
app.update_model(handle, update)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ impl Context for TestAppContext {
|
||||||
where
|
where
|
||||||
F: FnOnce(AnyView, &mut WindowContext<'_>) -> T,
|
F: FnOnce(AnyView, &mut WindowContext<'_>) -> T,
|
||||||
{
|
{
|
||||||
let mut lock = self.app.borrow_mut("test_context::update_window");
|
let mut lock = self.app.borrow_mut();
|
||||||
lock.update_window(window, f)
|
lock.update_window(window, f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,11 +65,11 @@ impl TestAppContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn quit(&self) {
|
pub fn quit(&self) {
|
||||||
self.app.borrow_mut("test_context.rs::quit").quit();
|
self.app.borrow_mut().quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn refresh(&mut self) -> Result<()> {
|
pub fn refresh(&mut self) -> Result<()> {
|
||||||
let mut app = self.app.borrow_mut("test_context.rs::refresh");
|
let mut app = self.app.borrow_mut();
|
||||||
app.refresh();
|
app.refresh();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ impl TestAppContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update<R>(&self, f: impl FnOnce(&mut AppContext) -> R) -> R {
|
pub fn update<R>(&self, f: impl FnOnce(&mut AppContext) -> R) -> R {
|
||||||
let mut cx = self.app.borrow_mut("test_context::update");
|
let mut cx = self.app.borrow_mut();
|
||||||
cx.update(f)
|
cx.update(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ impl TestAppContext {
|
||||||
&mut self,
|
&mut self,
|
||||||
update: impl FnOnce(&mut G, &mut AppContext) -> R,
|
update: impl FnOnce(&mut G, &mut AppContext) -> R,
|
||||||
) -> R {
|
) -> R {
|
||||||
let mut lock = self.app.borrow_mut("test_context.rs::update_global");
|
let mut lock = self.app.borrow_mut();
|
||||||
lock.update_global(update)
|
lock.update_global(update)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ pub(crate) trait Platform: 'static {
|
||||||
fn set_display_link_output_callback(
|
fn set_display_link_output_callback(
|
||||||
&self,
|
&self,
|
||||||
display_id: DisplayId,
|
display_id: DisplayId,
|
||||||
callback: Box<dyn FnMut(&VideoTimestamp, &VideoTimestamp)>,
|
callback: Box<dyn FnMut(&VideoTimestamp, &VideoTimestamp) + Send>,
|
||||||
);
|
);
|
||||||
fn start_display_link(&self, display_id: DisplayId);
|
fn start_display_link(&self, display_id: DisplayId);
|
||||||
fn stop_display_link(&self, display_id: DisplayId);
|
fn stop_display_link(&self, display_id: DisplayId);
|
||||||
|
|
|
@ -26,13 +26,13 @@ impl MacDisplayLinker {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type OutputCallback = Mutex<Box<dyn FnMut(&VideoTimestamp, &VideoTimestamp)>>;
|
type OutputCallback = Mutex<Box<dyn FnMut(&VideoTimestamp, &VideoTimestamp) + Send>>;
|
||||||
|
|
||||||
impl MacDisplayLinker {
|
impl MacDisplayLinker {
|
||||||
pub fn set_output_callback(
|
pub fn set_output_callback(
|
||||||
&mut self,
|
&mut self,
|
||||||
display_id: DisplayId,
|
display_id: DisplayId,
|
||||||
output_callback: Box<dyn FnMut(&VideoTimestamp, &VideoTimestamp)>,
|
output_callback: Box<dyn FnMut(&VideoTimestamp, &VideoTimestamp) + Send>,
|
||||||
) {
|
) {
|
||||||
if let Some(mut system_link) = unsafe { sys::DisplayLink::on_display(display_id.0) } {
|
if let Some(mut system_link) = unsafe { sys::DisplayLink::on_display(display_id.0) } {
|
||||||
let callback = Arc::new(Mutex::new(output_callback));
|
let callback = Arc::new(Mutex::new(output_callback));
|
||||||
|
|
|
@ -494,7 +494,7 @@ impl Platform for MacPlatform {
|
||||||
fn set_display_link_output_callback(
|
fn set_display_link_output_callback(
|
||||||
&self,
|
&self,
|
||||||
display_id: DisplayId,
|
display_id: DisplayId,
|
||||||
callback: Box<dyn FnMut(&VideoTimestamp, &VideoTimestamp)>,
|
callback: Box<dyn FnMut(&VideoTimestamp, &VideoTimestamp) + Send>,
|
||||||
) {
|
) {
|
||||||
self.0
|
self.0
|
||||||
.lock()
|
.lock()
|
||||||
|
|
|
@ -81,7 +81,7 @@ impl Platform for TestPlatform {
|
||||||
fn set_display_link_output_callback(
|
fn set_display_link_output_callback(
|
||||||
&self,
|
&self,
|
||||||
_display_id: DisplayId,
|
_display_id: DisplayId,
|
||||||
_callback: Box<dyn FnMut(&crate::VideoTimestamp, &crate::VideoTimestamp)>,
|
_callback: Box<dyn FnMut(&crate::VideoTimestamp, &crate::VideoTimestamp) + Send>,
|
||||||
) {
|
) {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,6 +62,9 @@ mod stories {
|
||||||
"https://avatars.githubusercontent.com/u/326587?v=4",
|
"https://avatars.githubusercontent.com/u/326587?v=4",
|
||||||
))
|
))
|
||||||
// .child(Avatar::new(
|
// .child(Avatar::new(
|
||||||
|
// "https://avatars.githubusercontent.com/u/326587?v=4",
|
||||||
|
// ))
|
||||||
|
// .child(Avatar::new(
|
||||||
// "https://avatars.githubusercontent.com/u/482957?v=4",
|
// "https://avatars.githubusercontent.com/u/482957?v=4",
|
||||||
// ))
|
// ))
|
||||||
// .child(Avatar::new(
|
// .child(Avatar::new(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue