summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/client-api-changes.rst2
-rw-r--r--input/ipc-unix.c6
-rw-r--r--libmpv/client.h4
-rw-r--r--player/main.c7
4 files changed, 8 insertions, 11 deletions
diff --git a/DOCS/client-api-changes.rst b/DOCS/client-api-changes.rst
index d7fbfaadf6..5c7f8d7961 100644
--- a/DOCS/client-api-changes.rst
+++ b/DOCS/client-api-changes.rst
@@ -37,6 +37,8 @@ API changes
instead of "no-video=" you should set "video=no".
- be much more permissive what API calls are allowed before
mpv_initialize().
+ - do not override the SIGPIPE signal handler anymore. This was done as
+ workaround for the FFmpeg TLS code, which has been fixed long ago.
--- mpv 0.19.0 ---
1.22 - add stream_cb API for custom protocols
--- mpv 0.18.1 ---
diff --git a/input/ipc-unix.c b/input/ipc-unix.c
index 0f4b7132e4..f5c8886a28 100644
--- a/input/ipc-unix.c
+++ b/input/ipc-unix.c
@@ -20,6 +20,7 @@
#include <unistd.h>
#include <poll.h>
+#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
@@ -97,6 +98,11 @@ static void *client_thread(void *p)
{
pthread_detach(pthread_self());
+ // We don't use MSG_NOSIGNAL because the moldy fruit OS doesn't support it.
+ struct sigaction sa = { .sa_handler = SIG_IGN, .sa_flags = SA_RESTART };
+ sigfillset(&sa.sa_mask);
+ sigaction(SIGPIPE, &sa, NULL);
+
int rc;
struct client_arg *arg = p;
diff --git a/libmpv/client.h b/libmpv/client.h
index b270a6079e..74b5d66ed8 100644
--- a/libmpv/client.h
+++ b/libmpv/client.h
@@ -135,10 +135,6 @@ extern "C" {
* (used through libass), ALSA, FFmpeg, and possibly more.
* - The FPU precision must be set at least to double precision.
* - On Windows, mpv will call timeBeginPeriod(1).
- * - On UNIX, every mpv_initialize() call will block SIGPIPE. This is done
- * because FFmpeg makes unsafe use of OpenSSL and GnuTLS, which can raise
- * this signal under certain circumstances. Once these libraries (or FFmpeg)
- * are fixed, libmpv will not block the signal anymore.
* - On memory exhaustion, mpv will kill the process.
*
* Encoding of filenames
diff --git a/player/main.c b/player/main.c
index 8f85bea257..2f53f4daee 100644
--- a/player/main.c
+++ b/player/main.c
@@ -22,7 +22,6 @@
#include <assert.h>
#include <string.h>
#include <pthread.h>
-#include <signal.h>
#include "config.h"
#include "mpv_talloc.h"
@@ -514,12 +513,6 @@ int mp_initialize(struct MPContext *mpctx, char **options)
if (opts->w32_priority > 0)
SetPriorityClass(GetCurrentProcess(), opts->w32_priority);
#endif
-#ifndef _WIN32
- // Deal with OpenSSL and GnuTLS not using MSG_NOSIGNAL.
- struct sigaction sa = { .sa_handler = SIG_IGN, .sa_flags = SA_RESTART };
- sigfillset(&sa.sa_mask);
- sigaction(SIGPIPE, &sa, NULL);
-#endif
prepare_playlist(mpctx, mpctx->playlist);