vout_ChangePause( p_owner->p_vout, false, mdate() );
/* */
- input_ressource_RequestVout( p_owner->p_input->p->p_ressource, p_owner->p_vout, NULL );
+ input_ressource_RequestVout( p_owner->p_input->p->p_ressource, p_owner->p_vout, NULL, true );
input_SendEventVout( p_owner->p_input );
}
decoder_t *p_dec = p_private;
input_thread_t *p_input = p_dec->p_owner->p_input;
- p_vout = input_ressource_RequestVout( p_input->p->p_ressource, p_vout, p_fmt );
- /* TODO it would be better to give b_recyle to input_ressource_RequestVout
- * as here we are not sure of which vout we destroy */
- if( !b_recyle )
- input_ressource_TerminateVout( p_input->p->p_ressource );
+ p_vout = input_ressource_RequestVout( p_input->p->p_ressource, p_vout, p_fmt, b_recyle );
input_SendEventVout( p_input );
return p_vout;
vlc_mutex_unlock( &p_owner->lock );
p_vout = input_ressource_RequestVout( p_owner->p_input->p->p_ressource,
- p_vout, &p_dec->fmt_out.video );
+ p_vout, &p_dec->fmt_out.video, true );
vlc_mutex_lock( &p_owner->lock );
p_owner->p_vout = p_vout;
free( psz_nowplaying );
}
static vout_thread_t *RequestVout( input_ressource_t *p_ressource,
- vout_thread_t *p_vout, video_format_t *p_fmt )
+ vout_thread_t *p_vout, video_format_t *p_fmt,
+ bool b_recycle )
{
if( !p_vout && !p_fmt )
{
const int i_vout_active = p_ressource->i_vout;
vlc_mutex_unlock( &p_ressource->lock_vout );
- if( p_ressource->p_vout_free || i_vout_active > 0 )
+ if( p_ressource->p_vout_free || i_vout_active > 0 || !b_recycle )
{
- msg_Dbg( p_ressource->p_input, "detroying vout (already one saved or active)" );
+ if( b_recycle )
+ msg_Dbg( p_ressource->p_input, "detroying vout (already one saved or active)" );
vout_CloseAndRelease( p_vout );
}
else
}
vout_thread_t *input_ressource_RequestVout( input_ressource_t *p_ressource,
- vout_thread_t *p_vout, video_format_t *p_fmt )
+ vout_thread_t *p_vout, video_format_t *p_fmt, bool b_recycle )
{
vlc_mutex_lock( &p_ressource->lock );
- vout_thread_t *p_ret = RequestVout( p_ressource, p_vout, p_fmt );
+ vout_thread_t *p_ret = RequestVout( p_ressource, p_vout, p_fmt, b_recycle );
vlc_mutex_unlock( &p_ressource->lock );
return p_ret;
}
void input_ressource_TerminateVout( input_ressource_t *p_ressource )
{
- input_ressource_RequestVout( p_ressource, NULL, NULL );
+ input_ressource_RequestVout( p_ressource, NULL, NULL, false );
}
bool input_ressource_HasVout( input_ressource_t *p_ressource )
{
/**
* This function handles vout request.
*/
-vout_thread_t *input_ressource_RequestVout( input_ressource_t *, vout_thread_t *, video_format_t * );
+vout_thread_t *input_ressource_RequestVout( input_ressource_t *, vout_thread_t *, video_format_t *, bool b_recycle );
/**
* This function return one of the current vout if any.