예제 #1
0
파일: osd.c 프로젝트: mahaserver/MHSVLC
void __osd_MenuDelete( vlc_object_t *p_this, osd_menu_t *p_osd )
{
    vlc_value_t lockval;

    if( !p_osd || !p_this ) return;

    var_Get( p_this->p_libvlc, "osd_mutex", &lockval );
    vlc_mutex_lock( lockval.p_address );

    if( vlc_internals( VLC_OBJECT(p_osd) )->i_refcount == 1 )
    {
        var_Destroy( p_osd, "osd-menu-visible" );
        var_Destroy( p_osd, "osd-menu-update" );
        osd_ParserUnload( p_osd );
    }

    vlc_object_release( p_osd );
    if( vlc_internals( VLC_OBJECT(p_osd) )->i_refcount > 0 )
    {
        vlc_mutex_unlock( lockval.p_address );
        return;
    }
    p_osd = NULL;
    vlc_mutex_unlock( lockval.p_address );
}
예제 #2
0
void osd_MenuDelete( vlc_object_t *p_this, osd_menu_t *p_osd )
{
    if( !p_osd || !p_this ) return;

    vlc_mutex_lock( &osd_mutex );

    if( vlc_internals( VLC_OBJECT(p_osd) )->i_refcount == 1 )
    {
        var_Destroy( p_osd, "osd-menu-visible" );
        var_Destroy( p_osd, "osd-menu-update" );
        osd_ParserUnload( p_osd );
        var_SetAddress( p_this->p_libvlc, "osd-object", NULL );
    }

    vlc_object_release( p_osd );
    vlc_mutex_unlock( &osd_mutex );
}
예제 #3
0
파일: osd.c 프로젝트: paa/vlc
void osd_MenuDelete( vlc_object_t *p_this, osd_menu_t *p_osd )
{
    vlc_mutex_t *p_lock;

    if( !p_osd || !p_this ) return;

    p_lock = osd_GetMutex( p_this );
    vlc_mutex_lock( p_lock );

    if( vlc_internals( VLC_OBJECT(p_osd) )->i_refcount == 1 )
    {
        vlc_value_t val;

        var_Destroy( p_osd, "osd-menu-visible" );
        var_Destroy( p_osd, "osd-menu-update" );
        osd_ParserUnload( p_osd );
        val.p_address = NULL;
        var_Set( p_this->p_libvlc, "osd", val );
    }

    vlc_object_release( p_osd );
    vlc_mutex_unlock( p_lock );
}