Skip to content

Commit 13c73f2

Browse files
add simple signal handling
1 parent bc33e00 commit 13c73f2

3 files changed

Lines changed: 20 additions & 0 deletions

File tree

Cargo.lock

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

desktop/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ rand = { workspace = true, features = ["thread_rng"] }
4444
serde = { workspace = true }
4545
clap = { workspace = true, features = ["derive"] }
4646
pidlock = "0.2.2"
47+
ctrlc = "3.5.1"
4748

4849
# Windows-specific dependencies
4950
[target.'cfg(target_os = "windows")'.dependencies]

desktop/src/app.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ impl App {
5656
app_event_scheduler: AppEventScheduler,
5757
launch_documents: Vec<PathBuf>,
5858
) -> Self {
59+
let ctrlc_app_event_scheduler = app_event_scheduler.clone();
60+
ctrlc::set_handler(move || {
61+
tracing::info!("Termination signal received, exiting...");
62+
ctrlc_app_event_scheduler.schedule(AppEvent::CloseWindow);
63+
})
64+
.expect("Error setting Ctrl-C handler");
65+
5966
let rendering_app_event_scheduler = app_event_scheduler.clone();
6067
let (start_render_sender, start_render_receiver) = std::sync::mpsc::sync_channel(1);
6168
std::thread::spawn(move || {

0 commit comments

Comments
 (0)