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) |
778 | 778 | return; |
779 | 779 | |
780 | 780 | 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())); |
783 | 783 | |
784 | 784 | if (curRec->IsCommercialFree()) |
785 | 785 | curRec->SaveCommFlagged(COMM_FLAG_COMMFREE); |
… |
… |
void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality *recq) |
806 | 806 | if (recq) |
807 | 807 | { |
808 | 808 | 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()) |
811 | 811 | .arg((recq->IsDamaged()) ? "damaged" : "good") |
812 | 812 | .arg(recq->toStringXML())); |
813 | 813 | is_good = !recq->IsDamaged(); |
… |
… |
void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality *recq) |
851 | 851 | // Print something informative to the log |
852 | 852 | LOG(VB_RECORD, LOG_INFO, LOC + |
853 | 853 | QString("FinishedRecording(%1)" |
854 | | "\n\t\t\tkey: %2\n\t\t\t" |
| 854 | "\n\t\t\ttitle: %2\n\t\t\t" |
855 | 855 | "in recgroup: %3 status: %4:%5 %6 %7") |
856 | | .arg(curRec->GetTitle()) |
857 | 856 | .arg(curRec->MakeUniqueKey()) |
| 857 | .arg(curRec->GetTitle()) |
858 | 858 | .arg(recgrp) |
859 | 859 | .arg(toString(ors, kSingleRecord)) |
860 | 860 | .arg(toString(curRec->GetRecordingStatus(), kSingleRecord)) |
… |
… |
void TVRec::run(void) |
1300 | 1300 | pendingRecordings.find(cardid) != pendingRecordings.end(); |
1301 | 1301 | pendingRecLock.unlock(); |
1302 | 1302 | |
| 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 | |
1303 | 1313 | if (has_rec && (has_finish || (now > recordEndTime))) |
1304 | 1314 | { |
1305 | 1315 | SetPseudoLiveTVRecording(NULL); |
1306 | 1316 | } |
1307 | 1317 | else if (!has_rec && !rec_soon && curRecording && |
1308 | | (now >= curRecording->GetScheduledEndTime())) |
| 1318 | (now >= curRecording->GetScheduledEndTime() || |
| 1319 | debug_start_new)) |
1309 | 1320 | { |
1310 | 1321 | if (!switchingBuffer) |
1311 | 1322 | { |
| 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 | |
1312 | 1334 | switchingBuffer = true; |
1313 | 1335 | |
1314 | 1336 | SwitchLiveTVRingBuffer(channel->GetCurrentName(), |
1315 | 1337 | 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))); |
1328 | 1338 | } |
1329 | 1339 | else |
1330 | 1340 | { |
… |
… |
bool TVRec::CreateLiveTVRingBuffer(const QString & channum) |
4409 | 4419 | bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, |
4410 | 4420 | bool discont, bool set_rec) |
4411 | 4421 | { |
| 4422 | QString msg; |
| 4423 | if (curRecording) |
| 4424 | { |
| 4425 | msg = QString(" curRec(%1) curRec.size(%2)") |
| 4426 | .arg(curRecording->MakeUniqueKey()) |
| 4427 | .arg(curRecording->GetFilesize()); |
| 4428 | } |
4412 | 4429 | 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); |
4415 | 4432 | |
4416 | 4433 | RecordingInfo *pginfo = NULL; |
4417 | 4434 | RingBuffer *rb = NULL; |
… |
… |
bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, |
4433 | 4450 | return false; |
4434 | 4451 | } |
4435 | 4452 | |
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); |
4444 | 4454 | |
4445 | 4455 | pginfo->MarkAsInUse(true, kRecorderInUseID); |
4446 | 4456 | pginfo->SaveAutoExpire(kLiveTVAutoExpire); |
… |
… |
bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, |
4458 | 4468 | } |
4459 | 4469 | else if (!set_rec) |
4460 | 4470 | { |
4461 | | if (curRecording) |
| 4471 | // dummy recordings are finished before this |
| 4472 | // is called and other recordings must be finished.. |
| 4473 | if (curRecording && oldcardtype != "DUMMY") |
4462 | 4474 | { |
| 4475 | FinishedRecording(curRecording, NULL); |
4463 | 4476 | curRecording->MarkAsInUse(false, kRecorderInUseID); |
4464 | 4477 | delete curRecording; |
4465 | 4478 | } |
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 |
387 | 387 | |
388 | 388 | // LiveTV file chain |
389 | 389 | LiveTVChain *tvchain; |
| 390 | QDateTime debugNextRecTime; |
390 | 391 | |
391 | 392 | // RingBuffer info |
392 | 393 | RingBuffer *ringBuffer; |