Set the stack size of the main thread to 8M (#227)

For fix stack overflow issue on Windows.
This commit is contained in:
Sunli 2024-09-09 10:24:41 +08:00 committed by GitHub
parent 821487bed5
commit 2f80ba408a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,4 +1,4 @@
use std::sync::Arc; use std::{sync::Arc, thread};
use anyhow::Result; use anyhow::Result;
use app_state::AppState; use app_state::AppState;
@ -21,44 +21,50 @@ fn init(app_state: Arc<AppState>, cx: &mut AppContext) -> Result<()> {
} }
fn main() { fn main() {
let app_state = Arc::new(AppState {}); let join_handle = thread::Builder::new()
.stack_size(8 * 1024 * 1024) // Set the stack size to 8MB
.spawn(|| {
let app_state = Arc::new(AppState {});
let app = App::new().with_assets(Assets); let app = App::new().with_assets(Assets);
app.run(move |cx| { app.run(move |cx| {
AppState::set_global(Arc::downgrade(&app_state), cx); AppState::set_global(Arc::downgrade(&app_state), cx);
if let Err(e) = init(app_state.clone(), cx) { if let Err(e) = init(app_state.clone(), cx) {
log::error!("{}", e); log::error!("{}", e);
return; return;
} }
cx.on_action(quit); cx.on_action(quit);
cx.set_menus(vec![ cx.set_menus(vec![
Menu { Menu {
name: "GPUI App".into(), name: "GPUI App".into(),
items: vec![MenuItem::action("Quit", Quit)], items: vec![MenuItem::action("Quit", Quit)],
}, },
Menu { Menu {
name: "Edit".into(), name: "Edit".into(),
items: vec![ items: vec![
MenuItem::os_action("Undo", Undo, gpui::OsAction::Undo), MenuItem::os_action("Undo", Undo, gpui::OsAction::Undo),
MenuItem::os_action("Redo", Redo, gpui::OsAction::Redo), MenuItem::os_action("Redo", Redo, gpui::OsAction::Redo),
MenuItem::separator(), MenuItem::separator(),
MenuItem::os_action("Cut", Cut, gpui::OsAction::Cut), MenuItem::os_action("Cut", Cut, gpui::OsAction::Cut),
MenuItem::os_action("Copy", Copy, gpui::OsAction::Copy), MenuItem::os_action("Copy", Copy, gpui::OsAction::Copy),
MenuItem::os_action("Paste", Paste, gpui::OsAction::Paste), MenuItem::os_action("Paste", Paste, gpui::OsAction::Paste),
], ],
}, },
]); ]);
cx.activate(true); cx.activate(true);
story_workspace::open_new(app_state.clone(), cx, |_workspace, _cx| { story_workspace::open_new(app_state.clone(), cx, |_workspace, _cx| {
// do something // do something
})
.detach();
});
}) })
.detach(); .unwrap();
}); join_handle.join().unwrap();
} }
fn quit(_: &Quit, cx: &mut AppContext) { fn quit(_: &Quit, cx: &mut AppContext) {