Ticket #10490: 10490-debug-v2.patch

File 10490-debug-v2.patch, 6.3 KB (added by danielk, 12 years ago)

Updated patch.. this avoids extra FinishedRecording? calls

  • mythtv/libs/libmythtv/tv_rec.cpp

    diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp
    index c575c5a..888f02c 100644
    a b void TVRec::StartedRecording(RecordingInfo *curRec) 
    778778        return;
    779779
    780780    curRec->StartedRecording(rbFileExt);
    781     LOG(VB_RECORD, LOG_INFO, LOC + QString("StartedRecording(0x%1) fn(%2)")
    782             .arg((uint64_t)curRec,0,16).arg(curRec->GetPathname()));
     781    LOG(VB_RECORD, LOG_INFO, LOC + QString("StartedRecording(%1) fn(%2)")
     782        .arg(curRec->MakeUniqueKey()).arg(curRec->GetPathname()));
    783783
    784784    if (curRec->IsCommercialFree())
    785785        curRec->SaveCommFlagged(COMM_FLAG_COMMFREE);
    void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality *recq) 
    806806    if (recq)
    807807    {
    808808        LOG((recq->IsDamaged()) ? VB_GENERAL : VB_RECORD, LOG_INFO,
    809             QString("TVRec::FinishedRecording(%1) %2 recq:%3\n")
    810             .arg(curRec->GetTitle())
     809            LOC + QString("FinishedRecording(%1) %2 recq:%3\n")
     810            .arg(curRec->MakeUniqueKey())
    811811            .arg((recq->IsDamaged()) ? "damaged" : "good")
    812812            .arg(recq->toStringXML()));
    813813        is_good = !recq->IsDamaged();
    void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality *recq) 
    851851    // Print something informative to the log
    852852    LOG(VB_RECORD, LOG_INFO, LOC +
    853853        QString("FinishedRecording(%1)"
    854                 "\n\t\t\tkey: %2\n\t\t\t"
     854                "\n\t\t\ttitle: %2\n\t\t\t"
    855855                "in recgroup: %3 status: %4:%5 %6 %7")
    856             .arg(curRec->GetTitle())
    857856            .arg(curRec->MakeUniqueKey())
     857            .arg(curRec->GetTitle())
    858858            .arg(recgrp)
    859859            .arg(toString(ors, kSingleRecord))
    860860            .arg(toString(curRec->GetRecordingStatus(), kSingleRecord))
    void TVRec::run(void) 
    13001300                pendingRecordings.find(cardid) != pendingRecordings.end();
    13011301            pendingRecLock.unlock();
    13021302
     1303            const int time_out = 30;
     1304            bool debug_start_new = false;
     1305            if (!debugNextRecTime.isValid())
     1306                debugNextRecTime = now.addSecs(time_out+90);
     1307            if (now >= debugNextRecTime)
     1308            {
     1309                debug_start_new = true;
     1310                debugNextRecTime = now.addSecs(time_out);
     1311            }
     1312
    13031313            if (has_rec && (has_finish || (now > recordEndTime)))
    13041314            {
    13051315                SetPseudoLiveTVRecording(NULL);
    13061316            }
    13071317            else if (!has_rec && !rec_soon && curRecording &&
    1308                      (now >= curRecording->GetScheduledEndTime()))
     1318                     (now >= curRecording->GetScheduledEndTime() ||
     1319                      debug_start_new))
    13091320            {
    13101321                if (!switchingBuffer)
    13111322                {
     1323                    LOG(VB_RECORD, LOG_INFO, LOC +
     1324                        "Switching Buffer (" +
     1325                        QString("!has_rec(%1) && ").arg(has_rec) +
     1326                        QString("!rec_soon(%1) && (").arg(rec_soon) +
     1327                        now.toString(Qt::ISODate) + " >= " +
     1328                        curRecording->GetScheduledEndTime(ISODate) +
     1329                        QString("(%1) || ")
     1330                        .arg(now >= curRecording->GetScheduledEndTime()) +
     1331                        QString("debug_start_new(%1) ))")
     1332                                              .arg(debug_start_new));
     1333
    13121334                    switchingBuffer = true;
    13131335
    13141336                    SwitchLiveTVRingBuffer(channel->GetCurrentName(),
    13151337                                           false, true);
    1316 
    1317                     QDateTime starttime; starttime.setTime_t(0);
    1318                     if (curRecording)
    1319                         starttime = curRecording->GetRecordingStartTime();
    1320 
    1321                     LOG(VB_RECORD, LOG_INFO, LOC +
    1322                         QString("!has_rec(%1) ").arg(!has_rec) +
    1323                         QString("!rec_soon(%1) ").arg(!rec_soon) +
    1324                         QString("curRec(0x%1) ")
    1325                             .arg((uint64_t)curRecording,0,16) +
    1326                         QString("starttm(%1)")
    1327                             .arg(starttime.toString(Qt::ISODate)));
    13281338                }
    13291339                else
    13301340                {
    bool TVRec::CreateLiveTVRingBuffer(const QString & channum) 
    44094419bool TVRec::SwitchLiveTVRingBuffer(const QString & channum,
    44104420                                   bool discont, bool set_rec)
    44114421{
     4422    QString msg;
     4423    if (curRecording)
     4424    {
     4425        msg = QString(" curRec(%1) curRec.size(%2)")
     4426            .arg(curRecording->MakeUniqueKey())
     4427            .arg(curRecording->GetFilesize());
     4428    }
    44124429    LOG(VB_RECORD, LOG_INFO, LOC +
    4413         QString("SwitchLiveTVRingBuffer(discont %1, set_rec %2")
    4414             .arg(discont).arg(set_rec));
     4430        QString("SwitchLiveTVRingBuffer(discont %1, set_next_rec %2)")
     4431        .arg(discont).arg(set_rec) + msg);
    44154432
    44164433    RecordingInfo *pginfo = NULL;
    44174434    RingBuffer    *rb = NULL;
    bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, 
    44334450        return false;
    44344451    }
    44354452
    4436     ProgramInfo *pi = tvchain->GetProgramAt(-1);
    4437     if (pi)
    4438     {
    4439         RecordingInfo *oldinfo = new RecordingInfo(*pi);
    4440         delete pi;
    4441         FinishedRecording(oldinfo, NULL);
    4442         delete oldinfo;
    4443     }
     4453    QString oldcardtype = tvchain->GetCardType(-1);
    44444454
    44454455    pginfo->MarkAsInUse(true, kRecorderInUseID);
    44464456    pginfo->SaveAutoExpire(kLiveTVAutoExpire);
    bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, 
    44584468    }
    44594469    else if (!set_rec)
    44604470    {
    4461         if (curRecording)
     4471        // dummy recordings are finished before this
     4472        // is called and other recordings must be finished..
     4473        if (curRecording && oldcardtype != "DUMMY")
    44624474        {
     4475            FinishedRecording(curRecording, NULL);
    44634476            curRecording->MarkAsInUse(false, kRecorderInUseID);
    44644477            delete curRecording;
    44654478        }
  • mythtv/libs/libmythtv/tv_rec.h

    diff --git a/mythtv/libs/libmythtv/tv_rec.h b/mythtv/libs/libmythtv/tv_rec.h
    index ce54bff..018fcf4 100644
    a b class MTV_PUBLIC TVRec : public SignalMonitorListener, public QRunnable 
    387387
    388388    // LiveTV file chain
    389389    LiveTVChain *tvchain;
     390    QDateTime debugNextRecTime;
    390391
    391392    // RingBuffer info
    392393    RingBuffer  *ringBuffer;