|
|
|
@ -170,6 +170,7 @@ libvlc_media_list_new( libvlc_instance_t * p_inst, |
|
|
|
} |
|
|
|
|
|
|
|
vlc_mutex_init( &p_mlist->object_lock ); |
|
|
|
vlc_mutex_init( &p_mlist->refcount_lock ); // FIXME: spinlock?
|
|
|
|
|
|
|
|
vlc_array_init( &p_mlist->items ); |
|
|
|
p_mlist->i_refcount = 1; |
|
|
|
@ -188,14 +189,14 @@ void libvlc_media_list_release( libvlc_media_list_t * p_mlist ) |
|
|
|
libvlc_media_t * p_md; |
|
|
|
int i; |
|
|
|
|
|
|
|
vlc_mutex_lock( &p_mlist->object_lock ); |
|
|
|
vlc_mutex_lock( &p_mlist->refcount_lock ); |
|
|
|
p_mlist->i_refcount--; |
|
|
|
if( p_mlist->i_refcount > 0 ) |
|
|
|
{ |
|
|
|
vlc_mutex_unlock( &p_mlist->object_lock ); |
|
|
|
vlc_mutex_unlock( &p_mlist->refcount_lock ); |
|
|
|
return; |
|
|
|
} |
|
|
|
vlc_mutex_unlock( &p_mlist->object_lock ); |
|
|
|
vlc_mutex_unlock( &p_mlist->refcount_lock ); |
|
|
|
|
|
|
|
/* Refcount null, time to free */ |
|
|
|
|
|
|
|
@ -222,9 +223,9 @@ void libvlc_media_list_release( libvlc_media_list_t * p_mlist ) |
|
|
|
**************************************************************************/ |
|
|
|
void libvlc_media_list_retain( libvlc_media_list_t * p_mlist ) |
|
|
|
{ |
|
|
|
vlc_mutex_lock( &p_mlist->object_lock ); |
|
|
|
vlc_mutex_lock( &p_mlist->refcount_lock ); |
|
|
|
p_mlist->i_refcount++; |
|
|
|
vlc_mutex_unlock( &p_mlist->object_lock ); |
|
|
|
vlc_mutex_unlock( &p_mlist->refcount_lock ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|