summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/out/vo.c8
-rw-r--r--video/out/vo.h4
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;