All pastes #1716602 Raw Edit

Unnamed

public text v1 · immutable
#1716602 ·published 2009-12-16 03:15 UTC
rendered paste body
Index: libs/libmyth/programinfo.cpp
===================================================================
--- libs/libmyth/programinfo.cpp	(revision 22974)
+++ libs/libmyth/programinfo.cpp	(working copy)
@@ -1770,17 +1770,21 @@
     filesize = fsize;
 
     MSqlQuery query(MSqlQuery::InitCon());
-    query.prepare("UPDATE recorded SET filesize = :FILESIZE"
-                  " WHERE chanid = :CHANID"
-                  " AND starttime = :STARTTIME ;");
-    query.bindValue(":FILESIZE", longLongToString(fsize));
-    query.bindValue(":CHANID", chanid);
+    query.prepare(
+        "UPDATE recorded "
+        "SET filesize = :FILESIZE"
+        "WHERE chanid    = :CHANID AND "
+        "      starttime = :STARTTIME");
+    query.bindValue(":FILESIZE",  fsize);
+    query.bindValue(":CHANID",    chanid);
     query.bindValue(":STARTTIME", recstartts);
 
-    if (!query.exec() || !query.isActive())
+    if (!query.exec())
         MythDB::DBError("File size update", query);
 
-    SendUpdateEvent();
+    QString msg = QString("UPDATE_FILE_SIZE %1 %2 %3")
+        .arg(chanid).arg(recstartts.toString(Qt::ISODate)).arg(fsize);
+    RemoteSendMessage(msg);
 }
 
 /** \fn ProgramInfo::GetFilesize(void)
@@ -1880,7 +1884,7 @@
         // table send an update event..
         QStringList list;
         ToStringList(list);
-        RemoteSendEvent(MythEvent(QString("UPDATE_PROG_INFO"), list));
+        RemoteSendEvent(MythEvent(QString("MASTER_UPDATE_PROG_INFO"), list));
     }
 }
 
Index: programs/mythfrontend/playbackbox.cpp
===================================================================
--- programs/mythfrontend/playbackbox.cpp	(revision 22974)
+++ programs/mythfrontend/playbackbox.cpp	(working copy)
@@ -3728,6 +3728,24 @@
             if (evinfo.FromStringList(me->ExtraDataList(), 0))
                 HandleUpdateProgramInfoEvent(evinfo);
         }
+        else if (message.left(17) == "UPDATE_FILE_SIZE")
+        {
+            QStringList tokens = message.simplified().split(" ");
+            bool ok = false;
+            uint chanid = 0;
+            QDateTime recstartts;
+            long long filesize = 0;
+            if (tokens.size() >= 4)
+            {
+                chanid     = tokens[1].toUInt();
+                recstartts = QDateTime::fromString(tokens[2]);
+                filesize   = tokens[3].toLongLong(&ok);
+            }
+            if (chanid && recstartts.isValid() && ok)
+            {
+                // TODO
+            }
+        }
         else if (message == "RECONNECT_SUCCESS")
         {
             m_fillListFromCache = false;
Index: programs/mythbackend/scheduler.h
===================================================================
--- programs/mythbackend/scheduler.h	(revision 22974)
+++ programs/mythbackend/scheduler.h	(working copy)
@@ -80,6 +80,8 @@
 
     bool WasStartedAutomatically();
 
+    RecStatusType GetRecStatus(const ProgramInfo &pginfo) const;
+
     int GetError(void) const { return error; }
 
   protected:
Index: programs/mythbackend/mainserver.cpp
===================================================================
--- programs/mythbackend/mainserver.cpp	(revision 22974)
+++ programs/mythbackend/mainserver.cpp	(working copy)
@@ -874,6 +874,29 @@
         if (me->Message().left(6) == "LOCAL_")
             return;
 
+        MythEvent mod_me("");
+        if (me->Message() == "MASTER_UPDATE_PROG_INFO" && m_sched)
+        {
+            ProgramInfo evinfo;
+            if (evinfo.FromStringList(me->ExtraDataList(), 0))
+            {
+                QDateTime rectime = QDateTime::currentDateTime().addSecs(
+                    -gContext->GetNumSetting("RecordOverTime"));
+
+                if (evinfo.recendts > rectime)
+                    evinfo.recstatus = m_sched->GetRecStatus(evinfo);
+
+                QStringList list;
+                evinfo.ToStringList(list);
+                mod_me = MythEvent("UPDATE_PROG_INFO", list);
+                me = &mod_me;
+            }
+            else
+            {
+                return;
+            }
+        }
+
         broadcast = QStringList( "BACKEND_MESSAGE" );
         broadcast << me->Message();
         broadcast += me->ExtraDataList();
Index: programs/mythbackend/scheduler.cpp
===================================================================
--- programs/mythbackend/scheduler.cpp	(revision 22974)
+++ programs/mythbackend/scheduler.cpp	(working copy)
@@ -1409,6 +1409,20 @@
     return hasconflicts;
 }
 
+RecStatusType Scheduler::GetRecStatus(const ProgramInfo &pginfo) const
+{
+    QMutexLocker lockit(reclist_lock);
+
+    for (RecConstIter it = reclist.begin(); it != reclist.end(); ++it)
+    {
+        const ProgramInfo &s = **it;
+        if (pginfo.chanid == s.chanid && pginfo.recstartts == s.recstartts)
+            return (rsRecording==s.recstatus) ? rsRecording : pginfo.recstatus;
+    }
+
+    return pginfo.recstatus;
+}
+
 void Scheduler::getAllPending(QStringList &strList)
 {
     RecList retlist;