Just a small patch to update the DVB SI. If the channel number or name changes, the database is updated...
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);
                 }
_______________________________________________
mythtv-dev mailing list
[email protected]
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Reply via email to