mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
Force shutdown on second ^C
This commit is contained in:
parent
2708aa4fef
commit
2853e2230b
1 changed files with 18 additions and 9 deletions
27
src/main.rs
27
src/main.rs
|
@ -1,18 +1,19 @@
|
||||||
#[macro_use] extern crate log;
|
#[macro_use] extern crate log;
|
||||||
extern crate getopts;
|
|
||||||
extern crate librespot;
|
|
||||||
extern crate ctrlc;
|
extern crate ctrlc;
|
||||||
extern crate env_logger;
|
extern crate env_logger;
|
||||||
extern crate futures;
|
extern crate futures;
|
||||||
|
extern crate getopts;
|
||||||
|
extern crate librespot;
|
||||||
extern crate tokio_core;
|
extern crate tokio_core;
|
||||||
|
|
||||||
use env_logger::LogBuilder;
|
use env_logger::LogBuilder;
|
||||||
use std::io::{stderr, Write};
|
|
||||||
use std::process::exit;
|
|
||||||
use std::env;
|
|
||||||
use std::path::PathBuf;
|
|
||||||
use std::str::FromStr;
|
|
||||||
use futures::Future;
|
use futures::Future;
|
||||||
|
use std::cell::{RefCell, Cell};
|
||||||
|
use std::env;
|
||||||
|
use std::io::{stderr, Write};
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::process::exit;
|
||||||
|
use std::str::FromStr;
|
||||||
use tokio_core::reactor::Core;
|
use tokio_core::reactor::Core;
|
||||||
|
|
||||||
use librespot::spirc::Spirc;
|
use librespot::spirc::Spirc;
|
||||||
|
@ -173,10 +174,18 @@ fn main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
let (spirc, task) = Spirc::new(session.clone(), player, mixer);
|
let (spirc, task) = Spirc::new(session.clone(), player, mixer);
|
||||||
let spirc = ::std::cell::RefCell::new(spirc);
|
let spirc = RefCell::new(spirc);
|
||||||
|
|
||||||
|
let shutting_down = Cell::new(false);
|
||||||
ctrlc::set_handler(move || {
|
ctrlc::set_handler(move || {
|
||||||
spirc.borrow_mut().shutdown();
|
if shutting_down.get() {
|
||||||
|
warn!("Forced shutdown");
|
||||||
|
exit(1);
|
||||||
|
} else {
|
||||||
|
info!("Shutting down");
|
||||||
|
spirc.borrow_mut().shutdown();
|
||||||
|
shutting_down.set(true);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
task.map_err(|()| panic!("spirc error"))
|
task.map_err(|()| panic!("spirc error"))
|
||||||
|
|
Loading…
Reference in a new issue