summaryrefslogtreecommitdiffstats
path: root/libvo/video_out.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvo/video_out.c')
-rw-r--r--libvo/video_out.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/libvo/video_out.c b/libvo/video_out.c
index 82cf0dbbfe..0b1f7d1fab 100644
--- a/libvo/video_out.c
+++ b/libvo/video_out.c
@@ -285,6 +285,17 @@ int vo_draw_image(struct vo *vo, struct mp_image *mpi, double pts)
return 0;
}
+int vo_redraw_frame(struct vo *vo)
+{
+ if (!vo->config_ok)
+ return -1;
+ if (vo_control(vo, VOCTRL_REDRAW_FRAME, NULL) == true) {
+ vo->redrawing = true;
+ return 0;
+ }
+ return -1;
+}
+
int vo_get_buffered_frame(struct vo *vo, bool eof)
{
if (!vo->config_ok)
@@ -339,8 +350,11 @@ void vo_flip_page(struct vo *vo, unsigned int pts_us, int duration)
{
if (!vo->config_ok)
return;
- vo->frame_loaded = false;
- vo->next_pts = MP_NOPTS_VALUE;
+ if (!vo->redrawing) {
+ vo->frame_loaded = false;
+ vo->next_pts = MP_NOPTS_VALUE;
+ }
+ vo->redrawing = false;
if (vo->driver->flip_page_timed)
vo->driver->flip_page_timed(vo, pts_us, duration);
else
@@ -486,6 +500,7 @@ int vo_config(struct vo *vo, uint32_t width, uint32_t height,
}
vo->frame_loaded = false;
vo->waiting_mpi = NULL;
+ vo->redrawing = false;
return ret;
}