Unblock death signals if signals interface is absent
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Thu, 25 Sep 2008 15:34:13 +0000 (18:34 +0300)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Thu, 25 Sep 2008 15:34:13 +0000 (18:34 +0300)
By the way, the exception handler claims the exception is not handled!

bin/vlc.c

index 46eba46..f2d820f 100644 (file)
--- a/bin/vlc.c
+++ b/bin/vlc.c
@@ -116,6 +116,8 @@ int main( int i_argc, const char *ppsz_argv[] )
 
     /* Block all these signals */
     pthread_sigmask (SIG_BLOCK, &set, NULL);
+    sigdelset (&set, SIGPIPE);
+    sigdelset (&set, SIGCHLD);
 
     /* Note that FromLocale() can be used before libvlc is initialized */
     for (int i = 0; i < i_argc; i++)
@@ -133,7 +135,12 @@ int main( int i_argc, const char *ppsz_argv[] )
 
     if (vlc != NULL)
     {
-        libvlc_add_intf (vlc, "signals", &dummy);
+        libvlc_add_intf (vlc, "signals", &ex);
+        if (libvlc_exception_raised (&ex))
+        {
+            libvlc_exception_clear (&ex);
+            pthread_sigmask (SIG_UNBLOCK, &set, NULL);
+        }
         libvlc_add_intf (vlc, NULL, &ex);
         libvlc_playlist_play (vlc, -1, 0, NULL, &dummy);
         libvlc_wait (vlc);