Ticket #9089: rstuning3.patch

File rstuning3.patch, 6.7 KB (added by gigem, 9 years ago)
  • programs/mythbackend/scheduler.cpp

     
    214214static inline bool Recording(const RecordingInfo *p)
    215215{
    216216    return (p->GetRecordingStatus() == rsRecording ||
     217            p->GetRecordingStatus() == rsTuning ||
    217218            p->GetRecordingStatus() == rsWillRecord);
    218219}
    219220
     
    289290
    290291static bool comp_priority(RecordingInfo *a, RecordingInfo *b)
    291292{
    292     int arec = (a->GetRecordingStatus() != rsRecording);
    293     int brec = (b->GetRecordingStatus() != rsRecording);
     293    int arec = (a->GetRecordingStatus() != rsRecording &&
     294                a->GetRecordingStatus() != rsTuning);
     295    int brec = (b->GetRecordingStatus() != rsRecording &&
     296                b->GetRecordingStatus() != rsTuning);
    294297
    295298    if (arec != brec)
    296299        return arec < brec;
     
    644647                if (sp->GetCardID() == rp->GetCardID())
    645648                {
    646649                    found = true;
    647                     rp->SetRecordingStatus(rsRecording);
     650                    rp->SetRecordingStatus(sp->GetRecordingStatus());
    648651                    reclist_changed = true;
    649652                    rp->AddHistory(false);
    650                     VERBOSE(VB_IMPORTANT, QString("setting %1/%2/\"%3\" as "
    651                                                   "recording")
     653                    VERBOSE(VB_IMPORTANT, QString("setting %1/%2/\"%3\" as %4")
    652654                            .arg(sp->GetCardID())
    653655                            .arg(sp->GetChannelSchedulingID())
    654                             .arg(sp->GetTitle()));
     656                            .arg(sp->GetTitle())
     657                            .arg(toUIState(sp->GetRecordingStatus())));
    655658                }
    656659                else
    657660                {
     
    664667                }
    665668            }
    666669            else if (sp->GetCardID() == rp->GetCardID() &&
    667                      rp->GetRecordingStatus() == rsRecording)
     670                     (rp->GetRecordingStatus() == rsRecording ||
     671                      rp->GetRecordingStatus() == rsTuning))
    668672            {
    669673                rp->SetRecordingStatus(rsAborted);
    670674                reclist_changed = true;
     
    699703        RecordingInfo *rp = *ri;
    700704
    701705        if (rp->GetCardID() == cardid &&
    702             rp->GetRecordingStatus() == rsRecording)
     706            (rp->GetRecordingStatus() == rsRecording ||
     707             rp->GetRecordingStatus() == rsTuning))
    703708        {
    704709            rp->SetRecordingStatus(rsAborted);
    705710            reclist_changed = true;
     
    720725    for (; i != reclist.end(); ++i)
    721726    {
    722727        RecordingInfo *p = *i;
    723         if (p->GetRecordingStatus() == rsRecording)
     728        if (p->GetRecordingStatus() == rsRecording ||
     729            p->GetRecordingStatus() == rsTuning)
    724730            worklist.push_back(new RecordingInfo(*p));
    725731    }
    726732}
     
    806812    {
    807813        RecordingInfo *p = *i;
    808814        if (p->GetRecordingStatus() == rsRecording ||
     815            p->GetRecordingStatus() == rsTuning ||
    809816            p->GetRecordingStatus() == rsWillRecord ||
    810817            p->GetRecordingStatus() == rsUnknown)
    811818        {
     
    10241031{
    10251032    PrintRec(p, "     >");
    10261033
    1027     if (p->GetRecordingStatus() == rsRecording)
     1034    if (p->GetRecordingStatus() == rsRecording ||
     1035        p->GetRecordingStatus() == rsTuning)
    10281036        return false;
    10291037
    10301038    RecList *showinglist = &titlelistmap[p->GetTitle()];
     
    11711179    while (i != worklist.end())
    11721180    {
    11731181        RecordingInfo *p = *i;
    1174         if (p->GetRecordingStatus() == rsRecording)
     1182        if (p->GetRecordingStatus() == rsRecording ||
     1183            p->GetRecordingStatus() == rsTuning)
    11751184            MarkOtherShowings(p);
    11761185        else if (p->GetRecordingStatus() == rsUnknown)
    11771186        {
     
    13041313        // Delete anything that has already passed since we can't
    13051314        // change history, can we?
    13061315        if (p->GetRecordingStatus() != rsRecording &&
     1316            p->GetRecordingStatus() != rsTuning &&
    13071317            p->GetScheduledEndTime() < schedTime &&
    13081318            p->GetRecordingEndTime() < schedTime)
    13091319        {
     
    14781488    RecConstIter it = reclist.begin();
    14791489    for (; it != reclist.end(); ++it)
    14801490    {
    1481         if (rsRecording == (*it)->GetRecordingStatus())
     1491        if (rsRecording == (*it)->GetRecordingStatus() ||
     1492            rsTuning == (*it)->GetRecordingStatus())
    14821493            recMap[(*it)->MakeUniqueKey()] = new ProgramInfo(**it);
    14831494    }
    14841495
     
    14931504    {
    14941505        if (pginfo.IsSameRecording(**it))
    14951506        {
    1496             return (rsRecording == (**it).GetRecordingStatus()) ?
    1497                 rsRecording : pginfo.GetRecordingStatus();
     1507            return (rsRecording == (**it).GetRecordingStatus() ||
     1508                    rsTuning == (**it).GetRecordingStatus()) ?
     1509                (**it).GetRecordingStatus() : pginfo.GetRecordingStatus();
    14981510        }
    14991511    }
    15001512
     
    16621674    // if possible, after the slaves connect and we start scheduling.
    16631675    MSqlQuery query(dbConn);
    16641676    query.prepare("UPDATE oldrecorded SET recstatus = :RSABORTED "
    1665                   "  WHERE recstatus = :RSRECORDING");
     1677                  "  WHERE recstatus = :RSRECORDING OR recstatus = :RSTUNING");
    16661678    query.bindValue(":RSABORTED", rsAborted);
    16671679    query.bindValue(":RSRECORDING", rsRecording);
     1680    query.bindValue(":RSTUNING", rsTuning);
    16681681    if (!query.exec())
    16691682        MythDB::DBError("UpdateAborted", query);
    16701683
     
    21112124            else
    21122125                nextRecording->SetRecordingStatus(rsOffLine);
    21132126            bool doSchedAfterStart =
    2114                 nextRecording->GetRecordingStatus() != rsRecording ||
     2127                (nextRecording->GetRecordingStatus() != rsRecording &&
     2128                 nextRecording->GetRecordingStatus() != rsTuning) ||
    21152129                schedAfterStartMap[nextRecording->GetRecordingRuleID()] ||
    21162130                (nextRecording->GetParentRecordingRuleID() &&
    21172131                 schedAfterStartMap[nextRecording->GetParentRecordingRuleID()]);
     
    21192133
    21202134            statuschanged = true;
    21212135
    2122             bool is_rec = (nextRecording->GetRecordingStatus() == rsRecording);
     2136            bool is_rec = (nextRecording->GetRecordingStatus() == rsRecording ||
     2137                           nextRecording->GetRecordingStatus() == rsTuning);
    21232138            msg = is_rec ?
    21242139                  QString("Started recording") :
    21252140                  QString("Canceled recording (%1)")
     
    24462461        RecordingInfo *pginfo = *recIter;
    24472462
    24482463        if ((pginfo->GetRecordingStatus() != rsRecording) &&
     2464            (pginfo->GetRecordingStatus() != rsTuning) &&
    24492465            (pginfo->GetRecordingStatus() != rsWillRecord))
    24502466            continue;
    24512467