p_vout->p->b_filter_change = 0;
p_vout->p->i_par_num =
p_vout->p->i_par_den = 1;
- p_vout->p->is_late_dropped = var_InheritBool( p_vout, "drop-late-frames" );
p_vout->p->b_picture_empty = false;
p_vout->p->displayed.date = VLC_TS_INVALID;
p_vout->p->displayed.decoded = NULL;
spu_Attach( p_vout->p->p_spu, VLC_OBJECT(p_vout), true );
+ p_vout->p->is_late_dropped = var_InheritBool( p_vout, "drop-late-frames" );
+
/* Take care of some "interface/control" related initialisations */
vout_IntfInit( p_vout );
pi_displayed, pi_lost );
}
-static void Flush(vout_thread_t *vout, mtime_t date, bool below)
+static void Flush(vout_thread_t *vout, mtime_t date, bool reset, bool below)
{
vlc_assert_locked(&vout->p->picture_lock);
vout->p->step.timestamp = VLC_TS_INVALID;
vout->p->step.last = VLC_TS_INVALID;
picture_t *last = vout->p->displayed.decoded;
- if (last &&
- (( below && last->date <= date) ||
- (!below && last->date >= date))) {
- vout->p->step.is_requested = true;
+ if (last) {
+ if (reset) {
+ picture_Release(last);
+ vout->p->displayed.decoded = NULL;
+ } else if (( below && last->date <= date) ||
+ (!below && last->date >= date)) {
+ vout->p->step.is_requested = true;
+ }
}
picture_fifo_Flush( vout->p->decoder_fifo, date, below );
}
{
vlc_mutex_lock(&vout->p->picture_lock);
- Flush(vout, date, false);
+ Flush(vout, date, false, false);
vlc_cond_signal(&vout->p->picture_wait);
vlc_mutex_unlock(&vout->p->picture_lock);
}
-static void vout_Reset(vout_thread_t *vout)
+void vout_Reset(vout_thread_t *vout)
{
-#warning "TODO reset pause in vout_Reset"
vlc_mutex_lock(&vout->p->picture_lock);
- Flush(vout, INT64_MAX, true);
+
+ Flush(vout, INT64_MAX, true, true);
if (vout->p->decoder_pool)
picture_pool_NonEmpty(vout->p->decoder_pool, true);
+ vout->p->pause.is_on = false;
+ vout->p->pause.date = mdate();
+
vlc_cond_signal( &vout->p->picture_wait );
vlc_mutex_unlock(&vout->p->picture_lock);
}
-void vout_FixLeaks( vout_thread_t *vout, bool b_forced )
+void vout_FixLeaks( vout_thread_t *vout )
{
-#warning "TODO split vout_FixLeaks into vout_FixLeaks and vout_Reset"
- if (b_forced) {
- vout_Reset(vout);
- return;
- }
-
vlc_mutex_lock(&vout->p->picture_lock);
picture_t *picture = picture_fifo_Peek(vout->p->decoder_fifo);