1
mirror of https://code.videolan.org/videolan/vlc synced 2024-10-11 06:21:30 +02:00

VLM : Fix a race condition when input event is triggered and vlm_MediaInstanceDelete is called at the same time.

Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
This commit is contained in:
Sébastien Escudier 2009-10-08 10:05:07 +02:00 committed by Rémi Denis-Courmont
parent c2d2e2bb4d
commit 5d0f05ab72

View File

@ -843,6 +843,7 @@ static void vlm_MediaInstanceDelete( vlm_t *p_vlm, int64_t id, vlm_media_instanc
if( p_instance->p_input_resource ) if( p_instance->p_input_resource )
input_resource_Delete( p_instance->p_input_resource ); input_resource_Delete( p_instance->p_input_resource );
TAB_REMOVE( p_media->i_instance, p_media->instance, p_instance );
vlc_gc_decref( p_instance->p_item ); vlc_gc_decref( p_instance->p_item );
free( p_instance->psz_name ); free( p_instance->psz_name );
free( p_instance ); free( p_instance );
@ -950,7 +951,6 @@ static int vlm_ControlMediaInstanceStart( vlm_t *p_vlm, int64_t id, const char *
if( !p_instance->p_input ) if( !p_instance->p_input )
{ {
TAB_REMOVE( p_media->i_instance, p_media->instance, p_instance );
vlm_MediaInstanceDelete( p_vlm, id, p_instance, p_media ); vlm_MediaInstanceDelete( p_vlm, id, p_instance, p_media );
} }
else else
@ -975,8 +975,6 @@ static int vlm_ControlMediaInstanceStop( vlm_t *p_vlm, int64_t id, const char *p
if( !p_instance ) if( !p_instance )
return VLC_EGENERIC; return VLC_EGENERIC;
TAB_REMOVE( p_media->i_instance, p_media->instance, p_instance );
vlm_MediaInstanceDelete( p_vlm, id, p_instance, p_media ); vlm_MediaInstanceDelete( p_vlm, id, p_instance, p_media );
return VLC_SUCCESS; return VLC_SUCCESS;