diff options
Diffstat (limited to 'mpcommon.c')
-rw-r--r-- | mpcommon.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mpcommon.c b/mpcommon.c index ce1188680f..0a8bf790c0 100644 --- a/mpcommon.c +++ b/mpcommon.c @@ -146,8 +146,17 @@ void update_teletext(sh_video_t *sh_video, demuxer_t *demuxer, int reset) { #ifdef HAVE_TV_TELETEXT tvi_handle_t* tvh=demuxer->priv; + int page_changed; + if (demuxer->type != DEMUXER_TYPE_TV || !tvh) return; + //Also forcing page update when such ioctl is not supported or call error occured + if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_IS_CHANGED,&page_changed)!=TVI_CONTROL_TRUE) + page_changed=1; + + if(!page_changed) + return; + if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_VBIPAGE,&vo_osd_teletext_page)!=TVI_CONTROL_TRUE) vo_osd_teletext_page=NULL; if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_HALF_PAGE,&vo_osd_teletext_half)!=TVI_CONTROL_TRUE) @@ -157,5 +166,7 @@ void update_teletext(sh_video_t *sh_video, demuxer_t *demuxer, int reset) if(tvh->functions->control(tvh->priv,TV_VBI_CONTROL_GET_FORMAT,&vo_osd_teletext_format)!=TVI_CONTROL_TRUE) vo_osd_teletext_format=0; vo_osd_changed(OSDTYPE_TELETEXT); + + tvh->functions->control(tvh->priv,TV_VBI_CONTROL_MARK_UNCHANGED,NULL); #endif } |