diff options
author | Christian Pointner <equinox@spreadspace.org> | 2016-05-25 22:54:21 +0200 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2016-05-25 22:54:21 +0200 |
commit | 0c4e68d5afb47b2e378cf782f289c328c05a11d3 (patch) | |
tree | bb761f3e6509bd52fcecf58ec4a6c5d3dfa4e37f /src/gstdvbbackend.c | |
parent | updated copyright info (diff) |
major cleanup and refactoring
Diffstat (limited to 'src/gstdvbbackend.c')
-rw-r--r-- | src/gstdvbbackend.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/gstdvbbackend.c b/src/gstdvbbackend.c index afe5246..277d16b 100644 --- a/src/gstdvbbackend.c +++ b/src/gstdvbbackend.c @@ -29,6 +29,8 @@ #include <string.h> #include <sys/select.h> +#include <glib.h> +#include <glib-unix.h> #include <gst/gst.h> #include "datatypes.h" @@ -38,6 +40,15 @@ #include "daemon.h" #include "streamer.h" +static gboolean sig_handler_terminate(gpointer user_data) +{ + GMainLoop *loop = (GMainLoop *)user_data; + + log_printf(NOTICE, "signal received, closing application"); + g_main_loop_quit(loop); + return TRUE; +} + static gboolean bus_call(GstBus *bus, GstMessage *msg, gpointer data) { GMainLoop *loop = (GMainLoop *)data; @@ -81,7 +92,7 @@ int main_loop(options_t* opt) log_printf(INFO, "entering main loop"); GMainLoop *loop; - GstElement *pipeline, *source, *sink; + GstElement *pipeline, *source; GstBus *bus; streamer_t streamer; @@ -126,12 +137,13 @@ int main_loop(options_t* opt) log_printf(INFO, "Set State: Playing"); gst_element_set_state(pipeline, GST_STATE_PLAYING); - signal_start(loop); ret = streamer_start(&streamer); if(!ret) { + g_unix_signal_add(SIGHUP, sig_handler_terminate, loop); + g_unix_signal_add(SIGINT, sig_handler_terminate, loop); + g_unix_signal_add(SIGTERM, sig_handler_terminate, loop); g_main_loop_run(loop); streamer_stop(&streamer); - signal_stop(); } log_printf(NOTICE, "Stopping pipeline"); @@ -229,7 +241,6 @@ int main(int argc, char* argv[]) fclose(pid_file); } - signal_init(); gst_init(NULL, NULL); const gchar *nano_str; guint major, minor, micro, nano; |