diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp
index c575c5a..7048818 100644
a
|
b
|
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 | { |
… |
… |
void TVRec::TuningNewRecorder(MPEGStreamData *streamData) |
3913 | 3924 | { |
3914 | 3925 | LOG(VB_RECORD, LOG_INFO, LOC + "Starting Recorder"); |
3915 | 3926 | |
3916 | | bool had_dummyrec = false; |
3917 | | if (HasFlags(kFlagDummyRecorderRunning)) |
3918 | | { |
3919 | | FinishedRecording(curRecording, NULL); |
3920 | | ClearFlags(kFlagDummyRecorderRunning); |
3921 | | curRecording->MarkAsInUse(false, kRecorderInUseID); |
3922 | | had_dummyrec = true; |
3923 | | } |
| 3927 | bool had_dummyrec = HasFlags(kFlagDummyRecorderRunning); |
3924 | 3928 | |
3925 | 3929 | RecordingInfo *rec = lastTuningRequest.program; |
3926 | 3930 | |
… |
… |
void TVRec::TuningNewRecorder(MPEGStreamData *streamData) |
3932 | 3936 | bool ok; |
3933 | 3937 | if (!ringBuffer) |
3934 | 3938 | { |
| 3939 | if (had_dummyrec) |
| 3940 | { |
| 3941 | FinishedRecording(curRecording, NULL); |
| 3942 | curRecording->MarkAsInUse(false, kRecorderInUseID); |
| 3943 | } |
3935 | 3944 | ok = CreateLiveTVRingBuffer(channel->GetCurrentName()); |
3936 | 3945 | SetFlags(kFlagRingBufferReady); |
3937 | 3946 | } |
3938 | 3947 | else |
| 3948 | { |
3939 | 3949 | ok = SwitchLiveTVRingBuffer(channel->GetCurrentName(), |
3940 | 3950 | true, !had_dummyrec && recorder); |
| 3951 | } |
| 3952 | ClearFlags(kFlagDummyRecorderRunning); |
3941 | 3953 | if (!ok) |
3942 | 3954 | { |
3943 | 3955 | LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to create RingBuffer 2"); |
… |
… |
void TVRec::TuningNewRecorder(MPEGStreamData *streamData) |
3945 | 3957 | } |
3946 | 3958 | rec = curRecording; // new'd in Create/SwitchLiveTVRingBuffer() |
3947 | 3959 | } |
| 3960 | else if (had_dummyrec) |
| 3961 | { |
| 3962 | FinishedRecording(curRecording, NULL); |
| 3963 | ClearFlags(kFlagDummyRecorderRunning); |
| 3964 | curRecording->MarkAsInUse(false, kRecorderInUseID); |
| 3965 | } |
3948 | 3966 | |
3949 | 3967 | if (lastTuningRequest.flags & kFlagRecording) |
3950 | 3968 | { |
… |
… |
bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, |
4439 | 4457 | RecordingInfo *oldinfo = new RecordingInfo(*pi); |
4440 | 4458 | delete pi; |
4441 | 4459 | FinishedRecording(oldinfo, NULL); |
| 4460 | oldinfo->MarkAsInUse(false, kRecorderInUseID); |
4442 | 4461 | delete oldinfo; |
4443 | 4462 | } |
4444 | 4463 | |
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; |