Ticket #8856: StartRecording-WaitForTune-v2.patch
File StartRecording-WaitForTune-v2.patch, 3.0 KB (added by , 14 years ago) |
---|
-
libs/libmythtv/tv_rec.cpp
122 122 stateChangeLock(QMutex::Recursive), 123 123 pendingRecLock(QMutex::Recursive), 124 124 internalState(kState_None), desiredNextState(kState_None), 125 changeState(false), pauseNotify(true),125 changeState(false), m_SMdone(true), pauseNotify(true), 126 126 stateFlags(0), lastTuningRequest(0), 127 127 triggerEventLoopLock(QMutex::NonRecursive), 128 128 triggerEventLoopSignal(false), … … 1618 1618 stateChangeLock.lock(); 1619 1619 1620 1620 // verify that we were triggered. 1621 ok = (tuningRequests.empty() && !changeState);1621 ok = (tuningRequests.empty() && m_SMdone && !changeState); 1622 1622 } 1623 1623 return ok; 1624 1624 } … … 3507 3507 3508 3508 // The dequeue isn't safe to do until now because we 3509 3509 // release the stateChangeLock to teardown a recorder 3510 if (request.flags & kFlagRecording) 3511 m_SMdone = false; 3510 3512 tuningRequests.dequeue(); 3511 3513 3512 3514 // Now we start new stuff … … 3542 3544 if (HasFlags(kFlagWaitingForSignal) && !(streamData = TuningSignalCheck())) 3543 3545 return; 3544 3546 3547 m_SMdone = true; 3548 3545 3549 if (HasFlags(kFlagNeedToStartRecorder)) 3546 3550 { 3547 3551 if (recorder) … … 3788 3792 if (!channum.isEmpty()) 3789 3793 { 3790 3794 if (!input.isEmpty()) 3791 ok =channel->SelectInput(input, channum, true);3795 channel->SelectInput(input, channum, true); 3792 3796 else 3793 {3794 3797 channel->SelectChannel(channum, true); 3795 ok = true;3796 }3797 3798 } 3798 3799 3799 if (!ok)3800 {3801 if (!(request.flags & kFlagLiveTV) || !(request.flags & kFlagEITScan))3802 {3803 if (curRecording)3804 curRecording->SetRecordingStatus(rsFailed);3805 3806 VERBOSE(VB_IMPORTANT, LOC_ERR +3807 QString("Failed to set channel to %1. "3808 "Reverting to kState_None")3809 .arg(channum));3810 if (kState_None != internalState)3811 ChangeState(kState_None);3812 else3813 tuningRequests.enqueue(TuningRequest(kFlagKillRec));3814 return;3815 }3816 else3817 {3818 VERBOSE(VB_IMPORTANT, LOC_ERR +3819 QString("Failed to set channel to %1.").arg(channum));3820 }3821 }3822 3823 3800 // Start signal (or channel change) monitoring 3824 3801 VERBOSE(VB_RECORD, LOC + "Starting Signal Monitor"); 3825 3802 bool error = false; -
libs/libmythtv/tv_rec.h
355 355 TVState internalState; 356 356 TVState desiredNextState; 357 357 bool changeState; 358 bool m_SMdone; 358 359 bool pauseNotify; 359 360 uint stateFlags; 360 361 TuningQueue tuningRequests;