Set the stack size of the main thread to 8M (#227)
For fix stack overflow issue on Windows.
This commit is contained in:
parent
821487bed5
commit
2f80ba408a
1 changed files with 38 additions and 32 deletions
|
|
@ -1,4 +1,4 @@
|
|||
use std::sync::Arc;
|
||||
use std::{sync::Arc, thread};
|
||||
|
||||
use anyhow::Result;
|
||||
use app_state::AppState;
|
||||
|
|
@ -21,44 +21,50 @@ fn init(app_state: Arc<AppState>, cx: &mut AppContext) -> Result<()> {
|
|||
}
|
||||
|
||||
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| {
|
||||
AppState::set_global(Arc::downgrade(&app_state), cx);
|
||||
app.run(move |cx| {
|
||||
AppState::set_global(Arc::downgrade(&app_state), cx);
|
||||
|
||||
if let Err(e) = init(app_state.clone(), cx) {
|
||||
log::error!("{}", e);
|
||||
return;
|
||||
}
|
||||
if let Err(e) = init(app_state.clone(), cx) {
|
||||
log::error!("{}", e);
|
||||
return;
|
||||
}
|
||||
|
||||
cx.on_action(quit);
|
||||
cx.on_action(quit);
|
||||
|
||||
cx.set_menus(vec![
|
||||
Menu {
|
||||
name: "GPUI App".into(),
|
||||
items: vec![MenuItem::action("Quit", Quit)],
|
||||
},
|
||||
Menu {
|
||||
name: "Edit".into(),
|
||||
items: vec![
|
||||
MenuItem::os_action("Undo", Undo, gpui::OsAction::Undo),
|
||||
MenuItem::os_action("Redo", Redo, gpui::OsAction::Redo),
|
||||
MenuItem::separator(),
|
||||
MenuItem::os_action("Cut", Cut, gpui::OsAction::Cut),
|
||||
MenuItem::os_action("Copy", Copy, gpui::OsAction::Copy),
|
||||
MenuItem::os_action("Paste", Paste, gpui::OsAction::Paste),
|
||||
],
|
||||
},
|
||||
]);
|
||||
cx.activate(true);
|
||||
cx.set_menus(vec![
|
||||
Menu {
|
||||
name: "GPUI App".into(),
|
||||
items: vec![MenuItem::action("Quit", Quit)],
|
||||
},
|
||||
Menu {
|
||||
name: "Edit".into(),
|
||||
items: vec![
|
||||
MenuItem::os_action("Undo", Undo, gpui::OsAction::Undo),
|
||||
MenuItem::os_action("Redo", Redo, gpui::OsAction::Redo),
|
||||
MenuItem::separator(),
|
||||
MenuItem::os_action("Cut", Cut, gpui::OsAction::Cut),
|
||||
MenuItem::os_action("Copy", Copy, gpui::OsAction::Copy),
|
||||
MenuItem::os_action("Paste", Paste, gpui::OsAction::Paste),
|
||||
],
|
||||
},
|
||||
]);
|
||||
cx.activate(true);
|
||||
|
||||
story_workspace::open_new(app_state.clone(), cx, |_workspace, _cx| {
|
||||
// do something
|
||||
story_workspace::open_new(app_state.clone(), cx, |_workspace, _cx| {
|
||||
// do something
|
||||
})
|
||||
.detach();
|
||||
});
|
||||
})
|
||||
.detach();
|
||||
});
|
||||
.unwrap();
|
||||
join_handle.join().unwrap();
|
||||
}
|
||||
|
||||
fn quit(_: &Quit, cx: &mut AppContext) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue