vlc_mutex_t picture_lock; /**< picture heap lock */
vlc_mutex_t subpicture_lock; /**< subpicture heap lock */
vlc_mutex_t change_lock; /**< thread change lock */
+ vlc_mutex_t vfilter_lock; /**< video filter2 change lock */
vout_sys_t * p_sys; /**< system output method */
/**@}*/
/* Initialize locks */
vlc_mutex_init( p_vout, &p_vout->picture_lock );
vlc_mutex_init( p_vout, &p_vout->change_lock );
+ vlc_mutex_init( p_vout, &p_vout->vfilter_lock );
/* Mouse coordinates */
var_Create( p_vout, "mouse-x", VLC_VAR_INTEGER );
if( p_vout->b_vfilter_change == VLC_TRUE )
{
int i;
+ vlc_mutex_lock( &p_vout->vfilter_lock );
RemoveVideoFilters2( p_vout );
for( i = 0; i < p_vout->i_vfilters_cfg; i++ )
{
}
}
p_vout->b_vfilter_change = VLC_FALSE;
+ vlc_mutex_unlock( &p_vout->vfilter_lock );
}
if( p_picture )
/* Destroy the locks */
vlc_mutex_destroy( &p_vout->picture_lock );
vlc_mutex_destroy( &p_vout->change_lock );
+ vlc_mutex_destroy( &p_vout->vfilter_lock );
/* Release the module */
if( p_vout && p_vout->p_module )
{
vout_thread_t *p_vout = (vout_thread_t *)p_this;
+ vlc_mutex_lock( &p_vout->vfilter_lock );
ParseVideoFilter2Chain( p_vout, newval.psz_string );
p_vout->b_vfilter_change = VLC_TRUE;
+ vlc_mutex_unlock( &p_vout->vfilter_lock );
return VLC_SUCCESS;
}