# HG changeset patch # User jcdutton # Date 1025953811 0 # Node ID e1505b603eb8ba120d2bb7479462b6586ad19ac3 # Parent 507b86c503d1a97a9207188bac0eeaaf4585d966 Fix problem with Still menus that have NO BUTTONS. Problem found on DVD: "The Abyss, Special Edition, Disk 2" in the PERSONNEL LOCKERS. diff -r 507b86c503d1 -r e1505b603eb8 highlight.c --- 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 + * 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);