summaryrefslogtreecommitdiff
path: root/src/input/input_dvb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/input_dvb.c')
-rw-r--r--src/input/input_dvb.c33
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))