]> git.sesse.net Git - vlc/blobdiff - bin/vlc.c
Use var_InheritString for --decklink-video-connection.
[vlc] / bin / vlc.c
index e317df119c86b5d2ce1f59a286ae513e5ef6d085..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.
@@ -166,11 +171,10 @@ int main( int i_argc, const char *ppsz_argv[] )
     pthread_sigmask (SIG_BLOCK, &set, NULL);
 
     /* Note that FromLocale() can be used before libvlc is initialized */
-    const char *argv[i_argc + 4];
+    const char *argv[i_argc + 3];
     int argc = 0;
 
     argv[argc++] = "--no-ignore-config";
-    argv[argc++] = "--user-agent=\"VLC media player\"";
 #ifdef TOP_BUILDDIR
     argv[argc++] = FromLocale ("--plugin-path="TOP_BUILDDIR"/modules");
 #endif
@@ -199,6 +203,8 @@ int main( int i_argc, const char *ppsz_argv[] )
     if (vlc == NULL)
         goto out;
 
+    libvlc_set_user_agent (vlc, "VLC media player", "VLC/"PACKAGE_VERSION);
+
 #if !defined (HAVE_MAEMO) && !defined __APPLE__
     libvlc_add_intf (vlc, "globalhotkeys,none");
 #endif
@@ -220,22 +226,24 @@ 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)
         libvlc_release (vlc);
-    for (int i = 2; i < argc; i++)
+    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);
 }