summaryrefslogtreecommitdiff
path: root/multimedia/handbrake
diff options
context:
space:
mode:
authorryoon <ryoon@pkgsrc.org>2020-02-13 23:12:37 +0000
committerryoon <ryoon@pkgsrc.org>2020-02-13 23:12:37 +0000
commit918d73fa58d25192323af9caca208ebdc14265e4 (patch)
treeade53602be5102987c011c6e50dd288ee2f7c836 /multimedia/handbrake
parent9446ef76b1cbda4d0c682d1bec64fd96a8ffb88e (diff)
downloadpkgsrc-918d73fa58d25192323af9caca208ebdc14265e4.tar.gz
handbrake: Use pthread properly and fix segfault in correct way
* Bump PKGREVISION. * From multimedia/libbluray by kamil@.
Diffstat (limited to 'multimedia/handbrake')
-rw-r--r--multimedia/handbrake/Makefile3
-rw-r--r--multimedia/handbrake/distinfo4
-rw-r--r--multimedia/handbrake/patches/patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch97
3 files changed, 87 insertions, 17 deletions
diff --git a/multimedia/handbrake/Makefile b/multimedia/handbrake/Makefile
index 147c9e11f2f..7353930ad6d 100644
--- a/multimedia/handbrake/Makefile
+++ b/multimedia/handbrake/Makefile
@@ -1,8 +1,9 @@
-# $NetBSD: Makefile,v 1.55 2020/02/12 13:54:56 ryoon Exp $
+# $NetBSD: Makefile,v 1.56 2020/02/13 23:12:37 ryoon Exp $
#
DISTNAME= HandBrake-1.3.1-source
PKGNAME= ${DISTNAME:tl:S/-source//}
+PKGREVISION= 1
CATEGORIES= multimedia
MASTER_SITES= https://download.handbrake.fr/releases/${PKGVERSION_NOREV}/
EXTRACT_SUFX= .tar.bz2
diff --git a/multimedia/handbrake/distinfo b/multimedia/handbrake/distinfo
index 6cc5fd67286..32d3fdc2622 100644
--- a/multimedia/handbrake/distinfo
+++ b/multimedia/handbrake/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.8 2020/02/12 13:54:56 ryoon Exp $
+$NetBSD: distinfo,v 1.9 2020/02/13 23:12:37 ryoon Exp $
SHA1 (handbrake/HandBrake-1.3.1-source.tar.bz2) = 213da9cebb19215d6e7ea49ac390ecc9cb6c749f
RMD160 (handbrake/HandBrake-1.3.1-source.tar.bz2) = 2e586c8dae9d4a8b7c2fcb036fcdbff62f5c26d6
@@ -28,5 +28,5 @@ SHA1 (handbrake/x265_3.2.1.tar.gz) = 0bd4889ff3ad596372ce2338f2d896947a2eec53
RMD160 (handbrake/x265_3.2.1.tar.gz) = 7386c00a49a2fc143cd3c8cea657872235a8ba77
SHA512 (handbrake/x265_3.2.1.tar.gz) = 5cb29b9d4475c1f686f6e31e47ccddde3db1639d5dcf9c058513389a9fdeb35a83b14e30e59498a76dec74bb0b410b6d8f5b1b45d18927be9811bb6a40d8d568
Size (handbrake/x265_3.2.1.tar.gz) = 1426255 bytes
-SHA1 (patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch) = c3ecbaa85bfc23021fd8474774a710f1e9068a18
+SHA1 (patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch) = 8538213d147d2bb9bec455408147bd7bd40df8c2
SHA1 (patch-libhb_fifo.c) = 46c5ec1f2c665da297830c326e703160e3e911d2
diff --git a/multimedia/handbrake/patches/patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch b/multimedia/handbrake/patches/patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch
index 7019a7b8479..ffe3fe32af2 100644
--- a/multimedia/handbrake/patches/patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch
+++ b/multimedia/handbrake/patches/patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch
@@ -1,27 +1,96 @@
-$NetBSD: patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch,v 1.1 2020/02/12 13:54:56 ryoon Exp $
+$NetBSD: patch-contrib_libbluray_P04-netbsd-pthread__equal-check.patch,v 1.2 2020/02/13 23:12:37 ryoon Exp $
-* Fix segafult on recent NetBSD-current.
+* mutex: Switch the POSIX backend to PTHREAD_MUTEX_RECURSIVE
+ https://code.videolan.org/videolan/libbluray/merge_requests/17
+ via multimedia/libbluray
---- contrib/libbluray/P04-netbsd-pthread_equal-check.patch.orig 2020-02-11 08:09:40.072157575 +0000
+--- contrib/libbluray/P04-netbsd-pthread_equal-check.patch.orig 2020-02-13 18:46:05.315624115 +0000
+++ contrib/libbluray/P04-netbsd-pthread_equal-check.patch
-@@ -0,0 +1,20 @@
-+--- libbluray/src/util/mutex.c.orig 2019-06-07 18:00:28.000000000 +0000
-++++ libbluray/src/util/mutex.c
-+@@ -89,7 +89,7 @@ static int _mutex_init(MUTEX_IMPL *p)
+@@ -0,0 +1,87 @@
++--- libbluray-1.1.2/src/util/mutex.c.orig 2019-06-07 18:00:28.000000000 +0000
+++++ libbluray-1.2.2/src/util/mutex.c
++@@ -68,18 +68,16 @@ static int _mutex_destroy(MUTEX_IMPL *p)
++
++ #elif defined(HAVE_PTHREAD_H)
++
++-typedef struct {
++- int lock_count;
++- pthread_t owner;
++- pthread_mutex_t mutex;
++-} MUTEX_IMPL;
+++typedef pthread_mutex_t MUTEX_IMPL;
++
++ static int _mutex_init(MUTEX_IMPL *p)
++ {
++- p->owner = (pthread_t)-1;
++- p->lock_count = 0;
+++ pthread_mutexattr_t attr;
++
++- if (pthread_mutex_init(&p->mutex, NULL)) {
+++ pthread_mutexattr_init(&attr);
+++ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+++
+++ if (pthread_mutex_init(p, &attr)) {
++ BD_DEBUG(DBG_BLURAY|DBG_CRIT, "pthread_mutex_init() failed !\n");
++ return -1;
++ }
++@@ -89,40 +87,17 @@ static int _mutex_init(MUTEX_IMPL *p)
+
+ static int _mutex_lock(MUTEX_IMPL *p)
+ {
+- if (pthread_equal(p->owner, pthread_self())) {
-++ if (p->owner == pthread_self()) {
-+ /* recursive lock */
-+ p->lock_count++;
-+ return 0;
-+@@ -108,7 +108,7 @@ static int _mutex_lock(MUTEX_IMPL *p)
++- /* recursive lock */
++- p->lock_count++;
++- return 0;
++- }
++-
++- if (pthread_mutex_lock(&p->mutex)) {
+++ if (pthread_mutex_lock(p)) {
++ BD_DEBUG(DBG_BLURAY|DBG_CRIT, "pthread_mutex_lock() failed !\n");
++ return -1;
++ }
++
++- p->owner = pthread_self();
++- p->lock_count = 1;
++-
++ return 0;
++ }
+
+ static int _mutex_unlock(MUTEX_IMPL *p)
+ {
+- if (!pthread_equal(p->owner, pthread_self())) {
-++ if (!(p->owner == pthread_self())) {
-+ BD_DEBUG(DBG_BLURAY|DBG_CRIT, "bd_mutex_unlock(): not owner !\n");
++- BD_DEBUG(DBG_BLURAY|DBG_CRIT, "bd_mutex_unlock(): not owner !\n");
++- return -1;
++- }
++-
++- p->lock_count--;
++- if (p->lock_count > 0) {
++- return 0;
++- }
++-
++- /* unlock */
++-
++- p->owner = (pthread_t)-1;
++-
++- if (pthread_mutex_unlock(&p->mutex)) {
+++ if (pthread_mutex_unlock(p)) {
++ BD_DEBUG(DBG_BLURAY|DBG_CRIT, "pthread_mutex_unlock() failed !\n");
++ return -1;
++ }
++@@ -132,10 +107,7 @@ static int _mutex_unlock(MUTEX_IMPL *p)
++
++ static int _mutex_destroy(MUTEX_IMPL *p)
++ {
++- _mutex_lock(p);
++- _mutex_unlock(p);
++-
++- if (pthread_mutex_destroy(&p->mutex)) {
+++ if (pthread_mutex_destroy(p)) {
++ BD_DEBUG(DBG_BLURAY|DBG_CRIT, "pthread_mutex_destroy() failed !\n");
+ return -1;
+ }
++@@ -193,4 +165,3 @@ int bd_mutex_destroy(BD_MUTEX *p)
++ X_FREE(p->impl);
++ return 0;
++ }
++-