gpui: Fix update_window
to borrow_mut
will crash on Windows (#24545)
Release Notes:
- N/A
---
When we use `window_handle` to draw WebView on Windows, this will crash
by:
This error caused by when used WebView2.
```
thread 'main' panicked at crates\gpui\src\app\async_context.rs:91:28:
already borrowed: BorrowMutError
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at library\core\src\panicking.rs:221:5:
panic in a function that cannot unwind
```
Try this https://github.com/tauri-apps/wry/pull/1383 on Windows can
replay the crash.
In fact, we had done [a similar fix around August last
year](https://github.com/huacnlee/zed/pull/6), but we used the unsafe
method to avoid crashes in that version, we felt that it was not a good
change, so we do not make PR.
Today @sunli829 thought about it again and changed the method. Now using
`try_borrow_mut` is similar to the previous `borrow_mut`.
691de6b4b3/crates/gpui/src/app.rs (L70-L78)
I have tested to start Zed by those changes, it is looks no problem.
Co-authored-by: Sunli <scott_s829@163.com>
This commit is contained in:
parent
051f49ce9a
commit
0fa9f05313
2 changed files with 12 additions and 2 deletions
|
@ -88,7 +88,7 @@ impl AppContext for AsyncApp {
|
|||
F: FnOnce(AnyView, &mut Window, &mut App) -> T,
|
||||
{
|
||||
let app = self.app.upgrade().context("app was released")?;
|
||||
let mut lock = app.borrow_mut();
|
||||
let mut lock = app.try_borrow_mut()?;
|
||||
lock.update_window(window, f)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue