Fix empty nodes crash (#38259)
The crash occured because we raced against the platform windowing backend to render a frame, and if we lost the race there would be no frame on a window that we return, which breaks most of gpui Release Notes: - N/A
This commit is contained in:
@@ -958,6 +958,14 @@ impl App {
|
||||
cx.window_update_stack.pop();
|
||||
window.root.replace(root_view.into());
|
||||
window.defer(cx, |window: &mut Window, cx| window.appearance_changed(cx));
|
||||
|
||||
// allow a window to draw at least once before returning
|
||||
// this didn't cause any issues on non windows platforms as it seems we always won the race to on_request_frame
|
||||
// on windows we quite frequently lose the race and return a window that has never rendered, which leads to a crash
|
||||
// where DispatchTree::root_node_id asserts on empty nodes
|
||||
let clear = window.draw(cx);
|
||||
clear.clear();
|
||||
|
||||
cx.window_handles.insert(id, window.handle);
|
||||
cx.windows.get_mut(id).unwrap().replace(window);
|
||||
Ok(handle)
|
||||
|
||||
Reference in New Issue
Block a user