X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess%2Fdvdnav.c;h=99644665da29c6d53c01fabd7ad39439675e5c00;hb=fa81ade13492bab2a809e6c8990e211f04aecab8;hp=e1ede798ab7e999d7fa0a039ed096e64b613af7b;hpb=6da90a1716250d282f16dc6bc9dacec5b9514caf;p=vlc diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c index e1ede798ab..99644665da 100644 --- a/modules/access/dvdnav.c +++ b/modules/access/dvdnav.c @@ -29,7 +29,8 @@ # include "config.h" #endif -#include +#include +#include #include #include #include @@ -51,7 +52,7 @@ #endif #include "vlc_keys.h" -#include "iso_lang.h" +#include "vlc_iso_lang.h" /* FIXME we should find a better way than including that */ #include "../../src/text/iso-639_def.h" @@ -83,8 +84,8 @@ static int Open ( vlc_object_t * ); static void Close( vlc_object_t * ); vlc_module_begin(); - set_shortname( _("DVD with menus") ); - set_description( _("DVDnav Input") ); + set_shortname( N_("DVD with menus") ); + set_description( N_("DVDnav Input") ); set_category( CAT_INPUT ); set_subcategory( SUBCAT_INPUT_ACCESS ); add_integer( "dvdnav-angle", 1, NULL, ANGLE_TEXT, @@ -928,6 +929,7 @@ static void ButtonUpdate( demux_t *p_demux, bool b_mode ) vlc_mutex_t *p_mutex = val.p_address; dvdnav_highlight_area_t hl; int32_t i_button; + bool b_button_ok; if( dvdnav_get_current_highlight( p_sys->dvdnav, &i_button ) != DVDNAV_STATUS_OK ) @@ -936,18 +938,20 @@ static void ButtonUpdate( demux_t *p_demux, bool b_mode ) return; } + b_button_ok = false; if( i_button > 0 && i_title == 0 ) { - int i; pci_t *pci = dvdnav_get_current_nav_pci( p_sys->dvdnav ); - dvdnav_get_highlight_area( pci, i_button, b_mode, &hl ); - + b_button_ok = dvdnav_get_highlight_area( pci, i_button, b_mode, &hl ) == DVDNAV_STATUS_OK; + } + if( b_button_ok ) + { + int i; for( i = 0; i < 4; i++ ) { uint32_t i_yuv = p_sys->clut[(hl.palette>>(16+i*4))&0x0f]; - uint8_t i_alpha = (hl.palette>>(i*4))&0x0f; - i_alpha = i_alpha == 0xf ? 0xff : i_alpha << 4; + uint8_t i_alpha = ( (hl.palette>>(i*4))&0x0f ) * 0xff / 0xf; p_sys->palette[i][0] = (i_yuv >> 16) & 0xff; p_sys->palette[i][1] = (i_yuv >> 0) & 0xff; @@ -1233,7 +1237,7 @@ static int EventThread( vlc_object_t *p_this ) var_AddCallback( p_ev->p_libvlc, "key-action", EventKey, p_ev ); /* main loop */ - while( !p_ev->b_die ) + while( vlc_object_alive (p_ev) ) { bool b_activated = false; @@ -1242,9 +1246,6 @@ static int EventThread( vlc_object_t *p_this ) { pci_t *pci = dvdnav_get_current_nav_pci( p_sys->dvdnav ); - vlc_value_t valk; - int i; - vlc_mutex_lock( &p_ev->lock ); switch( p_ev->i_key_action ) { @@ -1299,7 +1300,7 @@ static int EventThread( vlc_object_t *p_this ) p_ev->b_clicked = false; vlc_mutex_unlock( &p_ev->lock ); } - if( p_vout && p_vout->b_die ) + if( p_vout && !vlc_object_alive (p_vout) ) { var_DelCallback( p_vout, "mouse-moved", EventMouse, p_ev ); var_DelCallback( p_vout, "mouse-clicked", EventMouse, p_ev );