]> git.sesse.net Git - vlc/blobdiff - bin/vlc.c
Use var_InheritString for --decklink-video-connection.
[vlc] / bin / vlc.c
index 40fa96fbcaeb1d5636c0f1ffce27b66ae18a7f05..085aa3afda453b37dd9cf8422b42c05b5c55c5b3 100644 (file)
--- 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.
@@ -198,7 +203,7 @@ int main( int i_argc, const char *ppsz_argv[] )
     if (vlc == NULL)
         goto out;
 
-     libvlc_set_user_agent (vlc, "VLC media player", NULL);
+    libvlc_set_user_agent (vlc, "VLC media player", "VLC/"PACKAGE_VERSION);
 
 #if !defined (HAVE_MAEMO) && !defined __APPLE__
     libvlc_add_intf (vlc, "globalhotkeys,none");
@@ -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)
@@ -228,15 +242,8 @@ out:
     for (int i = 1; i < argc; i++)
         LocaleFree (argv[i]);
 
-#ifdef RTLD_NOLOAD
-    /* Avoid crash in KIO scheduler cleanup. */
-    /* This is ugly, but we get way too many crash reports due to this. */
-    if (dlopen ("libkio.so.5", RTLD_LAZY|RTLD_LOCAL|RTLD_NOLOAD) != NULL)
-    {
-        fprintf (stderr, "KIO present. Unclean shutdown!\n"
-           " (see http://bugs.kde.org/show_bug.cgi?id=234484 for details)\n");
-        _exit (0);
-    }
-#endif
-    return 0;
+    /* Do not run exit handlers. Some of them are buggy (e.g. KDE IO scheduler)
+     * and crash. Also some will crash because their library may be already
+     * unloaded (dlclose()). */
+    _exit (0);
 }