-static tls_t *
-tls_Init( vlc_object_t *p_this )
-{
- tls_t *p_tls;
- vlc_value_t lockval;
-
- var_Create( p_this->p_libvlc, "tls_mutex", VLC_VAR_MUTEX );
- var_Get( p_this->p_libvlc, "tls_mutex", &lockval );
- vlc_mutex_lock( lockval.p_address );
-
- p_tls = vlc_object_find( p_this, VLC_OBJECT_TLS, FIND_ANYWHERE );
-
- if( p_tls == NULL )
- {
- p_tls = vlc_object_create( p_this, VLC_OBJECT_TLS );
- if( p_tls == NULL )
- {
- vlc_mutex_unlock( lockval.p_address );
- return NULL;
- }
-
- p_tls->p_module = module_Need( p_tls, "tls", 0, 0 );
- if( p_tls->p_module == NULL )
- {
- msg_Err( p_tls, "TLS/SSL provider not found" );
- vlc_mutex_unlock( lockval.p_address );
- vlc_object_destroy( p_tls );
- return NULL;
- }
-
- vlc_object_attach( p_tls, p_this->p_libvlc );
- vlc_object_yield( p_tls );
- msg_Dbg( p_tls, "TLS/SSL provider initialized" );
- }
- vlc_mutex_unlock( lockval.p_address );
-
- return p_tls;
-}
-
-static void
-tls_Deinit( tls_t *p_tls )
-{
- int i;
- vlc_value_t lockval;
-
- var_Get( p_tls->p_libvlc, "tls_mutex", &lockval );
- vlc_mutex_lock( lockval.p_address );
-
- vlc_object_release( p_tls );
-
- i = p_tls->i_refcount;
- if( i == 0 )
- vlc_object_detach( p_tls );
-
- vlc_mutex_unlock( lockval.p_address );
-
- if( i == 0 )
- {
- module_Unneed( p_tls, p_tls->p_module );
- msg_Dbg( p_tls, "TLS/SSL provider deinitialized" );
- vlc_object_destroy( p_tls );
- }
-}
-