static void osd_UpdateState( osd_menu_state_t *, int, int, int, int, picture_t * );\r
static inline osd_state_t *osd_VolumeStateChange( osd_state_t *, int );\r
static int osd_VolumeStep( vlc_object_t *, int, int );\r
+static vlc_bool_t osd_isVisible( osd_menu_t *p_osd );\r
+\r
+static vlc_bool_t osd_isVisible( osd_menu_t *p_osd )\r
+{\r
+ vlc_value_t val;\r
+\r
+ var_Get( p_osd, "osd-menu-visible", &val );\r
+ return val.b_bool;\r
+}\r
\r
/*****************************************************************************\r
* OSD menu Funtions\r
osd_menu_t *p_osd = NULL;\r
osd_button_t *p_button = NULL;\r
vlc_value_t lockval;\r
- \r
+\r
if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )\r
{\r
msg_Err( p_this, "osd_MenuNext failed" );\r
return;\r
}\r
- \r
+\r
+ if( osd_isVisible( p_osd ) == VLC_FALSE )\r
+ {\r
+ vlc_object_release( (vlc_object_t*) p_osd );\r
+ return;\r
+ }\r
+\r
var_Get( p_this->p_libvlc, "osd_mutex", &lockval );\r
vlc_mutex_lock( lockval.p_address );\r
- \r
+\r
#if defined(OSD_MENU_DEBUG)\r
msg_Dbg( p_osd, "select" );\r
#endif\r
vlc_mutex_unlock( lockval.p_address );\r
__osd_MenuUp( p_this ); /* "menu select" means go to menu item above. */\r
return;\r
- } \r
+ }\r
if( p_button && p_button->p_down)\r
- { \r
+ {\r
vlc_object_release( (vlc_object_t*) p_osd );\r
vlc_mutex_unlock( lockval.p_address );\r
__osd_MenuDown( p_this ); /* "menu select" means go to menu item below. */\r
#endif\r
}\r
vlc_object_release( (vlc_object_t*) p_osd );\r
- vlc_mutex_unlock( lockval.p_address ); \r
-} \r
+ vlc_mutex_unlock( lockval.p_address );\r
+}\r
\r
void __osd_MenuNext( vlc_object_t *p_this )\r
{\r
osd_menu_t *p_osd = NULL;\r
osd_button_t *p_button = NULL;\r
vlc_value_t lockval;\r
- \r
+\r
if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )\r
{\r
msg_Err( p_this, "osd_MenuNext failed" );\r
return;\r
}\r
- \r
+\r
+ if( osd_isVisible( p_osd ) == VLC_FALSE )\r
+ {\r
+ vlc_object_release( (vlc_object_t*) p_osd );\r
+ return;\r
+ }\r
+\r
var_Get( p_this->p_libvlc, "osd_mutex", &lockval );\r
vlc_mutex_lock( lockval.p_address );\r
- \r
+\r
p_button = p_osd->p_state->p_visible;\r
if( p_button )\r
{\r
p_osd->p_state->p_visible = p_button->p_next;\r
else\r
p_osd->p_state->p_visible = p_osd->p_button;\r
- \r
+\r
if( !p_osd->p_state->p_visible->b_range ) \r
p_osd->p_state->p_visible->p_current_state =\r
osd_StateChange( p_osd->p_state->p_visible->p_states, OSD_BUTTON_SELECT );\r
- \r
+\r
osd_UpdateState( p_osd->p_state, \r
p_osd->p_state->p_visible->i_x, p_osd->p_state->p_visible->i_y,\r
p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,\r
osd_SetMenuUpdate( p_osd, VLC_TRUE );\r
}\r
#if defined(OSD_MENU_DEBUG)\r
- msg_Dbg( p_osd, "direction right [button %s]", p_osd->p_state->p_visible->psz_action ); \r
+ msg_Dbg( p_osd, "direction right [button %s]", p_osd->p_state->p_visible->psz_action );\r
#endif\r
- \r
+\r
vlc_object_release( (vlc_object_t*) p_osd );\r
vlc_mutex_unlock( lockval.p_address );\r
}\r
osd_menu_t *p_osd = NULL;\r
osd_button_t *p_button = NULL;\r
vlc_value_t lockval;\r
- \r
+\r
if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )\r
{\r
msg_Err( p_this, "osd_MenuPrev failed" );\r
return;\r
}\r
\r
+ if( osd_isVisible( p_osd ) == VLC_FALSE )\r
+ {\r
+ vlc_object_release( (vlc_object_t*) p_osd );\r
+ return;\r
+ }\r
+\r
var_Get( p_this->p_libvlc, "osd_mutex", &lockval );\r
vlc_mutex_lock( lockval.p_address );\r
- \r
+\r
p_button = p_osd->p_state->p_visible;\r
if( p_button )\r
- { \r
+ {\r
if( !p_button->b_range ) \r
p_button->p_current_state = osd_StateChange( p_button->p_states, OSD_BUTTON_UNSELECT );\r
if( p_button->p_prev )\r
p_osd->p_state->p_visible = p_button->p_prev;\r
else\r
- p_osd->p_state->p_visible = p_osd->p_last_button; \r
- \r
+ p_osd->p_state->p_visible = p_osd->p_last_button;\r
+\r
if( !p_osd->p_state->p_visible->b_range ) \r
p_osd->p_state->p_visible->p_current_state =\r
osd_StateChange( p_osd->p_state->p_visible->p_states, OSD_BUTTON_SELECT );\r
- \r
+\r
osd_UpdateState( p_osd->p_state, \r
p_osd->p_state->p_visible->i_x, p_osd->p_state->p_visible->i_y,\r
p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,\r
osd_SetMenuUpdate( p_osd, VLC_TRUE );\r
}\r
#if defined(OSD_MENU_DEBUG)\r
- msg_Dbg( p_osd, "direction left [button %s]", p_osd->p_state->p_visible->psz_action ); \r
+ msg_Dbg( p_osd, "direction left [button %s]", p_osd->p_state->p_visible->psz_action );\r
#endif\r
- \r
+\r
vlc_object_release( (vlc_object_t*) p_osd );\r
vlc_mutex_unlock( lockval.p_address );\r
}\r
osd_menu_t *p_osd = NULL;\r
osd_button_t *p_button = NULL;\r
vlc_value_t lockval;\r
-#if defined(OSD_MENU_DEBUG) \r
+#if defined(OSD_MENU_DEBUG)\r
vlc_value_t val;\r
#endif\r
- \r
+\r
if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )\r
{\r
msg_Err( p_this, "osd_MenuDown failed" );\r
return;\r
}\r
- \r
+\r
+ if( osd_isVisible( p_osd ) == VLC_FALSE )\r
+ {\r
+ vlc_object_release( (vlc_object_t*) p_osd );\r
+ return;\r
+ }\r
+\r
var_Get( p_this->p_libvlc, "osd_mutex", &lockval );\r
vlc_mutex_lock( lockval.p_address );\r
\r
{\r
p_button->p_current_state = osd_StateChange( p_button->p_states, OSD_BUTTON_SELECT );\r
if( p_button->p_up )\r
- p_osd->p_state->p_visible = p_button->p_up; \r
+ p_osd->p_state->p_visible = p_button->p_up;\r
}\r
- \r
+\r
if( p_button->b_range && p_osd->p_state->p_visible->b_range ) \r
- { \r
+ {\r
osd_state_t *p_temp = p_osd->p_state->p_visible->p_current_state;\r
if( p_temp && p_temp->p_next )\r
p_osd->p_state->p_visible->p_current_state = p_temp->p_next;\r
}\r
else if( !p_osd->p_state->p_visible->b_range )\r
- { \r
+ {\r
p_osd->p_state->p_visible->p_current_state =\r
osd_StateChange( p_osd->p_state->p_visible->p_states, OSD_BUTTON_SELECT );\r
- } \r
- \r
+ }\r
+\r
osd_UpdateState( p_osd->p_state, \r
p_osd->p_state->p_visible->i_x, p_osd->p_state->p_visible->i_y,\r
p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,\r
}\r
}\r
#if defined(OSD_MENU_DEBUG)\r
- msg_Dbg( p_osd, "direction up [button %s]", p_osd->p_state->p_visible->psz_action ); \r
-#endif \r
- \r
+ msg_Dbg( p_osd, "direction up [button %s]", p_osd->p_state->p_visible->psz_action );\r
+#endif\r
+\r
vlc_object_release( (vlc_object_t*) p_osd );\r
vlc_mutex_unlock( lockval.p_address );\r
}\r
msg_Err( p_this, "osd_MenuDown failed" );\r
return;\r
}\r
- \r
+\r
+ if( osd_isVisible( p_osd ) == VLC_FALSE )\r
+ {\r
+ vlc_object_release( (vlc_object_t*) p_osd );\r
+ return;\r
+ }\r
+\r
var_Get( p_this->p_libvlc, "osd_mutex", &lockval );\r
vlc_mutex_lock( lockval.p_address );\r
\r