diff --git a/libvo/vo_vdpau.c b/libvo/vo_vdpau.c index 4f43c504bd..c40c28d4ff 100644 --- a/libvo/vo_vdpau.c +++ b/libvo/vo_vdpau.c @@ -205,6 +205,8 @@ static VdpProcamp procamp; static int visible_buf; static int int_pause; +static void draw_eosd(void); + static void video_to_output_surface(void) { VdpTime dummy; @@ -219,6 +221,7 @@ static void video_to_output_surface(void) int field = VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME; VdpOutputSurface output_surface; if (i) { + draw_eosd(); draw_osd(); flip_page(); } @@ -657,7 +660,7 @@ static void generate_eosd(mp_eosd_images_t *imgs) { // Nothing changed, no need to redraw if (imgs->changed == 0) - return; + goto eosd_draw_only; eosd_render_count = 0; // There's nothing to render! if (!img) @@ -736,6 +739,8 @@ eosd_skip_upload: eosd_targets[eosd_render_count].source.y1 = i->h; eosd_render_count++; } +eosd_draw_only: + draw_eosd(); } static void draw_osd(void)