vout_DropPicture( p_vout, p_picture );
return;
}
+ vout_LinkPicture( p_vout, p_picture );
/* */
vlc_mutex_lock( &p_owner->lock );
p_owner->i_last_rate = i_rate;
}
vout_DisplayPicture( p_vout, p_picture );
+ vout_UnlinkPicture( p_vout, p_picture );
}
else
{
msg_Warn( p_vout, "non-dated video buffer received" );
*pi_lost_sum += 1;
+ vout_UnlinkPicture( p_vout, p_picture );
vout_DropPicture( p_vout, p_picture );
}
int i_tmp_display;
p_owner->buffer.i_count--;
if( p_owner->p_vout )
+ {
+ vout_UnlinkPicture( p_owner->p_vout, p_picture );
vout_DropPicture( p_owner->p_vout, p_picture );
+ }
if( !p_owner->buffer.p_picture )
p_owner->buffer.pp_picture_next = &p_owner->buffer.p_picture;
msg_Err( p_vout, "Invalid picture reference count (%p, %d)",
p_pic, p_pic->i_refcount );
- if( p_pic->i_refcount == 0 && p_pic->i_status == DISPLAYED_PICTURE )
+ if( p_pic->i_refcount == 0 &&
+ ( p_pic->i_status == DISPLAYED_PICTURE || p_pic->i_status == RESERVED_PICTURE ) )
DestroyPicture( p_vout, p_pic );
vlc_mutex_unlock( &p_vout->picture_lock );