[mythtv] [patch] Updating DVB SI

Tim Davies tim at opensystems.net.au
Sun Feb 6 04:22:55 UTC 2005


Just a small patch to update the DVB SI.  If the channel number or name 
changes, the database is updated...
-------------- next part --------------
diff -ur mythtv-20050206/libs/libmythtv/siparser.cpp mythtv-20050206-work/libs/libmythtv/siparser.cpp
--- mythtv-20050206/libs/libmythtv/siparser.cpp	2005-02-06 08:49:20.000000000 +0800
+++ mythtv-20050206-work/libs/libmythtv/siparser.cpp	2005-02-06 11:38:29.027856008 +0800
@@ -303,7 +303,7 @@
             if (QString(query.value(0).toString()) == "channel_numbers")
             {
                 PrivateTypes.ChannelNumbers = query.value(1).toInt();
-                SIPARSER(QString("ChannelNumbers Present using Descriptor %d")
+                SIPARSER(QString("ChannelNumbers Present using Descriptor %1")
                          .arg(PrivateTypes.ChannelNumbers));
             }
             if (QString(query.value(0).toString()) == "force_guide_present")
diff -ur mythtv-20050206/libs/libmythtv/siscan.cpp mythtv-20050206-work/libs/libmythtv/siscan.cpp
--- mythtv-20050206/libs/libmythtv/siscan.cpp	2005-02-03 11:38:15.000000000 +0800
+++ mythtv-20050206-work/libs/libmythtv/siscan.cpp	2005-02-06 12:06:10.850220608 +0800
@@ -420,6 +420,12 @@
             if (!query.isActive())
                 MythContext::DBError("Check Channel full in channel/dtv_multiplex.", query);
 
+            int ChanNum;
+            if( (*s).ChanNum == -1 )
+                ChanNum = (*s).ServiceID;
+            else
+                ChanNum = (*s).ChanNum;
+
             // If channel not present add it
             if (query.numRowsAffected() <= 0)
             {
@@ -436,12 +442,6 @@
 
                     chanid = GenerateNewChanID();
 
-                    int ChanNum;
-                    if( (*s).ChanNum == -1 )
-                        ChanNum = (*s).ServiceID;
-                    else
-                        ChanNum = (*s).ChanNum;
-
                      query.prepare("INSERT INTO channel (chanid, channum, "
                                "sourceid, callsign, name,  mplexid, "
                                "serviceid, atscsrcid, useonairguide ) "
@@ -466,8 +466,24 @@
                 }
                 else
                 {
-                    // TODO: Do an update here of the Name, etc..
-                    SISCAN(QString("Channel %1 already in Database - Skipping").arg((*s).ServiceName));
+                    query.next();
+                    chanid = query.value(0).toInt();
+
+                    // Do an update here of the Name, etc..
+                    SISCAN(QString("Channel %1 already in Database - Updating name/number").arg((*s).ServiceName));
+                    query.prepare("UPDATE channel SET callsign=:CALLSIGN,channum=:CHANNUM,name=:NAME "
+                                       "WHERE chanid=:CHANID;");
+                    query.bindValue(":CHANID",chanid);
+                    query.bindValue(":CHANNUM",ChanNum);
+                    query.bindValue(":CALLSIGN",(*s).ServiceName.utf8());
+                    query.bindValue(":NAME",(*s).ServiceName.utf8());
+		    
+                    if(!query.exec())
+                        MythContext::DBError("Updating channel number/name", query);
+
+                    if (!query.isActive())
+                        MythContext::DBError("Updating channel number/name", query);
+
                     QString status = QString("Updating %1").arg((*s).ServiceName);
                     emit ServiceScanUpdateText(status);
                 }


More information about the mythtv-dev mailing list