diff options
Diffstat (limited to 'console/src/bin')
| -rw-r--r-- | console/src/bin/padc.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/console/src/bin/padc.rs b/console/src/bin/padc.rs index 742b6c2..3887dd2 100644 --- a/console/src/bin/padc.rs +++ b/console/src/bin/padc.rs @@ -14,6 +14,8 @@ use std::process::exit; use std::str::FromStr; use std::sync::Arc; use log::LevelFilter; +use tokio::signal::ctrl_c; +use nogamepads::entry_mutex; use nogamepads::logger_utils::logger_build; use nogamepads_core::data::controller::cli::cli_command::{process_controller_cli, ControllerCli}; use nogamepads_core::data::controller::structs::ControllerData; @@ -450,6 +452,16 @@ fn connect(data: &mut LocalData, args: ConnectArgs) { logger_build(LevelFilter::Info); } + // Ctrl + C + let shutdown_runtime = Arc::clone(&runtime); + let shutdown = async move { + let _ = ctrl_c().await; + entry_mutex!(shutdown_runtime, |guard| { + guard.close(); + }); + }; + services.push(Box::pin(shutdown)); + ServiceRunner::run(services); } } @@ -510,6 +522,16 @@ fn listen(data: &mut LocalData, args: ListenArgs) { logger_build(LevelFilter::Info); } + // Ctrl + C + let shutdown_runtime = Arc::clone(&runtime); + let shutdown = async move { + let _ = ctrl_c().await; + entry_mutex!(shutdown_runtime, |guard| { + guard.close_game(); + }); + }; + services.push(Box::pin(shutdown)); + ServiceRunner::run(services); } |
