diff options
Diffstat (limited to 'libvo/video_out.c')
-rw-r--r-- | libvo/video_out.c | 19 |
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; } |