[mythtv] [PATCH] external channel change program

malc at porsche.demon.co.uk malc at porsche.demon.co.uk
Fri Oct 17 14:45:17 EDT 2003


(Retry... nothing appeared in the group for 24 hrs so apologies if this appears twice)

Hi,

I've patched the code for the external change program,

it adds two additional arguments to the command
 1. channid
 2. xml id

It also passes them as "quoted" arguments to prevent null values screwing up the call. Makes the process of writing scripts for the external channel changer program much easier (I have a program to grep an easily maintained look up table to map xmlid to channel number ... important when you have digital cable in the UK)

Of course if you don't need the arguments you can ignore them in your channel code.


btw Excellent package Isaac, a joy to set up and the features are really coming together now.


-malc-

-------------- next part --------------
Index: libs/libmythtv/channel.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/channel.cpp,v
retrieving revision 1.55
diff -u -3 -r1.55 channel.cpp
--- libs/libmythtv/channel.cpp	27 Aug 2003 15:41:50 -0000	1.55
+++ libs/libmythtv/channel.cpp	14 Oct 2003 12:29:35 -0000
@@ -306,7 +306,7 @@
         return false;
 
     pthread_mutex_lock(&db_lock);
-    QString thequery = QString("SELECT finetune, freqid "
+    QString thequery = QString("SELECT finetune, freqid,xmltvid "
                                "FROM channel WHERE channum = \"%1\";")
                                .arg(chan);
 
@@ -322,6 +322,7 @@
 
     int finetune = query.value(0).toInt();
     QString freqid = query.value(1).toString();
+ QString xmlid = query.value(2).toString();
 
     pthread_mutex_unlock(&db_lock);
 
@@ -331,7 +332,7 @@
         if (!TuneTo(freqid, finetune))
             return false;
     }
-    else if (!ChangeExternalChannel(freqid))
+    else if (!ChangeExternalChannel(xmlid,chan,freqid))
         return false;
 
     curchannelname = chan;
Index: libs/libmythtv/channelbase.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/channelbase.cpp,v
retrieving revision 1.6
diff -u -3 -r1.6 channelbase.cpp
--- libs/libmythtv/channelbase.cpp	12 Sep 2003 16:49:53 -0000	1.6
+++ libs/libmythtv/channelbase.cpp	14 Oct 2003 12:29:35 -0000
@@ -120,13 +120,15 @@
         cerr << "Couldn't find input: " << inputname << " on card\n";
 }
 
-bool ChannelBase::ChangeExternalChannel(const QString &channum)
+bool ChannelBase::ChangeExternalChannel(const QString &xmltvid, const QString &channum,const Qstring freqid)
 {
     if (externalChanger[currentcapchannel].isEmpty())
         return false;
 
-    QString command = QString("%1 %2 &").arg(externalChanger[currentcapchannel])
-                                        .arg(channum);
+    QString command = QString("%1 \"%2\" \"%3\"\"%4\"").arg(externalChanger[currentcapchannel])
+                                      .arg(channum)
+				      .arg(xmltvid)
+				      .arg(freqid);
 
     VERBOSE(VB_CHANNEL, QString("External channel change: %1").arg(command));
     pid_t child = fork();
Index: libs/libmythtv/channelbase.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/channelbase.h,v
retrieving revision 1.3
diff -u -3 -r1.3 channelbase.h
--- libs/libmythtv/channelbase.h	7 Aug 2003 17:37:41 -0000	1.3
+++ libs/libmythtv/channelbase.h	14 Oct 2003 12:29:35 -0000
@@ -73,7 +73,8 @@
 
     QString channelorder;
 
-    bool ChangeExternalChannel(const QString &newchan);
+    bool ChangeExternalChannel(const QString &ixmltvid, const QString &newchan, const QString &newifreqid);
+
 };
 
 #endif


More information about the mythtv-dev mailing list