Commit e339d116 authored by jetru's avatar jetru
Browse files

ML: Use a lock for ml_Create

parent c78c2b56
......@@ -229,6 +229,7 @@ libvlc_int_t * libvlc_InternalCreate( void )
#endif
/* Initialize mutexes */
vlc_mutex_init( &priv->ml_lock );
vlc_mutex_init( &priv->timer_lock );
vlc_ExitInit( &priv->exit );
......@@ -1060,6 +1061,7 @@ void libvlc_InternalDestroy( libvlc_int_t *p_libvlc )
/* Destroy mutexes */
vlc_ExitDestroy( &priv->exit );
vlc_mutex_destroy( &priv->timer_lock );
vlc_mutex_destroy( &priv->ml_lock );
#ifndef NDEBUG /* Hack to dump leaked objects tree */
if( vlc_internals( p_libvlc )->i_refcount > 1 )
......
......@@ -215,6 +215,7 @@ typedef struct libvlc_priv_t
module_t *p_memcpy_module; ///< Fast memcpy plugin used
playlist_t *p_playlist; ///< the playlist singleton
media_library_t *p_ml; ///< the ML singleton
vlc_mutex_t ml_lock; ///< Mutex for ML creation
vlm_t *p_vlm; ///< the VLM singleton (or NULL)
vlc_object_t *p_dialog_provider; ///< dialog provider
httpd_t *p_httpd; ///< HTTP daemon (src/network/httpd.c)
......
......@@ -111,6 +111,7 @@ media_library_t *ml_Create( vlc_object_t *p_this, char *psz_name )
media_library_t* ml_Hold( vlc_object_t* p_this )
{
media_library_t* p_ml;
vlc_mutex_lock( &( libvlc_priv( p_this->p_libvlc )->ml_lock ) );
p_ml = libvlc_priv (p_this->p_libvlc)->p_ml;
assert( VLC_OBJECT( p_ml ) != p_this );
if( p_ml == NULL &&
......@@ -122,6 +123,7 @@ media_library_t* ml_Hold( vlc_object_t* p_this )
}
if( p_ml )
vlc_object_hold( p_ml );
vlc_mutex_unlock( &( libvlc_priv( p_this->p_libvlc )->ml_lock ) );
return p_ml;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment