X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=bin%2Fvlc.c;fp=bin%2Fvlc.c;h=c8a05bae43d20b9bc8cbe8d2333ae99344aae2d1;hb=e1c2b18a4dfbf07e32730ac1fc3a6ed153099ca5;hp=40fa96fbcaeb1d5636c0f1ffce27b66ae18a7f05;hpb=de68b12937589cdcbe5143f162dabd7654969362;p=vlc diff --git a/bin/vlc.c b/bin/vlc.c index 40fa96fbca..c8a05bae43 100644 --- a/bin/vlc.c +++ b/bin/vlc.c @@ -74,6 +74,11 @@ static void vlc_kill (void *data) pthread_kill (*ps, SIGTERM); } +static void exit_timeout (int signum) +{ + (void) signum; + signal (SIGINT, SIG_DFL); +} /***************************************************************************** * main: parse command line, start interface and spawn threads. @@ -221,6 +226,15 @@ int main( int i_argc, const char *ppsz_argv[] ) sigwait (&set, &signum); while (signum == SIGCHLD); + /* Restore default signal behaviour after 3 seconds */ + sigemptyset (&set); + sigaddset (&set, SIGINT); + sigaddset (&set, SIGALRM); + signal (SIGINT, SIG_IGN); + signal (SIGALRM, exit_timeout); + pthread_sigmask (SIG_UNBLOCK, &set, NULL); + alarm (3); + /* Cleanup */ out: if (vlc != NULL)