VLC_EXPORT(picture_t *, vout_FilterDisplay, (vout_display_t *, picture_t *));
VLC_EXPORT(bool, vout_AreDisplayPicturesInvalid, (vout_display_t *));
-VLC_EXPORT(void, vout_ManageDisplay, (vout_display_t *));
+VLC_EXPORT(void, vout_ManageDisplay, (vout_display_t *, bool allow_reset_pictures));
VLC_EXPORT(void, vout_SetDisplayFullscreen, (vout_display_t *, bool is_fullscreen));
VLC_EXPORT(void, vout_SetDisplayFilled, (vout_display_t *, bool is_filled));
vout_thread_t *vout = (vout_thread_t *)object;
vout_sys_t *sys = vout->p_sys;
- if (sys->vd)
- vout_DeleteDisplay(sys->vd, NULL);
+ vout_DeleteDisplay(sys->vd, NULL);
free(sys->title);
free(sys );
}
if (!sys->use_dr)
free(picture->p_data_orig);
free(picture->p_sys);
+
+ picture->i_status = FREE_PICTURE;
}
+ if (sys->use_dr && vout_AreDisplayPicturesInvalid(sys->vd))
+ vout_ManageDisplay(sys->vd, true);
}
/*****************************************************************************
if (sys->use_dr && vout_AreDisplayPicturesInvalid(vd)) {
vout->i_changes |= VOUT_PICTURE_BUFFERS_CHANGE;
}
-
- vout_ManageDisplay(vd);
+ vout_ManageDisplay(vd, !sys->use_dr);
return VLC_SUCCESS;
}
else if (align_mask & 0x8)
cfg->align.horizontal = VOUT_DISPLAY_ALIGN_BOTTOM;
}
-
vout_DeleteDisplayWindow(osys->vout, vd, window);
}
-void vout_ManageDisplay(vout_display_t *vd)
+void vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures)
{
vout_display_owner_sys_t *osys = vd->owner.sys;
bool display_is_forced = osys->display_is_forced;
osys->ch_display_size = false;
- bool reset_pictures = osys->reset_pictures;
- osys->reset_pictures = false;
+ bool reset_pictures;
+ if (allow_reset_pictures) {
+ reset_pictures = osys->reset_pictures;
+ osys->reset_pictures = false;
+ } else {
+ reset_pictures = false;
+ }
vlc_mutex_unlock(&osys->lock);
picture_t *vout_FilterDisplay(vout_display_t *, picture_t *);
-void vout_ManageDisplay(vout_display_t *);
+void vout_ManageDisplay(vout_display_t *, bool allow_reset_pictures);
void vout_SetDisplayFullscreen(vout_display_t *, bool is_fullscreen);
void vout_SetDisplayFilled(vout_display_t *, bool is_filled);