diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2009-01-15 01:07:12 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2009-01-15 01:09:21 +0200 |
commit | d419ecd161634e79dab3ac57d57c4bccba2adcdc (patch) | |
tree | 7b13f4db6a141bb1c1f08afc4e3a71552618d8ec /mplayer.c | |
parent | 2d532689fcc96deaa8ae8c05c34e315cfcef8350 (diff) | |
download | mpv-d419ecd161634e79dab3ac57d57c4bccba2adcdc.tar.bz2 mpv-d419ecd161634e79dab3ac57d57c4bccba2adcdc.tar.xz |
OSD: Ensure that OSD content is drawn in filter-added frames
Move the OSD drawing calls from filter_video() to higher-level code to
ensure that VOs will draw the OSD also in filter-added frames, which
are displayed without a separate call to filter_video().
Diffstat (limited to 'mplayer.c')
-rw-r--r-- | mplayer.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -2223,8 +2223,7 @@ static double update_video_nocorrect_pts(struct MPContext *mpctx, update_teletext(sh_video, mpctx->demuxer, 0); update_osd_msg(mpctx); current_module = "filter video"; - if (filter_video(sh_video, decoded_frame, sh_video->pts, - mpctx->osd)) + if (filter_video(sh_video, decoded_frame, sh_video->pts)) break; } } @@ -2270,8 +2269,7 @@ static double update_video(struct MPContext *mpctx, int *blit_frame) update_teletext(sh_video, mpctx->demuxer, 0); update_osd_msg(mpctx); current_module = "filter video"; - if (filter_video(sh_video, decoded_frame, sh_video->pts, - mpctx->osd)) + if (filter_video(sh_video, decoded_frame, sh_video->pts)) break; } else if (hit_eof) return -1; @@ -3786,8 +3784,12 @@ if(!mpctx->sh_video) { mpctx->stop_play = PT_NEXT_ENTRY; goto goto_next_file; } - if (blit_frame) + if (blit_frame) { + struct vf_instance *vf = mpctx->sh_video->vfilter; + vf->control(vf, VFCTRL_DRAW_EOSD, NULL); + vf->control(vf, VFCTRL_DRAW_OSD, mpctx->osd); vo_osd_changed(0); + } if (frame_time < 0) mpctx->stop_play = AT_END_OF_FILE; else { |