commit 5c3087fa8ea87fde04ed50261cf75afeaf2c8b35 Author: greg Date: Mon Mar 2 23:41:04 2009 +0100 From uau: vo gl generates bitmaps for EOSD content (libass subtitles) when DRAW_EOSD is called but actual drawing of both EOSD and OSD is done in draw_osd(). Since draw_osd() was called first it drew the EOSD content from the previous frame, so the subtitles were always one frame late. As a simple workaround update EOSD content first, then normal OSD. This makes vo gl work correctly and should have no effect on anything else. diff --git a/libmpcodecs/dec_video.c b/libmpcodecs/dec_video.c index f158d7e..b6600e2 100644 --- a/libmpcodecs/dec_video.c +++ b/libmpcodecs/dec_video.c @@ -415,10 +415,10 @@ int filter_video(sh_video_t *sh_video, void *frame, double pts) // apply video filters and call the leaf vo/ve int ret = vf->put_image(vf, mpi, pts); if (ret > 0) { - vf->control(vf, VFCTRL_DRAW_OSD, NULL); #ifdef CONFIG_ASS vf->control(vf, VFCTRL_DRAW_EOSD, NULL); #endif + vf->control(vf, VFCTRL_DRAW_OSD, NULL); } t2 = GetTimer()-t2;