summaryrefslogtreecommitdiffstats
path: root/contrib/libdvdnav/A06-reset-mutex.patch
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2010-04-17 19:41:43 +0000
committerjstebbins <[email protected]>2010-04-17 19:41:43 +0000
commitf0761065a31f0921c289085f3e41e583640cef65 (patch)
tree1fe3ea25c74df8675914b3de09d6f251069f60a0 /contrib/libdvdnav/A06-reset-mutex.patch
parentc897a296e89d09ea9b18cd0b9ec56143b8427d5f (diff)
fix some dvdnav hangs
title changes seem to confuse the vm sometimes. so do a dvdnav_reset whenever a title change is going to happen. Also, fix dvdnav_reset since it would deadlock on a mutex when called. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3240 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'contrib/libdvdnav/A06-reset-mutex.patch')
-rw-r--r--contrib/libdvdnav/A06-reset-mutex.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/contrib/libdvdnav/A06-reset-mutex.patch b/contrib/libdvdnav/A06-reset-mutex.patch
new file mode 100644
index 000000000..76f55e348
--- /dev/null
+++ b/contrib/libdvdnav/A06-reset-mutex.patch
@@ -0,0 +1,25 @@
+Index: src/dvdnav.c
+===================================================================
+--- libdvdnav.orig/src/dvdnav.c (revision 1168)
++++ libdvdnav/src/dvdnav.c (working copy)
+@@ -178,9 +178,9 @@
+ #ifdef LOG_DEBUG
+ fprintf(MSG_OUT, "libdvdnav: clearing dvdnav\n");
+ #endif
++ pthread_mutex_unlock(&this->vm_lock);
+ result = dvdnav_clear(this);
+
+- pthread_mutex_unlock(&this->vm_lock);
+ return result;
+ }
+
+@@ -519,7 +519,8 @@
+ }
+
+ /* Check to see if we need to change the currently opened VOB */
+- if((this->position_current.vts != this->position_next.vts) ||
++ if((this->file == NULL) ||
++ (this->position_current.vts != this->position_next.vts) ||
+ (this->position_current.domain != this->position_next.domain)) {
+ dvd_read_domain_t domain;
+ int32_t vtsN;