From 22190faeace11d58b452d0c5dea8b7c613c08705 Mon Sep 17 00:00:00 2001 From: Sebastian Reichel Date: Fri, 5 Oct 2012 22:26:47 +0200 Subject: play audio on shutdown (GH-13) --- src/main.vala | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'src/main.vala') diff --git a/src/main.vala b/src/main.vala index eccd171..eff3a9d 100644 --- a/src/main.vala +++ b/src/main.vala @@ -17,6 +17,7 @@ public Device dev; public Database db; public AudioPlayer audio; public CSVMemberFile csvimport; +public MainLoop loop; public static int main(string[] args) { Gst.init(ref args); @@ -26,9 +27,15 @@ public static int main(string[] args) { return 1; } - dev = new Device(args[1], 9600, 8, 1); - db = new Database("shop.db"); + /* handle unix signals */ + Unix.signal_add(Posix.SIGTERM, handle_signals); + Unix.signal_add(Posix.SIGINT, handle_signals); + + + dev = new Device(args[1], 9600, 8, 1); + db = new Database("shop.db"); audio = new AudioPlayer(); + loop = new MainLoop(); dev.received_barcode.connect((data) => { if(interpret(data)) @@ -42,11 +49,19 @@ public static int main(string[] args) { new WebServer(); /* run mainloop */ - new MainLoop().run(); + loop.run(); + + write_to_log("Stopping Shop System"); + audio.play("system/shutdown.ogg"); - /* call destructors */ - dev = null; - db = null; + /* we need to run the mainloop to play audio */ + audio.end_of_stream.connect(() => { loop.quit(); }); + loop.run(); + + /* explicitly call destructors */ + dev = null; + db = null; + audio = null; return 0; } @@ -117,3 +132,8 @@ public static bool interpret(string data) { } } } + +bool handle_signals() { + loop.quit(); + return false; +} -- cgit v1.2.3