diff options
author | jstebbins <[email protected]> | 2010-04-17 19:41:43 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2010-04-17 19:41:43 +0000 |
commit | f0761065a31f0921c289085f3e41e583640cef65 (patch) | |
tree | 1fe3ea25c74df8675914b3de09d6f251069f60a0 /contrib/libdvdnav/A06-reset-mutex.patch | |
parent | c897a296e89d09ea9b18cd0b9ec56143b8427d5f (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.patch | 25 |
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; |