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.
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
if (vlc == NULL)
goto out;
-#if !defined (HAVE_MAEMO)
+ libvlc_set_user_agent (vlc, "VLC media player", "VLC/"PACKAGE_VERSION);
+
+#if !defined (HAVE_MAEMO) && !defined __APPLE__
libvlc_add_intf (vlc, "globalhotkeys,none");
#endif
if (libvlc_add_intf (vlc, NULL))
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);
}