if( p_vout->b_error )
return;
+ vlc_object_lock( p_vout );
+
if( p_vout->b_title_show )
DisplayTitleOnOSD( p_vout );
* Main loop - it is not executed if an error occurred during
* initialization
*/
- while( (!p_vout->b_die) && (!p_vout->b_error) )
+ while( (vlc_object_alive( p_vout )) && (!p_vout->b_error) )
{
/* Initialize loop variables */
p_picture = NULL;
/* Give back change lock */
vlc_mutex_unlock( &p_vout->change_lock );
+ vlc_object_unlock( p_vout );
+
/* Sleep a while or until a given date */
if( display_date != 0 )
{
/* On awakening, take back lock and send immediately picture
* to display. */
+ vlc_object_lock( p_vout );
+ /* Note: vlc_object_alive() could be false here, and we
+ * could be dead */
vlc_mutex_lock( &p_vout->change_lock );
/*
}
}
+
if( p_input )
{
vlc_object_release( p_input );
/* End of thread */
EndThread( p_vout );
+ vlc_object_unlock( p_vout );
}
/*****************************************************************************