diff options
Diffstat (limited to 'src/input/input_dvb.c')
-rw-r--r-- | src/input/input_dvb.c | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/input/input_dvb.c b/src/input/input_dvb.c index b3a399ce4..795b843c5 100644 --- a/src/input/input_dvb.c +++ b/src/input/input_dvb.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * * Input plugin for Digital TV (Digital Video Broadcast - DVB) devices, @@ -3182,23 +3182,38 @@ static char **dvb_class_get_autoplay_list(input_class_t * this_gen, dvb_input_class_t *class = (dvb_input_class_t *) this_gen; channel_t *channels=NULL; char foobuffer[BUFSIZE]; - int ch, apch, num_channels; + int ch, apch, num_channels = 0; int default_channel = -1; xine_cfg_entry_t lastchannel_enable = {0}; xine_cfg_entry_t lastchannel; - num_channels = 0; + /* need to probe card here to get fe_type to read in channels.conf */ + tuner_t *tuner; + xine_cfg_entry_t adapter; - if (!(channels = load_channels(class->xine, NULL, &num_channels, 0))) { + xine_config_lookup_entry(class->xine, "media.dvb.adapter", &adapter); + + if (!(tuner = tuner_init(class->xine,adapter.num_value))) { + xprintf(class->xine, XINE_VERBOSITY_LOG, _("input_dvb: cannot open dvb device\n")); + class->mrls[0]="Sorry, No DVB input device found."; + *num_files=1; + return class->mrls; + } + + if (!(channels = load_channels(class->xine, NULL, &num_channels, tuner->feinfo.type))) { /* channels.conf not found in .xine */ - class->mrls[0]="Sorry, No channels.conf found"; - class->mrls[1]="Please run the dvbscan utility"; - class->mrls[2]="from the dvb drivers apps package"; - class->mrls[3]="and place the file in ~/.xine/"; - *num_files=4; + class->mrls[0]="Sorry, No valid channels.conf found"; + class->mrls[1]="for the selected DVB device."; + class->mrls[2]="Please run the dvbscan utility"; + class->mrls[3]="from the dvb drivers apps package"; + class->mrls[4]="and place the file in ~/.xine/"; + *num_files=5; + tuner_dispose(tuner); return class->mrls; } + tuner_dispose(tuner); + if (xine_config_lookup_entry(class->xine, "media.dvb.remember_channel", &lastchannel_enable) && lastchannel_enable.num_value && xine_config_lookup_entry(class->xine, "media.dvb.last_channel", &lastchannel)) |