Mercurial > libdvdnav.hg
changeset 57:e1505b603eb8 src
Fix problem with Still menus that have NO BUTTONS.
Problem found on DVD: "The Abyss, Special Edition, Disk 2"
in the PERSONNEL LOCKERS.
author | jcdutton |
---|---|
date | Sat, 06 Jul 2002 11:10:11 +0000 |
parents | 507b86c503d1 |
children | 18af52093d13 |
files | highlight.c |
diffstat | 1 files changed, 20 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/highlight.c Sat Jul 06 10:14:04 2002 +0000 +++ b/highlight.c Sat Jul 06 11:10:11 2002 +0000 @@ -212,7 +212,26 @@ pthread_mutex_unlock(&this->vm_lock); return S_ERR; } +/* FIXME: dvdnav_button_select should really return a + * special case for explicit NO-BUTTONS. + */ if(dvdnav_button_select(this, button) != S_OK) { + /* Special code to handle still menus with no buttons. + * the navigation is expected to report to the appicatino that a STILL is + * underway. In turn, the application is supposed to report to the user + * that the playback is pause. The user is then expected to undo the pause. + * ie: hit play. At that point, the navigation should release the still and + * go to the next Cell. + * Explanation by Mathieu Lavage <mathieu_lacage@realmagic.fr> + * Code added by jcdutton. + */ + if (this->position_current.still != 0) { + /* In still, but no buttons. */ + vm_get_next_cell(this->vm); + this->position_current.still = 0; + pthread_mutex_unlock(&this->vm_lock); + return S_OK; + } pthread_mutex_unlock(&this->vm_lock); return S_ERR; } @@ -245,6 +264,7 @@ #endif /* Set the highlight SPRM if the passed button was valid*/ + /* FIXME: this->pci should be provided by the application. */ if((button <= 0) || (button > this->pci.hli.hl_gi.btn_ns)) { printerrf("Unable to select button number %i as it doesn't exist", button);