diff options
-rw-r--r-- | video/out/vo.c | 8 | ||||
-rw-r--r-- | video/out/vo.h | 4 |
2 files changed, 5 insertions, 7 deletions
diff --git a/video/out/vo.c b/video/out/vo.c index 11690afb67..aee2dd8c75 100644 --- a/video/out/vo.c +++ b/video/out/vo.c @@ -687,9 +687,9 @@ static void do_redraw(struct vo *vo) pthread_mutex_lock(&in->lock); in->request_redraw = false; in->want_redraw = false; - bool force_full_redraw = in->dropped_frame; + bool full_redraw = in->dropped_frame; struct mp_image *img = NULL; - if (vo->config_ok) + if (vo->config_ok && !(vo->driver->untimed)) img = mp_image_new_ref(in->current_frame); if (img) in->dropped_frame = false; @@ -698,12 +698,10 @@ static void do_redraw(struct vo *vo) if (!img) return; - if (force_full_redraw) { + if (full_redraw || vo->driver->control(vo, VOCTRL_REDRAW_FRAME, NULL) < 1) { vo->driver->draw_image(vo, img); } else { talloc_free(img); - if (vo->driver->control(vo, VOCTRL_REDRAW_FRAME, NULL) < 1) - return; } if (vo->driver->flip_page_timed) diff --git a/video/out/vo.h b/video/out/vo.h index e5eccd3f86..2d298088b0 100644 --- a/video/out/vo.h +++ b/video/out/vo.h @@ -63,7 +63,7 @@ enum mp_voctrl { // Redraw the image previously passed to draw_image() (basically, repeat // the previous draw_image call). If this is handled, the OSD should also - // be updated and redrawn. + // be updated and redrawn. Optional; emulated if not available. VOCTRL_REDRAW_FRAME, VOCTRL_FULLSCREEN, @@ -165,7 +165,7 @@ struct vo_driver { // VO_CAP_* bits int caps; - // Disable video timing, push frames as quickly as possible. + // Disable video timing, push frames as quickly as possible, never redraw. bool untimed; const char *name; |