@@ -14,6 +14,7 @@ use clap::Parser;
1414use log:: LevelFilter ;
1515use mio:: net:: UdpSocket ;
1616use mio_signals:: { Signal , Signals , SignalSet } ;
17+ use system_shutdown:: shutdown;
1718use udp_connections:: { MAX_PACKET_SIZE , Server , ServerEvent , Transport } ;
1819use vec_map:: VecMap ;
1920use inputshare_common:: { ConsumerDeviceCode , HidButtonCode , HidKeyCode , IDENTIFIER } ;
@@ -53,10 +54,15 @@ fn main() -> Result<()>{
5354
5455 configfs:: disable_hid ( ) ?;
5556
56- result
57+ if result? {
58+ log:: info!( "Attempting the shutdown the OS as well..." ) ;
59+ shutdown ( ) ?;
60+ }
61+
62+ Ok ( ( ) )
5763}
5864
59- fn server ( args : Args ) -> Result < ( ) > {
65+ fn server ( args : Args ) -> Result < bool > {
6066 log:: info!( "Opening HID devices" ) ;
6167
6268 let mut mouse = Mouse :: new ( args. mouse_tesselation_factor . try_into ( ) ?) ?;
@@ -77,6 +83,7 @@ fn server(args: Args) -> Result<()> {
7783
7884 log:: info!( "Started server on {}" , socket. local_addr( ) ?) ;
7985
86+ let mut shutdown_raspberry = false ;
8087 let mut last_input = Instant :: now ( ) ;
8188 let mut idle_move_x = -10 ;
8289 let mut receivers = VecMap :: new ( ) ;
@@ -155,7 +162,10 @@ fn server(args: Args) -> Result<()> {
155162 mouse. reset ( ) ?;
156163 consumer_device. reset ( ) ?;
157164 } ,
158- InputEvent :: Shutdown => log:: info!( "Shutdown" )
165+ InputEvent :: Shutdown => {
166+ shutdown_raspberry = true ;
167+ break ' outer;
168+ }
159169 }
160170 last_input = Instant :: now ( ) ;
161171 // println!("{:?}", event);
@@ -185,7 +195,7 @@ fn server(args: Args) -> Result<()> {
185195
186196 log:: info!( "Shutting down" ) ;
187197
188- Ok ( ( ) )
198+ Ok ( shutdown_raspberry )
189199}
190200
191201struct MioSocket ( UdpSocket ) ;
0 commit comments