# HG changeset patch # User William Pitcock # Date 1215294995 18000 # Node ID 5db8a7848565e6da326b8ae6d347c0fda599ec40 # Parent a5707f5711006abd2539edffce6571f07b13d666# Parent cd1e4d4aa0b925bee218d6eaa889a3c871ee1f08 Automated merge with ssh://hg.atheme.org//hg/audacious diff -r a5707f571100 -r 5db8a7848565 configure.ac --- a/configure.ac Sat Jul 05 15:45:56 2008 +0200 +++ b/configure.ac Sat Jul 05 16:56:35 2008 -0500 @@ -67,7 +67,7 @@ dnl Check for headers and functions dnl =============================== AC_CHECK_HEADERS([unistd.h fcntl.h sys/ioctl.h fnmatch.h limits.h wchar.h fts.h execinfo.h]) -AC_CHECK_FUNCS([mkdtemp getmntinfo statvfs strtoul lrintf]) +AC_CHECK_FUNCS([mkdtemp getmntinfo statvfs strtoul lrintf signalfd]) ### --------------------------------------------------------------------------- diff -r a5707f571100 -r 5db8a7848565 src/audacious/signals.c --- a/src/audacious/signals.c Sat Jul 05 15:45:56 2008 +0200 +++ b/src/audacious/signals.c Sat Jul 05 16:56:35 2008 -0500 @@ -85,6 +85,8 @@ abort(); } +#ifndef HAVE_SIGNALFD + static void * signal_process_signals (void *data) { @@ -172,6 +174,58 @@ linuxthread_signal_number = signal_number; } +#else + +#include + +static gpointer +signal_process_signals(gpointer data) +{ + struct signalfd_siginfo d; + sigset_t waitset; + int sigfd; + + sigemptyset(&waitset); + sigaddset(&waitset, SIGPIPE); + sigaddset(&waitset, SIGSEGV); + sigaddset(&waitset, SIGINT); + sigaddset(&waitset, SIGTERM); + + sigfd = signalfd(-1, &waitset, 0); + + while (read(sigfd, &d, sizeof(struct signalfd_siginfo)) > 0) + { + switch(d.ssi_signo) + { + case SIGPIPE: + /* + * do something. + */ + break; + + case SIGSEGV: + signal_process_segv(); + break; + + case SIGINT: + g_print("Audacious has received SIGINT and is shutting down.\n"); + aud_quit(); + break; + + case SIGTERM: + g_print("Audacious has received SIGTERM and is shutting down.\n"); + aud_quit(); + break; + } + } + + close(sigfd); + + return NULL; +} + +#endif + static SignalHandler signal_install_handler_full (gint signal_number, SignalHandler handler,