From ef6264e56eb0fdbc2f6984a1dc1ef841821b6cd6 Mon Sep 17 00:00:00 2001 From: nicodvb Date: Tue, 25 Apr 2006 20:32:46 +0000 Subject: [PATCH] simplified management of dvb channel switching git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18287 b3059339-0415-0410-9bf9-f77b7e298cf2 --- mplayer.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/mplayer.c b/mplayer.c index fca6d1766d..79dc6079f0 100644 --- a/mplayer.c +++ b/mplayer.c @@ -118,6 +118,7 @@ char * proc_priority=NULL; #ifdef HAS_DVBIN_SUPPORT #include "libmpdemux/dvbin.h" static int last_dvb_step = 1; +static int dvbin_reopen = 0; extern void cache_uninit(stream_t *s); #endif @@ -3224,11 +3225,7 @@ if(!sh_video && !sh_audio){ dir = DVB_CHANNEL_LOWER; if(dvb_step_channel(priv, dir)) - { - uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT)); - cache_uninit(stream); - goto goto_enable_cache; - } + eof = dvbin_reopen = 1; } } #endif @@ -4451,11 +4448,7 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still) if(dvb_step_channel(priv, dir)) - { - uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT)); - cache_uninit(stream); - goto goto_enable_cache; - } + eof = dvbin_reopen = 1; } } #endif /* HAS_DVBIN_SUPPORT */ @@ -4484,11 +4477,7 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still) last_dvb_step = -1; if(dvb_set_channel(priv, cmd->args[1].v.i, cmd->args[0].v.i)) - { - uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT)); - cache_uninit(stream); - goto goto_enable_cache; - } + eof = dvbin_reopen = 1; } } } @@ -5084,6 +5073,16 @@ if(vo_config_count && vo_spudec) { mp_msg(MSGT_GLOBAL,MSGL_V,"EOF code: %d \n",eof); +#ifdef HAS_DVBIN_SUPPORT +if(dvbin_reopen) +{ + eof = 0; + uninit_player(INITED_ALL-(INITED_STREAM|INITED_INPUT)); + cache_uninit(stream); + dvbin_reopen = 0; + goto goto_enable_cache; +} +#endif } goto_next_file: // don't jump here after ao/vo/getch initialization!