From: James Courtier-D. <Ja...@su...> - 2002-06-28 19:38:22
|
Michael Roitzsch wrote: >Hi there, > > > >>I get this too but the menu highlight disappears after about 10 >>seconds. >> >>Using exactly the same versions as below. >> >> >> >>>Some of you were talking about a disappearing menu highlight. Maybe >>>I got a similar problem. But it's somehow the other way round. When >>>I click on the "Play Movie" or "Chapter X" button the movie begins >>>to play as it should, but the menu highlight does not disappear. >>>That is I'd have to watch the entire movie with the menu highlight. >>>I experience this problem with every DVD I have, so it's not a >>>problem of a specific DVD. >>> >>> > >Could one of you (which - by first order logic - doesn't exclude both;) >apply the attached patch to xine-lib, recompile, reinstall and try >again? > >Michael > > > >------------------------------------------------------------------------ > >Index: src/libspudec/spu.c >=================================================================== >RCS file: /cvsroot/xine/xine-lib/src/libspudec/spu.c,v >retrieving revision 1.39 >diff -u -r1.39 spu.c >--- src/libspudec/spu.c 24 Apr 2002 20:26:07 -0000 1.39 >+++ src/libspudec/spu.c 28 Jun 2002 17:00:15 -0000 >@@ -323,6 +323,11 @@ > #endif > pthread_mutex_lock(&this->nav_pci_lock); > if (this->pci.hli.hl_gi.hli_s_ptm == this->spudec_stream_state[stream_id].pts) { >+ if (this->state.visible == EVENT_HIDE_MENU) { >+ /* menus are hidden via nav packet decoding, not here */ >+ pthread_mutex_unlock(&this->nav_pci_lock); >+ continue; >+ } > if ( this->pci.hli.hl_gi.fosl_btnn > 0) { > spu_button_t spu_button; > xine_spu_event_t spu_event; >Index: src/libspudec/xine_decoder.c >=================================================================== >RCS file: /cvsroot/xine/xine-lib/src/libspudec/xine_decoder.c,v >retrieving revision 1.69 >diff -u -r1.69 xine_decoder.c >--- src/libspudec/xine_decoder.c 12 Jun 2002 12:22:36 -0000 1.69 >+++ src/libspudec/xine_decoder.c 28 Jun 2002 17:00:17 -0000 >@@ -236,9 +236,12 @@ > free(overlay); > break; > } >- if (but->show == 2) { >- this->button_filter = 2; >- } >+ /* Why should we filter buttons after but->show == 2, >+ * which usually means the button was pressed? >+ * if (but->show == 2) { >+ * this->button_filter = 2; >+ * } >+ */ > I will answer this. When a button is pressed, dvdnav will then start loading the next menu. You want to stop listening to button input from the user after they have activated a button. You only want to start listening again when the new menu appears. So, if the highlighted button is greeen, but when you select a menu item it goes red. You want the menu button to stay red, until the next new menu appears. Without this bit of code, when using the mouse to select buttons, it lets you select other buttons on the first menu even after activating one of them. So this code is basically just to make sure that what the person sees is a red highlight before he menu disappears, and the next one appears. > pthread_mutex_lock(&this->nav_pci_lock); > overlay_event->object.handle = this->menu_handle; > overlay_event->object.pts = this->pci.hli.hl_gi.hli_s_ptm; > > Cheers James |