diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp index e02c8038848..ff2eea0688f 100644 --- a/mythtv/libs/libmythtv/tv_rec.cpp +++ b/mythtv/libs/libmythtv/tv_rec.cpp @@ -42,7 +42,8 @@ #define DEBUG_CHANNEL_PREFIX 0 /**< set to 1 to channel prefixing */ -#define LOC QString("TVRec[%1]: ").arg(inputid) +#define LOC QString("TVRec[%1]: ").arg(m_inputid) +#define LOC2 QString("TVRec[%1]: ").arg(inputid) // for static functions /// How many milliseconds the signal monitor should wait between checks const uint TVRec::kSignalMonitoringRate = 50; /* msec */ @@ -80,50 +81,13 @@ static int eit_start_rand(int eitTransportTimeout); * \sa Init() * \param _inputid */ -TVRec::TVRec(int _inputid) - // Various components TVRec coordinates - : recorder(nullptr), channel(nullptr), signalMonitor(nullptr), - scanner(nullptr), - signalEventCmdSent(false), - signalMonitorCheckCnt(0), - reachedRecordingDeadline(false), - reachedPreFail(false), +TVRec::TVRec(int inputid) // Various threads - eventThread(new MThread("TVRecEvent", this)), - recorderThread(nullptr), - // Configuration variables from database - transcodeFirst(false), - earlyCommFlag(false), runJobOnHostOnly(false), - eitCrawlIdleStart(60), eitTransportTimeout(5*60), - audioSampleRateDB(0), - overRecordSecNrml(0), overRecordSecCat(0), - overRecordCategory(""), + : m_eventThread(new MThread("TVRecEvent", this)), // Configuration variables from setup rutines - inputid(_inputid), parentid(0), ispip(false), - // State variables - stateChangeLock(QMutex::Recursive), - pendingRecLock(QMutex::Recursive), - internalState(kState_None), desiredNextState(kState_None), - changeState(false), pauseNotify(true), - stateFlags(0), lastTuningRequest(0), - triggerEventLoopLock(QMutex::NonRecursive), - triggerEventLoopSignal(false), - triggerEventSleepLock(QMutex::NonRecursive), - triggerEventSleepSignal(false), - switchingBuffer(false), - m_recStatus(RecStatus::Unknown), - // Current recording info - curRecording(nullptr), - overrecordseconds(0), - // Pseudo LiveTV recording - pseudoLiveTVRecording(nullptr), - nextLiveTVDir(""), nextLiveTVDirLock(), - // tvchain - tvchain(nullptr), - // RingBuffer info - ringBuffer(nullptr), rbFileExt("ts") + m_inputid(inputid) { - s_inputs[inputid] = this; + s_inputs[m_inputid] = this; } bool TVRec::CreateChannel(const QString &startchannel, @@ -134,30 +98,30 @@ bool TVRec::CreateChannel(const QString &startchannel, // If this recorder is a child and its parent is not in error, we // do not need nor want to set the channel. bool setchan = true; - if (parentid) + if (m_parentid) { - TVRec *parentTV = GetTVRec(parentid); + TVRec *parentTV = GetTVRec(m_parentid); if (parentTV && parentTV->GetState() == kState_Error) setchan = false; } - channel = ChannelBase::CreateChannel( - this, genOpt, dvbOpt, fwOpt, - startchannel, enter_power_save_mode, rbFileExt, setchan); + m_channel = ChannelBase::CreateChannel( + this, m_genOpt, m_dvbOpt, m_fwOpt, + startchannel, enter_power_save_mode, m_rbFileExt, setchan); - if (genOpt.inputtype == "VBOX") + if (m_genOpt.inputtype == "VBOX") { - if (!CardUtil::IsVBoxPresent(inputid)) + if (!CardUtil::IsVBoxPresent(m_inputid)) { // VBOX presence failed recorder is marked errored LOG(VB_GENERAL, LOG_ERR, LOC + QString("CreateChannel(%1) failed due to VBOX not responding " "to network check on inputid [%2]") - .arg(startchannel).arg(inputid)); - channel = nullptr; + .arg(startchannel).arg(m_inputid)); + m_channel = nullptr; } } - if (!channel) + if (!m_channel) { SetFlags(kFlagErrored, __FILE__, __LINE__); return false; @@ -173,31 +137,31 @@ bool TVRec::CreateChannel(const QString &startchannel, */ bool TVRec::Init(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (!GetDevices(inputid, parentid, genOpt, dvbOpt, fwOpt)) + if (!GetDevices(m_inputid, m_parentid, m_genOpt, m_dvbOpt, m_fwOpt)) return false; SetRecordingStatus(RecStatus::Unknown, __LINE__); // configure the Channel instance - QString startchannel = GetStartChannel(inputid); + QString startchannel = GetStartChannel(m_inputid); if (!CreateChannel(startchannel, true)) return false; - transcodeFirst = + m_transcodeFirst = gCoreContext->GetBoolSetting("AutoTranscodeBeforeAutoCommflag", false); - earlyCommFlag = gCoreContext->GetBoolSetting("AutoCommflagWhileRecording", false); - runJobOnHostOnly = gCoreContext->GetBoolSetting("JobsRunOnRecordHost", false); - eitTransportTimeout = + m_earlyCommFlag = gCoreContext->GetBoolSetting("AutoCommflagWhileRecording", false); + m_runJobOnHostOnly = gCoreContext->GetBoolSetting("JobsRunOnRecordHost", false); + m_eitTransportTimeout = max(gCoreContext->GetNumSetting("EITTransportTimeout", 5) * 60, 6); - eitCrawlIdleStart = gCoreContext->GetNumSetting("EITCrawIdleStart", 60); - audioSampleRateDB = gCoreContext->GetNumSetting("AudioSampleRate"); - overRecordSecNrml = gCoreContext->GetNumSetting("RecordOverTime"); - overRecordSecCat = gCoreContext->GetNumSetting("CategoryOverTime") * 60; - overRecordCategory= gCoreContext->GetSetting("OverTimeCategory"); + m_eitCrawlIdleStart = gCoreContext->GetNumSetting("EITCrawIdleStart", 60); + m_audioSampleRateDB = gCoreContext->GetNumSetting("AudioSampleRate"); + m_overRecordSecNrml = gCoreContext->GetNumSetting("RecordOverTime"); + m_overRecordSecCat = gCoreContext->GetNumSetting("CategoryOverTime") * 60; + m_overRecordCategory= gCoreContext->GetSetting("OverTimeCategory"); - eventThread->start(); + m_eventThread->start(); WaitForEventThreadSleep(); @@ -210,20 +174,20 @@ bool TVRec::Init(void) */ TVRec::~TVRec() { - s_inputs.remove(inputid); + s_inputs.remove(m_inputid); if (HasFlags(kFlagRunMainLoop)) { ClearFlags(kFlagRunMainLoop, __FILE__, __LINE__); - eventThread->wait(); - delete eventThread; - eventThread = nullptr; + m_eventThread->wait(); + delete m_eventThread; + m_eventThread = nullptr; } - if (channel) + if (m_channel) { - delete channel; - channel = nullptr; + delete m_channel; + m_channel = nullptr; } } @@ -233,10 +197,10 @@ void TVRec::TeardownAll(void) TeardownSignalMonitor(); - if (scanner) + if (m_scanner) { - delete scanner; - scanner = nullptr; + delete m_scanner; + m_scanner = nullptr; } TeardownRecorder(kFlagKillRec); @@ -246,9 +210,9 @@ void TVRec::TeardownAll(void) void TVRec::WakeEventLoop(void) { - QMutexLocker locker(&triggerEventLoopLock); - triggerEventLoopSignal = true; - triggerEventLoopWait.wakeAll(); + QMutexLocker locker(&m_triggerEventLoopLock); + m_triggerEventLoopSignal = true; + m_triggerEventLoopWait.wakeAll(); } /** \fn TVRec::GetState() const @@ -259,9 +223,9 @@ void TVRec::WakeEventLoop(void) */ TVState TVRec::GetState(void) const { - if (changeState) + if (m_changeState) return kState_ChangingState; - return internalState; + return m_internalState; } /** \fn TVRec::GetRecording(void) @@ -273,18 +237,18 @@ TVState TVRec::GetState(void) const */ ProgramInfo *TVRec::GetRecording(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); ProgramInfo *tmppginfo = nullptr; - if (curRecording && !changeState) + if (m_curRecording && !m_changeState) { - tmppginfo = new ProgramInfo(*curRecording); + tmppginfo = new ProgramInfo(*m_curRecording); tmppginfo->SetRecordingStatus(RecStatus::Recording); } else tmppginfo = new ProgramInfo(); - tmppginfo->SetInputID(inputid); + tmppginfo->SetInputID(m_inputid); return tmppginfo; } @@ -306,16 +270,16 @@ ProgramInfo *TVRec::GetRecording(void) void TVRec::RecordPending(const ProgramInfo *rcinfo, int secsleft, bool hasLater) { - QMutexLocker statelock(&stateChangeLock); - QMutexLocker pendlock(&pendingRecLock); + QMutexLocker statelock(&m_stateChangeLock); + QMutexLocker pendlock(&m_pendingRecLock); if (secsleft < 0) { LOG(VB_RECORD, LOG_INFO, LOC + "Pending recording revoked on " + QString("inputid [%1]").arg(rcinfo->GetInputID())); - PendingMap::iterator it = pendingRecordings.find(rcinfo->GetInputID()); - if (it != pendingRecordings.end()) + PendingMap::iterator it = m_pendingRecordings.find(rcinfo->GetInputID()); + if (it != m_pendingRecordings.end()) { (*it).ask = false; (*it).doNotAsk = (*it).canceled = true; @@ -333,17 +297,17 @@ void TVRec::RecordPending(const ProgramInfo *rcinfo, int secsleft, pending.ask = true; pending.doNotAsk = false; - pendingRecordings[rcinfo->GetInputID()] = pending; + m_pendingRecordings[rcinfo->GetInputID()] = pending; // If this isn't a recording for this instance to make, we are done - if (rcinfo->GetInputID() != inputid) + if (rcinfo->GetInputID() != m_inputid) return; // We also need to check our input groups vector inputids = CardUtil::GetConflictingInputs( rcinfo->GetInputID()); - pendingRecordings[rcinfo->GetInputID()].possibleConflicts = inputids; + m_pendingRecordings[rcinfo->GetInputID()].possibleConflicts = inputids; pendlock.unlock(); statelock.unlock(); @@ -358,8 +322,8 @@ void TVRec::RecordPending(const ProgramInfo *rcinfo, int secsleft, */ void TVRec::SetPseudoLiveTVRecording(RecordingInfo *pi) { - RecordingInfo *old_rec = pseudoLiveTVRecording; - pseudoLiveTVRecording = pi; + RecordingInfo *old_rec = m_pseudoLiveTVRecording; + m_pseudoLiveTVRecording = pi; if (old_rec) delete old_rec; } @@ -369,9 +333,9 @@ void TVRec::SetPseudoLiveTVRecording(RecordingInfo *pi) */ QDateTime TVRec::GetRecordEndTime(const ProgramInfo *pi) const { - bool spcat = (!overRecordCategory.isEmpty() && - pi->GetCategory() == overRecordCategory); - int secs = (spcat) ? overRecordSecCat : overRecordSecNrml; + bool spcat = (!m_overRecordCategory.isEmpty() && + pi->GetCategory() == m_overRecordCategory); + int secs = (spcat) ? m_overRecordSecCat : m_overRecordSecNrml; return pi->GetRecordingEndTime().addSecs(secs); } @@ -382,12 +346,12 @@ QDateTime TVRec::GetRecordEndTime(const ProgramInfo *pi) const */ void TVRec::CancelNextRecording(bool cancel) { - QMutexLocker pendlock(&pendingRecLock); + QMutexLocker pendlock(&m_pendingRecLock); LOG(VB_RECORD, LOG_INFO, LOC + QString("CancelNextRecording(%1) -- begin").arg(cancel)); - PendingMap::iterator it = pendingRecordings.find(inputid); - if (it == pendingRecordings.end()) + PendingMap::iterator it = m_pendingRecordings.find(m_inputid); + if (it == m_pendingRecordings.end()) { LOG(VB_RECORD, LOG_INFO, LOC + QString("CancelNextRecording(%1) -- " "error, unknown recording").arg(cancel)); @@ -410,7 +374,7 @@ void TVRec::CancelNextRecording(bool cancel) LOG(VB_RECORD, LOG_INFO, LOC + QString("CancelNextRecording -- inputid [%1]") - .arg(inputid)); + .arg(m_inputid)); RecordPending((*it).info, -1, false); } @@ -440,7 +404,7 @@ RecStatus::Type TVRec::StartRecording(ProgramInfo *pginfo) LOG(VB_RECORD, LOG_INFO, LOC + QString("StartRecording(%1)") .arg(rcinfo->toString(ProgramInfo::kTitleSubtitle))); - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); QString msg(""); if (m_recStatus != RecStatus::Failing) @@ -451,25 +415,25 @@ RecStatus::Type TVRec::StartRecording(ProgramInfo *pginfo) // We need to do this check early so we don't cancel an overrecord // that we're trying to extend. - if (internalState != kState_WatchingLiveTV && + if (m_internalState != kState_WatchingLiveTV && m_recStatus != RecStatus::Failing && - curRecording && curRecording->IsSameProgramWeakCheck(*rcinfo)) + m_curRecording && m_curRecording->IsSameProgramWeakCheck(*rcinfo)) { - int post_roll_seconds = curRecording->GetRecordingEndTime() - .secsTo(recordEndTime); + int post_roll_seconds = m_curRecording->GetRecordingEndTime() + .secsTo(m_recordEndTime); - curRecording->SetRecordingRuleType(rcinfo->GetRecordingRuleType()); - curRecording->SetRecordingRuleID(rcinfo->GetRecordingRuleID()); - curRecording->SetRecordingEndTime(rcinfo->GetRecordingEndTime()); - curRecording->UpdateRecordingEnd(); + m_curRecording->SetRecordingRuleType(rcinfo->GetRecordingRuleType()); + m_curRecording->SetRecordingRuleID(rcinfo->GetRecordingRuleID()); + m_curRecording->SetRecordingEndTime(rcinfo->GetRecordingEndTime()); + m_curRecording->UpdateRecordingEnd(); - recordEndTime = curRecording->GetRecordingEndTime() + m_recordEndTime = m_curRecording->GetRecordingEndTime() .addSecs(post_roll_seconds); msg = QString("updating recording: %1 %2 %3 %4") - .arg(curRecording->GetTitle()).arg(curRecording->GetChanID()) - .arg(curRecording->GetRecordingStartTime(MythDate::ISODate)) - .arg(curRecording->GetRecordingEndTime(MythDate::ISODate)); + .arg(m_curRecording->GetTitle()).arg(m_curRecording->GetChanID()) + .arg(m_curRecording->GetRecordingStartTime(MythDate::ISODate)) + .arg(m_curRecording->GetRecordingEndTime(MythDate::ISODate)); LOG(VB_RECORD, LOG_INFO, LOC + msg); ClearFlags(kFlagCancelNextRecording, __FILE__, __LINE__); @@ -483,13 +447,13 @@ RecStatus::Type TVRec::StartRecording(ProgramInfo *pginfo) PendingMap::iterator it; bool has_pending; - pendingRecLock.lock(); - if ((it = pendingRecordings.find(inputid)) != pendingRecordings.end()) + m_pendingRecLock.lock(); + if ((it = m_pendingRecordings.find(m_inputid)) != m_pendingRecordings.end()) { (*it).ask = (*it).doNotAsk = false; cancelNext = (*it).canceled; } - pendingRecLock.unlock(); + m_pendingRecLock.unlock(); // Flush out events... WaitForEventThreadSleep(); @@ -497,12 +461,12 @@ RecStatus::Type TVRec::StartRecording(ProgramInfo *pginfo) // Rescan pending recordings since the event loop may have deleted // a stale entry. If this happens the info pointer will not be valid // since the HandlePendingRecordings loop will have deleted it. - pendingRecLock.lock(); - it = pendingRecordings.find(inputid); - has_pending = (it != pendingRecordings.end()); + m_pendingRecLock.lock(); + it = m_pendingRecordings.find(m_inputid); + has_pending = (it != m_pendingRecordings.end()); if (has_pending) pendinfo = *it; - pendingRecLock.unlock(); + m_pendingRecLock.unlock(); // If the needed input is in a shared input group, and we are // not canceling the recording anyway, check other recorders @@ -598,31 +562,31 @@ RecStatus::Type TVRec::StartRecording(ProgramInfo *pginfo) else { // If in post-roll, end recording - stateChangeLock.unlock(); + m_stateChangeLock.unlock(); StopRecording(); - stateChangeLock.lock(); + m_stateChangeLock.lock(); } } if (!cancelNext && (GetState() == kState_None)) { - if (tvchain) + if (m_tvChain) { QString message = QString("LIVETV_EXITED"); - MythEvent me(message, tvchain->GetID()); + MythEvent me(message, m_tvChain->GetID()); gCoreContext->dispatch(me); - tvchain->DecrRef(); - tvchain = nullptr; + m_tvChain->DecrRef(); + m_tvChain = nullptr; } - recordEndTime = GetRecordEndTime(rcinfo); + m_recordEndTime = GetRecordEndTime(rcinfo); // Tell event loop to begin recording. - curRecording = new RecordingInfo(*rcinfo); - curRecording->MarkAsInUse(true, kRecorderInUseID); - StartedRecording(curRecording); - pginfo->SetRecordingID(curRecording->GetRecordingID()); - pginfo->SetRecordingStartTime(curRecording->GetRecordingStartTime()); + m_curRecording = new RecordingInfo(*rcinfo); + m_curRecording->MarkAsInUse(true, kRecorderInUseID); + StartedRecording(m_curRecording); + pginfo->SetRecordingID(m_curRecording->GetRecordingID()); + pginfo->SetRecordingStartTime(m_curRecording->GetRecordingStartTime()); // Make sure scheduler is allowed to end this recording ClearFlags(kFlagCancelNextRecording, __FILE__, __LINE__); @@ -636,13 +600,13 @@ RecStatus::Type TVRec::StartRecording(ProgramInfo *pginfo) else if (!cancelNext && (GetState() == kState_WatchingLiveTV)) { SetPseudoLiveTVRecording(new RecordingInfo(*rcinfo)); - recordEndTime = GetRecordEndTime(rcinfo); + m_recordEndTime = GetRecordEndTime(rcinfo); SetRecordingStatus(RecStatus::Recording, __LINE__); // We want the frontend to change channel for recording // and disable the UI for channel change, PiP, etc. - QString message = QString("LIVETV_WATCH %1 1").arg(inputid); + QString message = QString("LIVETV_WATCH %1 1").arg(m_inputid); QStringList prog; rcinfo->ToStringList(prog); MythEvent me(message, prog); @@ -663,30 +627,30 @@ RecStatus::Type TVRec::StartRecording(ProgramInfo *pginfo) else { msg += QString("But the current state is: %1") - .arg(StateToString(internalState)); + .arg(StateToString(m_internalState)); SetRecordingStatus(RecStatus::TunerBusy, __LINE__); } - if (curRecording && internalState == kState_RecordingOnly) + if (m_curRecording && m_internalState == kState_RecordingOnly) msg += QString("\n\t\t\tCurrently recording: %1 %2 %3 %4") - .arg(curRecording->GetTitle()).arg(curRecording->GetChanID()) - .arg(curRecording->GetRecordingStartTime(MythDate::ISODate)) - .arg(curRecording->GetRecordingEndTime(MythDate::ISODate)); + .arg(m_curRecording->GetTitle()).arg(m_curRecording->GetChanID()) + .arg(m_curRecording->GetRecordingStartTime(MythDate::ISODate)) + .arg(m_curRecording->GetRecordingEndTime(MythDate::ISODate)); LOG(VB_GENERAL, LOG_INFO, LOC + msg); } - for (int i = 0; i < pendingRecordings.size(); i++) - delete pendingRecordings[i].info; - pendingRecordings.clear(); + for (int i = 0; i < m_pendingRecordings.size(); i++) + delete m_pendingRecordings[i].info; + m_pendingRecordings.clear(); if (!did_switch) { WaitForEventThreadSleep(); - QMutexLocker locker(&pendingRecLock); - if ((curRecording) && - (curRecording->GetRecordingStatus() == RecStatus::Failed) && + QMutexLocker locker(&m_pendingRecLock); + if ((m_curRecording) && + (m_curRecording->GetRecordingStatus() == RecStatus::Failed) && (m_recStatus == RecStatus::Recording || m_recStatus == RecStatus::Tuning || m_recStatus == RecStatus::Failing)) @@ -701,7 +665,7 @@ RecStatus::Type TVRec::StartRecording(ProgramInfo *pginfo) RecStatus::Type TVRec::GetRecordingStatus(void) const { - QMutexLocker pendlock(&pendingRecLock); + QMutexLocker pendlock(&m_pendingRecLock); return m_recStatus; } @@ -716,10 +680,10 @@ void TVRec::SetRecordingStatus( } else { - pendingRecLock.lock(); + m_pendingRecLock.lock(); old_status = m_recStatus; m_recStatus = new_status; - pendingRecLock.unlock(); + m_pendingRecLock.unlock(); } LOG(VB_RECORD, LOG_INFO, LOC + @@ -739,14 +703,14 @@ void TVRec::StopRecording(bool killFile) { if (StateIsRecording(GetState())) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); if (killFile) SetFlags(kFlagKillRec, __FILE__, __LINE__); - else if (curRecording) + else if (m_curRecording) { QDateTime now = MythDate::current(true); - if (now < curRecording->GetDesiredEndTime()) - curRecording->SetDesiredEndTime(now); + if (now < m_curRecording->GetDesiredEndTime()) + m_curRecording->SetDesiredEndTime(now); } ChangeState(RemoveRecording(GetState())); // wait for state change to take effect @@ -823,7 +787,7 @@ void TVRec::StartedRecording(RecordingInfo *curRec) if (!curRec) return; - curRec->StartedRecording(rbFileExt); + curRec->StartedRecording(m_rbFileExt); LOG(VB_RECORD, LOG_INFO, LOC + QString("StartedRecording(%1) fn(%2)") .arg(curRec->MakeUniqueKey()).arg(curRec->GetPathname())); @@ -918,8 +882,8 @@ void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality *recq) return; // Notify the frontend watching live tv that this file is final - if (tvchain) - tvchain->FinishedRecording(curRec); + if (m_tvChain) + m_tvChain->FinishedRecording(curRec); // if this is a dummy recorder, do no more.. if (HasFlags(kFlagDummyRecorderRunning)) @@ -985,21 +949,21 @@ void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality *recq) int secsSince = curRec->GetRecordingStartTime() .secsTo(MythDate::current()); QString message = QString("DONE_RECORDING %1 %2 %3") - .arg(inputid).arg(secsSince).arg(GetFramesWritten()); + .arg(m_inputid).arg(secsSince).arg(GetFramesWritten()); MythEvent me(message); gCoreContext->dispatch(me); // Handle JobQueue QHash::iterator autoJob = - autoRunJobs.find(curRec->MakeUniqueKey()); - if (autoJob == autoRunJobs.end()) + m_autoRunJobs.find(curRec->MakeUniqueKey()); + if (autoJob == m_autoRunJobs.end()) { LOG(VB_GENERAL, LOG_INFO, "autoRunJobs not initialized until FinishedRecording()"); AutoRunInitType t = (recgrp == "LiveTV") ? kAutoRunNone : kAutoRunProfile; InitAutoRunJobs(curRec, t, nullptr, __LINE__); - autoJob = autoRunJobs.find(curRec->MakeUniqueKey()); + autoJob = m_autoRunJobs.find(curRec->MakeUniqueKey()); } LOG(VB_JOBQUEUE, LOG_INFO, QString("AutoRunJobs 0x%1").arg(*autoJob,0,16)); if ((recgrp == "LiveTV") || (fsize < 1000) || @@ -1012,13 +976,13 @@ void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality *recq) } if (*autoJob != JOB_NONE) JobQueue::QueueRecordingJobs(*curRec, *autoJob); - autoRunJobs.erase(autoJob); + m_autoRunJobs.erase(autoJob); } #define TRANSITION(ASTATE,BSTATE) \ - ((internalState == (ASTATE)) && (desiredNextState == (BSTATE))) -#define SET_NEXT() do { nextState = desiredNextState; changed = true; } while(0) -#define SET_LAST() do { nextState = internalState; changed = true; } while(0) + ((m_internalState == (ASTATE)) && (m_desiredNextState == (BSTATE))) +#define SET_NEXT() do { nextState = m_desiredNextState; changed = true; } while(0) +#define SET_LAST() do { nextState = m_internalState; changed = true; } while(0) /** \fn TVRec::HandleStateChange(void) * \brief Changes the internalState to the desiredNextState if possible. @@ -1029,41 +993,41 @@ void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality *recq) */ void TVRec::HandleStateChange(void) { - TVState nextState = internalState; + TVState nextState = m_internalState; bool changed = false; QString transMsg = QString(" %1 to %2") .arg(StateToString(nextState)) - .arg(StateToString(desiredNextState)); + .arg(StateToString(m_desiredNextState)); - if (desiredNextState == internalState) + if (m_desiredNextState == m_internalState) { LOG(VB_GENERAL, LOG_ERR, LOC + "HandleStateChange(): Null transition" + transMsg); - changeState = false; + m_changeState = false; return; } // Make sure EIT scan is stopped before any tuning, // to avoid race condition with it's tuning requests. - if (scanner && HasFlags(kFlagEITScannerRunning)) + if (m_scanner && HasFlags(kFlagEITScannerRunning)) { - scanner->StopActiveScan(); + m_scanner->StopActiveScan(); ClearFlags(kFlagEITScannerRunning, __FILE__, __LINE__); - eitScanStartTime = MythDate::current().addSecs( - eitCrawlIdleStart + eit_start_rand(eitTransportTimeout)); + m_eitScanStartTime = MythDate::current().addSecs( + m_eitCrawlIdleStart + eit_start_rand(m_eitTransportTimeout)); } // Handle different state transitions if (TRANSITION(kState_None, kState_WatchingLiveTV)) { - tuningRequests.enqueue(TuningRequest(kFlagLiveTV)); + m_tuningRequests.enqueue(TuningRequest(kFlagLiveTV)); SET_NEXT(); } else if (TRANSITION(kState_WatchingLiveTV, kState_None)) { - tuningRequests.enqueue(TuningRequest(kFlagKillRec|kFlagKillRingBuffer)); + m_tuningRequests.enqueue(TuningRequest(kFlagKillRec|kFlagKillRingBuffer)); SET_NEXT(); } else if (TRANSITION(kState_WatchingLiveTV, kState_RecordingOnly)) @@ -1075,12 +1039,12 @@ void TVRec::HandleStateChange(void) else if (TRANSITION(kState_None, kState_RecordingOnly)) { SetPseudoLiveTVRecording(nullptr); - tuningRequests.enqueue(TuningRequest(kFlagRecording, curRecording)); + m_tuningRequests.enqueue(TuningRequest(kFlagRecording, m_curRecording)); SET_NEXT(); } else if (TRANSITION(kState_RecordingOnly, kState_None)) { - tuningRequests.enqueue( + m_tuningRequests.enqueue( TuningRequest(kFlagCloseRec|kFlagKillRingBuffer| (GetFlags()&kFlagKillRec))); SET_NEXT(); @@ -1090,18 +1054,18 @@ void TVRec::HandleStateChange(void) LOG(VB_GENERAL, LOG_INFO, LOC + msg + transMsg); // update internal state variable - internalState = nextState; - changeState = false; + m_internalState = nextState; + m_changeState = false; - eitScanStartTime = MythDate::current(); - if (scanner && (internalState == kState_None)) + m_eitScanStartTime = MythDate::current(); + if (m_scanner && (m_internalState == kState_None)) { - eitScanStartTime = eitScanStartTime.addSecs( - eitCrawlIdleStart + eit_start_rand(eitTransportTimeout)); + m_eitScanStartTime = m_eitScanStartTime.addSecs( + m_eitCrawlIdleStart + eit_start_rand(m_eitTransportTimeout)); } else { - eitScanStartTime = eitScanStartTime.addYears(1); + m_eitScanStartTime = m_eitScanStartTime.addYears(1); } } #undef TRANSITION @@ -1113,9 +1077,9 @@ void TVRec::HandleStateChange(void) */ void TVRec::ChangeState(TVState nextState) { - QMutexLocker lock(&stateChangeLock); - desiredNextState = nextState; - changeState = true; + QMutexLocker lock(&m_stateChangeLock); + m_desiredNextState = nextState; + m_changeState = true; WakeEventLoop(); } @@ -1138,51 +1102,51 @@ void TVRec::TeardownRecorder(uint request_flags) LOG(VB_RECORD, LOG_INFO, LOC + QString("TeardownRecorder(%1)") .arg((request_flags & kFlagKillRec) ? "kFlagKillRec" : "")); - pauseNotify = false; - ispip = false; + m_pauseNotify = false; + m_ispip = false; - if (recorder && HasFlags(kFlagRecorderRunning)) + if (m_recorder && HasFlags(kFlagRecorderRunning)) { - recorder->StopRecording(); - recorderThread->wait(); - delete recorderThread; - recorderThread = nullptr; + m_recorder->StopRecording(); + m_recorderThread->wait(); + delete m_recorderThread; + m_recorderThread = nullptr; } ClearFlags(kFlagRecorderRunning | kFlagNeedToStartRecorder, __FILE__, __LINE__); RecordingQuality *recq = nullptr; - if (recorder) + if (m_recorder) { if (GetV4LChannel()) - channel->SetFd(-1); + m_channel->SetFd(-1); - recq = recorder->GetRecordingQuality(curRecording); + recq = m_recorder->GetRecordingQuality(m_curRecording); - QMutexLocker locker(&stateChangeLock); - delete recorder; - recorder = nullptr; + QMutexLocker locker(&m_stateChangeLock); + delete m_recorder; + m_recorder = nullptr; } - if (ringBuffer) + if (m_ringBuffer) { LOG(VB_FILE, LOG_INFO, LOC + "calling StopReads()"); - ringBuffer->StopReads(); + m_ringBuffer->StopReads(); } - if (curRecording) + if (m_curRecording) { if (!!(request_flags & kFlagKillRec)) - curRecording->SetRecordingStatus(RecStatus::Failed); + m_curRecording->SetRecordingStatus(RecStatus::Failed); - FinishedRecording(curRecording, recq); + FinishedRecording(m_curRecording, recq); - curRecording->MarkAsInUse(false, kRecorderInUseID); - delete curRecording; - curRecording = nullptr; + m_curRecording->MarkAsInUse(false, kRecorderInUseID); + delete m_curRecording; + m_curRecording = nullptr; } - pauseNotify = true; + m_pauseNotify = true; if (GetDTVChannel()) GetDTVChannel()->EnterPowerSavingMode(); @@ -1190,31 +1154,31 @@ void TVRec::TeardownRecorder(uint request_flags) DTVRecorder *TVRec::GetDTVRecorder(void) { - return dynamic_cast(recorder); + return dynamic_cast(m_recorder); } void TVRec::CloseChannel(void) { - if (channel && - ((genOpt.inputtype == "DVB" && dvbOpt.dvb_on_demand) || - genOpt.inputtype == "FREEBOX" || - genOpt.inputtype == "VBOX" || - genOpt.inputtype == "HDHOMERUN" || - CardUtil::IsV4L(genOpt.inputtype))) + if (m_channel && + ((m_genOpt.inputtype == "DVB" && m_dvbOpt.dvb_on_demand) || + m_genOpt.inputtype == "FREEBOX" || + m_genOpt.inputtype == "VBOX" || + m_genOpt.inputtype == "HDHOMERUN" || + CardUtil::IsV4L(m_genOpt.inputtype))) { - channel->Close(); + m_channel->Close(); } } DTVChannel *TVRec::GetDTVChannel(void) { - return dynamic_cast(channel); + return dynamic_cast(m_channel); } V4LChannel *TVRec::GetV4LChannel(void) { #ifdef USING_V4L2 - return dynamic_cast(channel); + return dynamic_cast(m_channel); #else return nullptr; #endif // USING_V4L2 @@ -1295,29 +1259,29 @@ static int eit_start_rand(int eitTransportTimeout) /// \brief Event handling method, contains event loop. void TVRec::run(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); SetFlags(kFlagRunMainLoop, __FILE__, __LINE__); ClearFlags(kFlagExitPlayer | kFlagFinishRecording, __FILE__, __LINE__); - eitScanStartTime = MythDate::current(); + m_eitScanStartTime = MythDate::current(); // check whether we should use the EITScanner in this TVRec instance - if (CardUtil::IsEITCapable(genOpt.inputtype) && + if (CardUtil::IsEITCapable(m_genOpt.inputtype) && (!GetDTVChannel() || GetDTVChannel()->IsMaster()) && - (dvbOpt.dvb_eitscan || get_use_eit(inputid))) + (m_dvbOpt.dvb_eitscan || get_use_eit(m_inputid))) { - scanner = new EITScanner(inputid); - eitScanStartTime = eitScanStartTime.addSecs( - eitCrawlIdleStart + eit_start_rand(eitTransportTimeout)); + m_scanner = new EITScanner(m_inputid); + m_eitScanStartTime = m_eitScanStartTime.addSecs( + m_eitCrawlIdleStart + eit_start_rand(m_eitTransportTimeout)); } else { - eitScanStartTime = eitScanStartTime.addYears(1); + m_eitScanStartTime = m_eitScanStartTime.addYears(1); } while (HasFlags(kFlagRunMainLoop)) { // If there is a state change queued up, do it... - if (changeState) + if (m_changeState) { HandleStateChange(); ClearFlags(kFlagFrontendReady | kFlagCancelNextRecording, @@ -1352,8 +1316,8 @@ void TVRec::run(void) // over or someone has asked us to finish the recording. // Add an extra 60 seconds to the recording end time if we // might want a back to back recording. - QDateTime recEnd = (!pendingRecordings.empty()) ? - recordEndTime.addSecs(60) : recordEndTime; + QDateTime recEnd = (!m_pendingRecordings.empty()) ? + m_recordEndTime.addSecs(60) : m_recordEndTime; if ((GetState() == kState_RecordingOnly) && (MythDate::current() > recEnd || HasFlags(kFlagFinishRecording))) @@ -1362,22 +1326,22 @@ void TVRec::run(void) ClearFlags(kFlagFinishRecording, __FILE__, __LINE__); } - if (curRecording) + if (m_curRecording) { - curRecording->UpdateInUseMark(); + m_curRecording->UpdateInUseMark(); - if (recorder) + if (m_recorder) { - recorder->SavePositionMap(); + m_recorder->SavePositionMap(); // Check for recorder errors - if (recorder->IsErrored()) + if (m_recorder->IsErrored()) { - curRecording->SetRecordingStatus(RecStatus::Failed); + m_curRecording->SetRecordingStatus(RecStatus::Failed); if (GetState() == kState_WatchingLiveTV) { - QString message = QString("QUIT_LIVETV %1").arg(inputid); + QString message = QString("QUIT_LIVETV %1").arg(m_inputid); MythEvent me(message); gCoreContext->dispatch(me); } @@ -1392,35 +1356,35 @@ void TVRec::run(void) { QDateTime now = MythDate::current(); bool has_finish = HasFlags(kFlagFinishRecording); - bool has_rec = pseudoLiveTVRecording; + bool has_rec = m_pseudoLiveTVRecording; bool enable_ui = true; - pendingRecLock.lock(); + m_pendingRecLock.lock(); bool rec_soon = - pendingRecordings.find(inputid) != pendingRecordings.end(); - pendingRecLock.unlock(); + m_pendingRecordings.find(m_inputid) != m_pendingRecordings.end(); + m_pendingRecLock.unlock(); - if (has_rec && (has_finish || (now > recordEndTime))) + if (has_rec && (has_finish || (now > m_recordEndTime))) { SetPseudoLiveTVRecording(nullptr); } - else if (!has_rec && !rec_soon && curRecording && - (now >= curRecording->GetScheduledEndTime())) + else if (!has_rec && !rec_soon && m_curRecording && + (now >= m_curRecording->GetScheduledEndTime())) { - if (!switchingBuffer) + if (!m_switchingBuffer) { LOG(VB_RECORD, LOG_INFO, LOC + "Switching Buffer (" + QString("!has_rec(%1) && ").arg(has_rec) + QString("!rec_soon(%1) && (").arg(rec_soon) + MythDate::toString(now, MythDate::ISODate) + " >= " + - curRecording->GetScheduledEndTime(MythDate::ISODate) + + m_curRecording->GetScheduledEndTime(MythDate::ISODate) + QString("(%1) ))") - .arg(now >= curRecording->GetScheduledEndTime())); + .arg(now >= m_curRecording->GetScheduledEndTime())); - switchingBuffer = true; + m_switchingBuffer = true; - SwitchLiveTVRingBuffer(channel->GetChannelName(), + SwitchLiveTVRingBuffer(m_channel->GetChannelName(), false, true); } else @@ -1434,7 +1398,7 @@ void TVRec::run(void) if (enable_ui) { LOG(VB_RECORD, LOG_INFO, LOC + "Enabling Full LiveTV UI."); - QString message = QString("LIVETV_WATCH %1 0").arg(inputid); + QString message = QString("LIVETV_WATCH %1 0").arg(m_inputid); MythEvent me(message); gCoreContext->dispatch(me); } @@ -1444,27 +1408,27 @@ void TVRec::run(void) // state (either kState_RecordingOnly or kState_None). if (HasFlags(kFlagExitPlayer)) { - if (internalState == kState_WatchingLiveTV) + if (m_internalState == kState_WatchingLiveTV) ChangeState(kState_None); - else if (StateIsPlaying(internalState)) - ChangeState(RemovePlaying(internalState)); + else if (StateIsPlaying(m_internalState)) + ChangeState(RemovePlaying(m_internalState)); ClearFlags(kFlagExitPlayer, __FILE__, __LINE__); } - if (scanner && channel && - MythDate::current() > eitScanStartTime) + if (m_scanner && m_channel && + MythDate::current() > m_eitScanStartTime) { - if (!dvbOpt.dvb_eitscan) + if (!m_dvbOpt.dvb_eitscan) { LOG(VB_EIT, LOG_INFO, LOC + "EIT scanning disabled for this input."); - eitScanStartTime = eitScanStartTime.addYears(1); + m_eitScanStartTime = m_eitScanStartTime.addYears(1); } else if (!get_use_eit(GetInputId())) { LOG(VB_EIT, LOG_INFO, LOC + "EIT scanning disabled for all sources on this input."); - eitScanStartTime = eitScanStartTime.addYears(1); + m_eitScanStartTime = m_eitScanStartTime.addYears(1); } else { @@ -1474,15 +1438,15 @@ void TVRec::run(void) s_inputsLock.lockForRead(); bool allow_eit = true; vector inputids = - CardUtil::GetConflictingInputs(inputid); + CardUtil::GetConflictingInputs(m_inputid); InputInfo busy_input; for (uint i = 0; i < inputids.size() && allow_eit; ++i) allow_eit = !RemoteIsBusy(inputids[i], busy_input); if (allow_eit) { - scanner->StartActiveScan(this, eitTransportTimeout); + m_scanner->StartActiveScan(this, m_eitTransportTimeout); SetFlags(kFlagEITScannerRunning, __FILE__, __LINE__); - eitScanStartTime = + m_eitScanStartTime = QDateTime::currentDateTime().addYears(1); } else @@ -1490,8 +1454,8 @@ void TVRec::run(void) LOG(VB_CHANNEL, LOG_INFO, LOC + QString( "Postponing EIT scan on input [%1] " "because input %2 is busy") - .arg(inputid).arg(busy_input.m_inputid)); - eitScanStartTime = eitScanStartTime.addSecs(300); + .arg(m_inputid).arg(busy_input.m_inputid)); + m_eitScanStartTime = m_eitScanStartTime.addSecs(300); } s_inputsLock.unlock(); } @@ -1501,29 +1465,29 @@ void TVRec::run(void) // as the end recording code does not have a trigger... // NOTE: If you change anything here, make sure that // WaitforEventThreadSleep() will still work... - if (tuningRequests.empty() && !changeState) + if (m_tuningRequests.empty() && !m_changeState) { lock.unlock(); // stateChangeLock { - QMutexLocker locker(&triggerEventSleepLock); - triggerEventSleepSignal = true; - triggerEventSleepWait.wakeAll(); + QMutexLocker locker(&m_triggerEventSleepLock); + m_triggerEventSleepSignal = true; + m_triggerEventSleepWait.wakeAll(); } sched_yield(); { - QMutexLocker locker(&triggerEventLoopLock); + QMutexLocker locker(&m_triggerEventLoopLock); // We check triggerEventLoopSignal because it is possible // that WakeEventLoop() was called since we // unlocked the stateChangeLock - if (!triggerEventLoopSignal) + if (!m_triggerEventLoopSignal) { - triggerEventLoopWait.wait( - &triggerEventLoopLock, 1000 /* ms */); + m_triggerEventLoopWait.wait( + &m_triggerEventLoopLock, 1000 /* ms */); } - triggerEventLoopSignal = false; + m_triggerEventLoopSignal = false; } lock.relock(); // stateChangeLock @@ -1558,21 +1522,21 @@ bool TVRec::WaitForEventThreadSleep(bool wake, ulong time) if (wake) WakeEventLoop(); - stateChangeLock.unlock(); + m_stateChangeLock.unlock(); sched_yield(); { - QMutexLocker locker(&triggerEventSleepLock); - if (!triggerEventSleepSignal) - triggerEventSleepWait.wait(&triggerEventSleepLock); - triggerEventSleepSignal = false; + QMutexLocker locker(&m_triggerEventSleepLock); + if (!m_triggerEventSleepSignal) + m_triggerEventSleepWait.wait(&m_triggerEventSleepLock); + m_triggerEventSleepSignal = false; } - stateChangeLock.lock(); + m_stateChangeLock.lock(); // verify that we were triggered. - ok = (tuningRequests.empty() && !changeState); + ok = (m_tuningRequests.empty() && !m_changeState); int te = t2.elapsed(); if (!ok && te < 10) @@ -1583,11 +1547,11 @@ bool TVRec::WaitForEventThreadSleep(bool wake, ulong time) void TVRec::HandlePendingRecordings(void) { - QMutexLocker pendlock(&pendingRecLock); + QMutexLocker pendlock(&m_pendingRecLock); PendingMap::iterator it, next; - for (it = pendingRecordings.begin(); it != pendingRecordings.end();) + for (it = m_pendingRecordings.begin(); it != m_pendingRecordings.end();) { next = it; ++next; if (MythDate::current() > (*it).recordingStart.addSecs(30)) @@ -1598,20 +1562,20 @@ void TVRec::HandlePendingRecordings(void) .arg((*it).info->GetTitle())); delete (*it).info; - pendingRecordings.erase(it); + m_pendingRecordings.erase(it); } it = next; } - if (pendingRecordings.empty()) + if (m_pendingRecordings.empty()) return; // Make sure EIT scan is stopped so it does't interfere - if (scanner && HasFlags(kFlagEITScannerRunning)) + if (m_scanner && HasFlags(kFlagEITScannerRunning)) { LOG(VB_CHANNEL, LOG_INFO, LOC + "Stopping active EIT scan for pending recording."); - tuningRequests.enqueue(TuningRequest(kFlagNoRec)); + m_tuningRequests.enqueue(TuningRequest(kFlagNoRec)); } // If we have a pending recording and AskAllowRecording @@ -1619,19 +1583,19 @@ void TVRec::HandlePendingRecordings(void) // ready send an ASK_RECORDING query to frontend. bool has_rec = false; - it = pendingRecordings.begin(); - if ((1 == pendingRecordings.size()) && + it = m_pendingRecordings.begin(); + if ((1 == m_pendingRecordings.size()) && (*it).ask && - ((*it).info->GetInputID() == inputid) && + ((*it).info->GetInputID() == m_inputid) && (GetState() == kState_WatchingLiveTV)) { CheckForRecGroupChange(); - has_rec = pseudoLiveTVRecording && - (pseudoLiveTVRecording->GetRecordingEndTime() > + has_rec = m_pseudoLiveTVRecording && + (m_pseudoLiveTVRecording->GetRecordingEndTime() > (*it).recordingStart); } - for (it = pendingRecordings.begin(); it != pendingRecordings.end(); ++it) + for (it = m_pendingRecordings.begin(); it != m_pendingRecordings.end(); ++it) { if (!(*it).ask && !(*it).doNotAsk) continue; @@ -1643,7 +1607,7 @@ void TVRec::HandlePendingRecordings(void) (*it).canceled = true; QString query = QString("ASK_RECORDING %1 %2 %3 %4") - .arg(inputid) + .arg(m_inputid) .arg(timeuntil) .arg(has_rec ? 1 : 0) .arg((*it).hasLaterShowing ? 1 : 0); @@ -1750,7 +1714,7 @@ QString TVRec::GetStartChannel(uint inputid) { QString startchan; - LOG(VB_RECORD, LOG_INFO, LOC + QString("GetStartChannel[%1]") + LOG(VB_RECORD, LOG_INFO, LOC2 + QString("GetStartChannel[%1]") .arg(inputid)); // Get last tuned channel from database, to use as starting channel @@ -1770,7 +1734,7 @@ QString TVRec::GetStartChannel(uint inputid) startchan = query.value(0).toString(); if (!startchan.isEmpty()) { - LOG(VB_CHANNEL, LOG_INFO, LOC + QString("Start channel: %1.") + LOG(VB_CHANNEL, LOG_INFO, LOC2 + QString("Start channel: %1.") .arg(startchan)); return startchan; } @@ -1794,7 +1758,7 @@ QString TVRec::GetStartChannel(uint inputid) startchan = query.value(0).toString(); if (!startchan.isEmpty()) { - LOG(VB_GENERAL, LOG_ERR, LOC + QString("Start channel from DB is " + LOG(VB_GENERAL, LOG_ERR, LOC2 + QString("Start channel from DB is " "empty, setting to '%1' instead.").arg(startchan)); return startchan; } @@ -1818,7 +1782,7 @@ QString TVRec::GetStartChannel(uint inputid) startchan = query.value(0).toString(); if (!startchan.isEmpty()) { - LOG(VB_GENERAL, LOG_ERR, LOC + QString("Start channel invalid, " + LOG(VB_GENERAL, LOG_ERR, LOC2 + QString("Start channel invalid, " "setting to '%1' on input %2 instead.").arg(startchan) .arg(query.value(1).toString())); return startchan; @@ -1827,7 +1791,7 @@ QString TVRec::GetStartChannel(uint inputid) // If there are no valid channels, just use a random channel startchan = "3"; - LOG(VB_GENERAL, LOG_ERR, LOC + QString("Problem finding starting channel, " + LOG(VB_GENERAL, LOG_ERR, LOC2 + QString("Problem finding starting channel, " "setting to default of '%1'.").arg(startchan)); return startchan; } @@ -1902,9 +1866,9 @@ bool TVRec::SetupDTVSignalMonitor(bool EITscan) } QString recording_type = "all"; - RecordingInfo *rec = lastTuningRequest.program; + RecordingInfo *rec = m_lastTuningRequest.program; RecordingProfile profile; - recProfileName = LoadProfile(tvchain, rec, profile); + m_recProfileName = LoadProfile(m_tvChain, rec, profile); const StandardSetting *setting = profile.byName("recordingtype"); if (setting) recording_type = setting->getValue(); @@ -1922,7 +1886,7 @@ bool TVRec::SetupDTVSignalMonitor(bool EITscan) ATSCStreamData *asd = dynamic_cast(sd); if (!asd) { - sd = asd = new ATSCStreamData(major, minor, inputid); + sd = asd = new ATSCStreamData(major, minor, m_inputid); sd->SetCaching(true); if (GetDTVRecorder()) GetDTVRecorder()->SetStreamData(asd); @@ -1945,7 +1909,7 @@ bool TVRec::SetupDTVSignalMonitor(bool EITscan) // Check if this is an DVB channel int progNum = dtvchan->GetProgramNumber(); - if ((progNum >= 0) && (tuningmode == "dvb") && (genOpt.inputtype != "VBOX")) + if ((progNum >= 0) && (tuningmode == "dvb") && (m_genOpt.inputtype != "VBOX")) { int netid = dtvchan->GetOriginalNetworkID(); int tsid = dtvchan->GetTransportID(); @@ -1953,7 +1917,7 @@ bool TVRec::SetupDTVSignalMonitor(bool EITscan) DVBStreamData *dsd = dynamic_cast(sd); if (!dsd) { - sd = dsd = new DVBStreamData(netid, tsid, progNum, inputid); + sd = dsd = new DVBStreamData(netid, tsid, progNum, m_inputid); sd->SetCaching(true); if (GetDTVRecorder()) GetDTVRecorder()->SetStreamData(dsd); @@ -1963,7 +1927,7 @@ bool TVRec::SetupDTVSignalMonitor(bool EITscan) QString("DVB service_id %1 on net_id %2 tsid %3") .arg(progNum).arg(netid).arg(tsid)); - apply_broken_dvb_driver_crc_hack(channel, sd); + apply_broken_dvb_driver_crc_hack(m_channel, sd); dsd->Reset(); sm->SetStreamData(sd); @@ -1991,7 +1955,7 @@ bool TVRec::SetupDTVSignalMonitor(bool EITscan) { if (!sd) { - sd = new MPEGStreamData(progNum, inputid, true); + sd = new MPEGStreamData(progNum, m_inputid, true); sd->SetCaching(true); if (GetDTVRecorder()) GetDTVRecorder()->SetStreamData(sd); @@ -2000,7 +1964,7 @@ bool TVRec::SetupDTVSignalMonitor(bool EITscan) QString msg = QString("MPEG program number: %1").arg(progNum); LOG(VB_RECORD, LOG_INFO, LOC + msg); - apply_broken_dvb_driver_crc_hack(channel, sd); + apply_broken_dvb_driver_crc_hack(m_channel, sd); sd->Reset(); sm->SetStreamData(sd); @@ -2069,25 +2033,25 @@ bool TVRec::SetupSignalMonitor(bool tablemon, bool EITscan, bool notify) .arg(tablemon).arg(notify)); // if it already exists, there no need to initialize it - if (signalMonitor) + if (m_signalMonitor) return true; // if there is no channel object we can't monitor it - if (!channel) + if (!m_channel) return false; // nothing to monitor here either (DummyChannel) - if (genOpt.inputtype == "IMPORT" || genOpt.inputtype == "DEMO") + if (m_genOpt.inputtype == "IMPORT" || m_genOpt.inputtype == "DEMO") return true; // make sure statics are initialized SignalMonitorValue::Init(); - if (SignalMonitor::IsSupported(genOpt.inputtype) && channel->Open()) - signalMonitor = SignalMonitor::Init(genOpt.inputtype, inputid, - channel, false); + if (SignalMonitor::IsSupported(m_genOpt.inputtype) && m_channel->Open()) + m_signalMonitor = SignalMonitor::Init(m_genOpt.inputtype, m_inputid, + m_channel, false); - if (signalMonitor) + if (m_signalMonitor) { LOG(VB_RECORD, LOG_INFO, LOC + "Signal monitor successfully created"); // If this is a monitor for Digital TV, initialize table monitors @@ -2100,14 +2064,14 @@ bool TVRec::SetupSignalMonitor(bool tablemon, bool EITscan, bool notify) return false; } - signalMonitor->AddListener(this); - signalMonitor->SetUpdateRate(signalMonitor->HasExtraSlowTuning() ? + m_signalMonitor->AddListener(this); + m_signalMonitor->SetUpdateRate(m_signalMonitor->HasExtraSlowTuning() ? kSignalMonitoringRate * 5 : kSignalMonitoringRate); - signalMonitor->SetNotifyFrontend(notify); + m_signalMonitor->SetNotifyFrontend(notify); // Start the monitoring thread - signalMonitor->Start(); + m_signalMonitor->Start(); } return true; @@ -2119,7 +2083,7 @@ bool TVRec::SetupSignalMonitor(bool tablemon, bool EITscan, bool notify) */ void TVRec::TeardownSignalMonitor() { - if (!signalMonitor) + if (!m_signalMonitor) return; LOG(VB_RECORD, LOG_INFO, LOC + "TeardownSignalMonitor() -- begin"); @@ -2135,10 +2099,10 @@ void TVRec::TeardownSignalMonitor() dtvChan->SaveCachedPids(pid_cache); } - if (signalMonitor) + if (m_signalMonitor) { - delete signalMonitor; - signalMonitor = nullptr; + delete m_signalMonitor; + m_signalMonitor = nullptr; } LOG(VB_RECORD, LOG_INFO, LOC + "TeardownSignalMonitor() -- end"); @@ -2161,9 +2125,9 @@ int TVRec::SetSignalMonitoringRate(int rate, int notifyFrontend) LOG(VB_RECORD, LOG_INFO, LOC + msg.arg(rate).arg(notifyFrontend) + "-- start"); - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (!SignalMonitor::IsSupported(genOpt.inputtype)) + if (!SignalMonitor::IsSupported(m_genOpt.inputtype)) { LOG(VB_GENERAL, LOG_ERR, LOC + "Signal Monitoring is notsupported by your hardware."); @@ -2180,10 +2144,10 @@ int TVRec::SetSignalMonitoringRate(int rate, int notifyFrontend) ClearFlags(kFlagRingBufferReady, __FILE__, __LINE__); TuningRequest req = (rate > 0) ? - TuningRequest(kFlagAntennaAdjust, channel->GetChannelName()) : + TuningRequest(kFlagAntennaAdjust, m_channel->GetChannelName()) : TuningRequest(kFlagLiveTV); - tuningRequests.enqueue(req); + m_tuningRequests.enqueue(req); // Wait for RingBuffer reset while (!HasFlags(kFlagRingBufferReady)) @@ -2195,7 +2159,7 @@ int TVRec::SetSignalMonitoringRate(int rate, int notifyFrontend) DTVSignalMonitor *TVRec::GetDTVSignalMonitor(void) { - return dynamic_cast(signalMonitor); + return dynamic_cast(m_signalMonitor); } /** \fn TVRec::ShouldSwitchToAnotherInput(QString) @@ -2242,7 +2206,7 @@ bool TVRec::ShouldSwitchToAnotherInput(QString chanid) query.bindValue(":CHANID", chanid); query.bindValue(":CHANNUM", channelname); query.bindValue(":CALLSIGN", callsign); - query.bindValue(":INPUTID", inputid); + query.bindValue(":INPUTID", m_inputid); if (!query.exec() || !query.isActive()) { @@ -2251,7 +2215,7 @@ bool TVRec::ShouldSwitchToAnotherInput(QString chanid) else if (query.size() > 0) { msg = "Found channel (%1) on current input[%2]."; - LOG(VB_RECORD, LOG_INFO, LOC + msg.arg(channelname).arg(inputid)); + LOG(VB_RECORD, LOG_INFO, LOC + msg.arg(channelname).arg(m_inputid)); return false; } @@ -2268,7 +2232,7 @@ bool TVRec::ShouldSwitchToAnotherInput(QString chanid) query.bindValue(":CHANID", chanid); query.bindValue(":CHANNUM", channelname); query.bindValue(":CALLSIGN", callsign); - query.bindValue(":INPUTID", inputid); + query.bindValue(":INPUTID", m_inputid); if (!query.exec() || !query.isActive()) { @@ -2299,10 +2263,10 @@ bool TVRec::ShouldSwitchToAnotherInput(QString chanid) */ bool TVRec::CheckChannel(QString name) const { - if (!channel) + if (!m_channel) return false; - return channel->CheckChannel(name); + return m_channel->CheckChannel(name); } /** \fn QString add_spacer(const QString&, const QString&) @@ -2364,8 +2328,8 @@ bool TVRec::CheckChannelPrefix(const QString &prefix, QString inputquery[2] = { - QString(" AND capturecard.cardid = '%1'").arg(inputid), - QString(" AND capturecard.cardid != '%1'").arg(inputid), + QString(" AND capturecard.cardid = '%1'").arg(m_inputid), + QString(" AND capturecard.cardid != '%1'").arg(m_inputid), }; vector fchanid; @@ -2448,7 +2412,7 @@ bool TVRec::CheckChannelPrefix(const QString &prefix, if (fchannum[i] == prefix) { is_complete_valid_channel_on_rec = finputid[i]; - if (finputid[i] == inputid) + if (finputid[i] == m_inputid) break; } } @@ -2481,13 +2445,13 @@ bool TVRec::CheckChannelPrefix(const QString &prefix, bool TVRec::SetVideoFiltersForChannel(uint sourceid, const QString &channum) { - if (!recorder) + if (!m_recorder) return false; QString videoFilters = ChannelUtil::GetVideoFilters(sourceid, channum); if (!videoFilters.isEmpty()) { - recorder->SetVideoFilters(videoFilters); + m_recorder->SetVideoFilters(videoFilters); return true; } @@ -2500,7 +2464,7 @@ bool TVRec::SetVideoFiltersForChannel(uint sourceid, */ bool TVRec::IsReallyRecording(void) { - return ((recorder && recorder->IsRecording()) || + return ((m_recorder && m_recorder->IsRecording()) || HasFlags(kFlagDummyRecorderRunning)); } @@ -2517,29 +2481,29 @@ bool TVRec::IsBusy(InputInfo *busy_input, int time_buffer) const busy_input->Clear(); - if (!channel) + if (!m_channel) return false; - if (!channel->GetInputID()) + if (!m_channel->GetInputID()) return false; uint chanid = 0; if (GetState() != kState_None) { - busy_input->m_inputid = channel->GetInputID(); - chanid = channel->GetChanID(); + busy_input->m_inputid = m_channel->GetInputID(); + chanid = m_channel->GetChanID(); } PendingInfo pendinfo; bool has_pending; { - pendingRecLock.lock(); - PendingMap::const_iterator it = pendingRecordings.find(inputid); - has_pending = (it != pendingRecordings.end()); + m_pendingRecLock.lock(); + PendingMap::const_iterator it = m_pendingRecordings.find(m_inputid); + has_pending = (it != m_pendingRecordings.end()); if (has_pending) pendinfo = *it; - pendingRecLock.unlock(); + m_pendingRecLock.unlock(); } if (!busy_input->m_inputid && has_pending) @@ -2552,7 +2516,7 @@ bool TVRec::IsBusy(InputInfo *busy_input, int time_buffer) const QString channum, input; if (pendinfo.info->QueryTuningInfo(channum, input)) { - busy_input->m_inputid = channel->GetInputID(); + busy_input->m_inputid = m_channel->GetInputID(); chanid = pendinfo.info->GetChanID(); } } @@ -2579,10 +2543,10 @@ bool TVRec::IsBusy(InputInfo *busy_input, int time_buffer) const */ float TVRec::GetFramerate(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (recorder) - return recorder->GetFrameRate(); + if (m_recorder) + return m_recorder->GetFrameRate(); return -1.0f; } @@ -2594,10 +2558,10 @@ float TVRec::GetFramerate(void) */ long long TVRec::GetFramesWritten(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (recorder) - return recorder->GetFramesWritten(); + if (m_recorder) + return m_recorder->GetFramesWritten(); return -1; } @@ -2609,10 +2573,10 @@ long long TVRec::GetFramesWritten(void) */ long long TVRec::GetFilePosition(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (ringBuffer) - return ringBuffer->GetWritePosition(); + if (m_ringBuffer) + return m_ringBuffer->GetWritePosition(); return -1; } @@ -2625,10 +2589,10 @@ long long TVRec::GetFilePosition(void) */ int64_t TVRec::GetKeyframePosition(uint64_t desired) const { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (recorder) - return recorder->GetKeyframePosition(desired); + if (m_recorder) + return m_recorder->GetKeyframePosition(desired); return -1; } @@ -2643,10 +2607,10 @@ int64_t TVRec::GetKeyframePosition(uint64_t desired) const bool TVRec::GetKeyframePositions( int64_t start, int64_t end, frm_pos_map_t &map) const { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (recorder) - return recorder->GetKeyframePositions(start, end, map); + if (m_recorder) + return m_recorder->GetKeyframePositions(start, end, map); return false; } @@ -2654,10 +2618,10 @@ bool TVRec::GetKeyframePositions( bool TVRec::GetKeyframeDurations( int64_t start, int64_t end, frm_pos_map_t &map) const { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (recorder) - return recorder->GetKeyframeDurations(start, end, map); + if (m_recorder) + return m_recorder->GetKeyframeDurations(start, end, map); return false; } @@ -2670,11 +2634,11 @@ bool TVRec::GetKeyframeDurations( long long TVRec::GetMaxBitrate(void) const { long long bitrate; - if (genOpt.inputtype == "MPEG") + if (m_genOpt.inputtype == "MPEG") bitrate = 10080000LL; // use DVD max bit rate - if (genOpt.inputtype == "HDPVR") + if (m_genOpt.inputtype == "HDPVR") bitrate = 20200000LL; // Peek bit rate for HD-PVR - else if (!CardUtil::IsEncoder(genOpt.inputtype)) + else if (!CardUtil::IsEncoder(m_genOpt.inputtype)) bitrate = 22200000LL; // 1080i else // frame grabber bitrate = 10080000LL; // use DVD max bit rate, probably too big @@ -2689,21 +2653,21 @@ long long TVRec::GetMaxBitrate(void) const */ void TVRec::SpawnLiveTV(LiveTVChain *newchain, bool pip, QString startchan) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - tvchain = newchain; - tvchain->IncrRef(); // mark it for TVRec use - tvchain->ReloadAll(); + m_tvChain = newchain; + m_tvChain->IncrRef(); // mark it for TVRec use + m_tvChain->ReloadAll(); QString hostprefix = gCoreContext->GenMythURL( gCoreContext->GetHostName(), gCoreContext->GetBackendServerPort()); - tvchain->SetHostPrefix(hostprefix); - tvchain->SetInputType(genOpt.inputtype); + m_tvChain->SetHostPrefix(hostprefix); + m_tvChain->SetInputType(m_genOpt.inputtype); - ispip = pip; - LiveTVStartChannel = startchan; + m_ispip = pip; + m_liveTVStartChannel = startchan; // Change to WatchingLiveTV ChangeState(kState_WatchingLiveTV); @@ -2719,8 +2683,8 @@ void TVRec::SpawnLiveTV(LiveTVChain *newchain, bool pip, QString startchan) */ QString TVRec::GetChainID(void) { - if (tvchain) - return tvchain->GetID(); + if (m_tvChain) + return m_tvChain->GetID(); return ""; } @@ -2734,23 +2698,23 @@ QString TVRec::GetChainID(void) */ void TVRec::CheckForRecGroupChange(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (internalState == kState_None) + if (m_internalState == kState_None) return; // already stopped - if (!curRecording) + if (!m_curRecording) return; - const QString recgrp = curRecording->QueryRecordingGroup(); - curRecording->SetRecordingGroup(recgrp); + const QString recgrp = m_curRecording->QueryRecordingGroup(); + m_curRecording->SetRecordingGroup(recgrp); - if (recgrp != "LiveTV" && !pseudoLiveTVRecording) + if (recgrp != "LiveTV" && !m_pseudoLiveTVRecording) { // User wants this recording to continue - SetPseudoLiveTVRecording(new RecordingInfo(*curRecording)); + SetPseudoLiveTVRecording(new RecordingInfo(*m_curRecording)); } - else if (recgrp == "LiveTV" && pseudoLiveTVRecording) + else if (recgrp == "LiveTV" && m_pseudoLiveTVRecording) { // User wants to abandon scheduled recording SetPseudoLiveTVRecording(nullptr); @@ -2768,12 +2732,12 @@ void TVRec::CheckForRecGroupChange(void) */ void TVRec::NotifySchedulerOfRecording(RecordingInfo *rec) { - if (!channel) + if (!m_channel) return; // Notify scheduler of the recording. // + set up recording so it can be resumed - rec->SetInputID(inputid); + rec->SetInputID(m_inputid); rec->SetRecordingRuleType(rec->GetRecordingRule()->m_type); if (rec->GetRecordingRuleType() == kNotRecording) @@ -2823,18 +2787,18 @@ void TVRec::InitAutoRunJobs(RecordingInfo *rec, AutoRunInitType t, LoadProfile(nullptr, rec, profile); recpro = &profile; } - autoRunJobs[rec->MakeUniqueKey()] = - init_jobs(rec, *recpro, runJobOnHostOnly, - transcodeFirst, earlyCommFlag); + m_autoRunJobs[rec->MakeUniqueKey()] = + init_jobs(rec, *recpro, m_runJobOnHostOnly, + m_transcodeFirst, m_earlyCommFlag); } else { - autoRunJobs[rec->MakeUniqueKey()] = JOB_NONE; + m_autoRunJobs[rec->MakeUniqueKey()] = JOB_NONE; } LOG(VB_JOBQUEUE, LOG_INFO, QString("InitAutoRunJobs for %1, line %2 -> 0x%3") .arg(rec->MakeUniqueKey()).arg(line) - .arg(autoRunJobs[rec->MakeUniqueKey()],0,16)); + .arg(m_autoRunJobs[rec->MakeUniqueKey()],0,16)); } /** \fn TVRec::SetLiveRecording(int) @@ -2852,22 +2816,22 @@ void TVRec::SetLiveRecording(int recording) { LOG(VB_GENERAL, LOG_INFO, LOC + QString("SetLiveRecording(%1)").arg(recording)); - QMutexLocker locker(&stateChangeLock); + QMutexLocker locker(&m_stateChangeLock); (void) recording; RecStatus::Type recstat = RecStatus::Cancelled; - bool was_rec = pseudoLiveTVRecording; + bool was_rec = m_pseudoLiveTVRecording; CheckForRecGroupChange(); - if (was_rec && !pseudoLiveTVRecording) + if (was_rec && !m_pseudoLiveTVRecording) { LOG(VB_GENERAL, LOG_INFO, LOC + "SetLiveRecording() -- cancel"); // cancel -- 'recording' should be 0 or -1 SetFlags(kFlagCancelNextRecording, __FILE__, __LINE__); - curRecording->SetRecordingGroup("LiveTV"); - InitAutoRunJobs(curRecording, kAutoRunNone, nullptr, __LINE__); + m_curRecording->SetRecordingGroup("LiveTV"); + InitAutoRunJobs(m_curRecording, kAutoRunNone, nullptr, __LINE__); } - else if (!was_rec && pseudoLiveTVRecording) + else if (!was_rec && m_pseudoLiveTVRecording) { LOG(VB_GENERAL, LOG_INFO, LOC + "SetLiveRecording() -- record"); // record -- 'recording' should be 1 or -1 @@ -2875,19 +2839,19 @@ void TVRec::SetLiveRecording(int recording) // If the last recording was flagged for keeping // in the frontend, then add the recording rule // so that transcode, commfrag, etc can be run. - recordEndTime = GetRecordEndTime(pseudoLiveTVRecording); - NotifySchedulerOfRecording(curRecording); - recstat = curRecording->GetRecordingStatus(); - curRecording->SetRecordingGroup("Default"); - InitAutoRunJobs(curRecording, kAutoRunProfile, nullptr, __LINE__); + m_recordEndTime = GetRecordEndTime(m_pseudoLiveTVRecording); + NotifySchedulerOfRecording(m_curRecording); + recstat = m_curRecording->GetRecordingStatus(); + m_curRecording->SetRecordingGroup("Default"); + InitAutoRunJobs(m_curRecording, kAutoRunProfile, nullptr, __LINE__); } MythEvent me(QString("UPDATE_RECORDING_STATUS %1 %2 %3 %4 %5") - .arg(curRecording->GetInputID()) - .arg(curRecording->GetChanID()) - .arg(curRecording->GetScheduledStartTime(MythDate::ISODate)) + .arg(m_curRecording->GetInputID()) + .arg(m_curRecording->GetChanID()) + .arg(m_curRecording->GetScheduledStartTime(MythDate::ISODate)) .arg(recstat) - .arg(curRecording->GetRecordingEndTime(MythDate::ISODate))); + .arg(m_curRecording->GetRecordingEndTime(MythDate::ISODate))); gCoreContext->dispatch(me); } @@ -2898,26 +2862,26 @@ void TVRec::SetLiveRecording(int recording) */ void TVRec::StopLiveTV(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); LOG(VB_RECORD, LOG_INFO, LOC + QString("StopLiveTV(void) curRec: 0x%1 pseudoRec: 0x%2") - .arg((uint64_t)curRecording,0,16) - .arg((uint64_t)pseudoLiveTVRecording,0,16)); + .arg((uint64_t)m_curRecording,0,16) + .arg((uint64_t)m_pseudoLiveTVRecording,0,16)); - if (internalState != kState_WatchingLiveTV) + if (m_internalState != kState_WatchingLiveTV) return; - bool hadPseudoLiveTVRec = pseudoLiveTVRecording; + bool hadPseudoLiveTVRec = m_pseudoLiveTVRecording; CheckForRecGroupChange(); - if (!hadPseudoLiveTVRec && pseudoLiveTVRecording) - NotifySchedulerOfRecording(curRecording); + if (!hadPseudoLiveTVRec && m_pseudoLiveTVRecording) + NotifySchedulerOfRecording(m_curRecording); // Figure out next state and if needed recording end time. TVState next_state = kState_None; - if (pseudoLiveTVRecording) + if (m_pseudoLiveTVRecording) { - recordEndTime = GetRecordEndTime(pseudoLiveTVRecording); + m_recordEndTime = GetRecordEndTime(m_pseudoLiveTVRecording); next_state = kState_RecordingOnly; } @@ -2928,11 +2892,11 @@ void TVRec::StopLiveTV(void) WaitForEventThreadSleep(); // We are done with the tvchain... - if (tvchain) + if (m_tvChain) { - tvchain->DecrRef(); + m_tvChain->DecrRef(); } - tvchain = nullptr; + m_tvChain = nullptr; } /** \fn TVRec::PauseRecorder(void) @@ -2945,16 +2909,16 @@ void TVRec::StopLiveTV(void) */ void TVRec::PauseRecorder(void) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (!recorder) + if (!m_recorder) { LOG(VB_GENERAL, LOG_ERR, LOC + "PauseRecorder() called with no recorder"); return; } - recorder->Pause(); + m_recorder->Pause(); } /** \fn TVRec::RecorderPaused(void) @@ -2964,7 +2928,7 @@ void TVRec::PauseRecorder(void) */ void TVRec::RecorderPaused(void) { - if (pauseNotify) + if (m_pauseNotify) WakeEventLoop(); } @@ -2973,14 +2937,14 @@ void TVRec::RecorderPaused(void) */ void TVRec::ToggleChannelFavorite(QString changroupname) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - if (!channel) + if (!m_channel) return; // Get current channel id... - uint sourceid = channel->GetSourceID(); - QString channum = channel->GetChannelName(); + uint sourceid = m_channel->GetSourceID(); + QString channum = m_channel->GetChannelName(); uint chanid = ChannelUtil::GetChanID(sourceid, channum); if (!chanid) @@ -3023,11 +2987,11 @@ void TVRec::ToggleChannelFavorite(QString changroupname) */ int TVRec::GetPictureAttribute(PictureAttribute attr) { - QMutexLocker lock(&stateChangeLock); - if (!channel) + QMutexLocker lock(&m_stateChangeLock); + if (!m_channel) return -1; - int ret = channel->GetPictureAttribute(attr); + int ret = m_channel->GetPictureAttribute(attr); return (ret < 0) ? -1 : ret / 655; } @@ -3043,11 +3007,11 @@ int TVRec::ChangePictureAttribute(PictureAdjustType type, PictureAttribute attr, bool direction) { - QMutexLocker lock(&stateChangeLock); - if (!channel) + QMutexLocker lock(&m_stateChangeLock); + if (!m_channel) return -1; - int ret = channel->ChangePictureAttribute(type, attr, direction); + int ret = m_channel->ChangePictureAttribute(type, attr, direction); return (ret < 0) ? -1 : ret / 655; } @@ -3057,8 +3021,8 @@ int TVRec::ChangePictureAttribute(PictureAdjustType type, */ QString TVRec::GetInput(void) const { - if (channel) - return channel->GetInputName(); + if (m_channel) + return m_channel->GetInputName(); return QString(); } @@ -3067,8 +3031,8 @@ QString TVRec::GetInput(void) const */ uint TVRec::GetSourceID(void) const { - if (channel) - return channel->GetSourceID(); + if (m_channel) + return m_channel->GetSourceID(); return 0; } @@ -3082,11 +3046,11 @@ uint TVRec::GetSourceID(void) const */ QString TVRec::SetInput(QString input) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); QString origIn = input; LOG(VB_RECORD, LOG_INFO, LOC + "SetInput(" + input + ") -- begin"); - if (!channel) + if (!m_channel) { LOG(VB_RECORD, LOG_INFO, LOC + "SetInput() -- end no channel class"); return QString(); @@ -3108,8 +3072,8 @@ QString TVRec::SetInput(QString input) */ void TVRec::SetChannel(QString name, uint requestType) { - QMutexLocker locker1(&setChannelLock); - QMutexLocker locker2(&stateChangeLock); + QMutexLocker locker1(&m_setChannelLock); + QMutexLocker locker2(&m_stateChangeLock); LOG(VB_CHANNEL, LOG_INFO, LOC + QString("SetChannel(%1) -- begin").arg(name)); @@ -3118,25 +3082,25 @@ void TVRec::SetChannel(QString name, uint requestType) if (requestType & kFlagDetect) { WaitForEventThreadSleep(); - requestType = lastTuningRequest.flags & (kFlagRec | kFlagNoRec); + requestType = m_lastTuningRequest.flags & (kFlagRec | kFlagNoRec); } // Clear the RingBuffer reset flag, in case we wait for a reset below ClearFlags(kFlagRingBufferReady, __FILE__, __LINE__); // Clear out any EITScan channel change requests - TuningQueue::iterator it = tuningRequests.begin(); - while (it != tuningRequests.end()) + TuningQueue::iterator it = m_tuningRequests.begin(); + while (it != m_tuningRequests.end()) { if ((*it).flags & kFlagEITScan) - it = tuningRequests.erase(it); + it = m_tuningRequests.erase(it); else ++it; } // Actually add the tuning request to the queue, and // then wait for it to start tuning - tuningRequests.enqueue(TuningRequest(requestType, name)); + m_tuningRequests.enqueue(TuningRequest(requestType, name)); WaitForEventThreadSleep(); // If we are using a recorder, wait for a RingBuffer reset @@ -3161,18 +3125,18 @@ bool TVRec::QueueEITChannelChange(const QString &name) QString("QueueEITChannelChange(%1) -- begin").arg(name)); bool ok = false; - if (setChannelLock.tryLock()) + if (m_setChannelLock.tryLock()) { - if (stateChangeLock.tryLock()) + if (m_stateChangeLock.tryLock()) { - if (tuningRequests.empty()) + if (m_tuningRequests.empty()) { - tuningRequests.enqueue(TuningRequest(kFlagEITScan, name)); + m_tuningRequests.enqueue(TuningRequest(kFlagEITScan, name)); ok = true; } - stateChangeLock.unlock(); + m_stateChangeLock.unlock(); } - setChannelLock.unlock(); + m_setChannelLock.unlock(); } LOG(VB_CHANNEL, LOG_INFO, LOC + @@ -3198,11 +3162,11 @@ void TVRec::GetNextProgram(BrowseDirection direction, chanid = sourceChanid; if (BROWSE_UP == direction) - chanid = channel->GetNextChannel(chanid, CHANNEL_DIRECTION_UP); + chanid = m_channel->GetNextChannel(chanid, CHANNEL_DIRECTION_UP); else if (BROWSE_DOWN == direction) - chanid = channel->GetNextChannel(chanid, CHANNEL_DIRECTION_DOWN); + chanid = m_channel->GetNextChannel(chanid, CHANNEL_DIRECTION_DOWN); else if (BROWSE_FAVORITE == direction) - chanid = channel->GetNextChannel( + chanid = m_channel->GetNextChannel( chanid, CHANNEL_DIRECTION_FAVORITE); else if (BROWSE_LEFT == direction) @@ -3219,22 +3183,22 @@ void TVRec::GetNextProgram(BrowseDirection direction, if (!chanid) { if (BROWSE_SAME == direction) - chanid = channel->GetNextChannel(channum, CHANNEL_DIRECTION_SAME); + chanid = m_channel->GetNextChannel(channum, CHANNEL_DIRECTION_SAME); else if (BROWSE_UP == direction) - chanid = channel->GetNextChannel(channum, CHANNEL_DIRECTION_UP); + chanid = m_channel->GetNextChannel(channum, CHANNEL_DIRECTION_UP); else if (BROWSE_DOWN == direction) - chanid = channel->GetNextChannel(channum, CHANNEL_DIRECTION_DOWN); + chanid = m_channel->GetNextChannel(channum, CHANNEL_DIRECTION_DOWN); else if (BROWSE_FAVORITE == direction) - chanid = channel->GetNextChannel(channum, + chanid = m_channel->GetNextChannel(channum, CHANNEL_DIRECTION_FAVORITE); else if (BROWSE_LEFT == direction) { - chanid = channel->GetNextChannel(channum, CHANNEL_DIRECTION_SAME); + chanid = m_channel->GetNextChannel(channum, CHANNEL_DIRECTION_SAME); compare = "<"; } else if (BROWSE_RIGHT == direction) { - chanid = channel->GetNextChannel(channum, CHANNEL_DIRECTION_SAME); + chanid = m_channel->GetNextChannel(channum, CHANNEL_DIRECTION_SAME); compare = ">"; sortorder = "asc"; } @@ -3313,14 +3277,14 @@ bool TVRec::GetChannelInfo(uint &chanid, uint &sourceid, channame.clear(); xmltvid.clear(); - if ((!chanid || !sourceid) && !channel) + if ((!chanid || !sourceid) && !m_channel) return false; if (!chanid) - chanid = (uint) max(channel->GetChanID(), 0); + chanid = (uint) max(m_channel->GetChanID(), 0); if (!sourceid) - sourceid = channel->GetSourceID(); + sourceid = m_channel->GetSourceID(); MSqlQuery query(MSqlQuery::InitCon()); query.prepare( @@ -3375,8 +3339,8 @@ bool TVRec::SetChannelInfo(uint chanid, uint sourceid, return false; } - if (channel) - channel->Renumber(sourceid, oldchannum, channum); + if (m_channel) + m_channel->Renumber(sourceid, oldchannum, channum); return true; } @@ -3386,10 +3350,10 @@ bool TVRec::SetChannelInfo(uint chanid, uint sourceid, */ void TVRec::SetRingBuffer(RingBuffer *rb) { - QMutexLocker lock(&stateChangeLock); + QMutexLocker lock(&m_stateChangeLock); - RingBuffer *rb_old = ringBuffer; - ringBuffer = rb; + RingBuffer *rb_old = m_ringBuffer; + m_ringBuffer = rb; if (rb_old && (rb_old != rb)) { @@ -3398,7 +3362,7 @@ void TVRec::SetRingBuffer(RingBuffer *rb) delete rb_old; } - switchingBuffer = false; + m_switchingBuffer = false; } void TVRec::RingBufferChanged( @@ -3408,16 +3372,16 @@ void TVRec::RingBufferChanged( if (pginfo) { - if (curRecording) + if (m_curRecording) { - FinishedRecording(curRecording, recq); - curRecording->MarkAsInUse(false, kRecorderInUseID); - delete curRecording; + FinishedRecording(m_curRecording, recq); + m_curRecording->MarkAsInUse(false, kRecorderInUseID); + delete m_curRecording; } - recordEndTime = GetRecordEndTime(pginfo); - curRecording = new RecordingInfo(*pginfo); - curRecording->MarkAsInUse(true, kRecorderInUseID); - curRecording->SetRecordingStatus(RecStatus::Recording); + m_recordEndTime = GetRecordEndTime(pginfo); + m_curRecording = new RecordingInfo(*pginfo); + m_curRecording->MarkAsInUse(true, kRecorderInUseID); + m_curRecording->SetRecordingStatus(RecStatus::Recording); } SetRingBuffer(rb); @@ -3440,22 +3404,22 @@ QString TVRec::TuningGetChanNum(const TuningRequest &request, // If this is Live TV startup, we need a channel... if (channum.isEmpty() && (request.flags & kFlagLiveTV)) { - if (!LiveTVStartChannel.isEmpty()) - channum = LiveTVStartChannel; + if (!m_liveTVStartChannel.isEmpty()) + channum = m_liveTVStartChannel; else { - input = CardUtil::GetInputName(inputid); - channum = GetStartChannel(inputid); + input = CardUtil::GetInputName(m_inputid); + channum = GetStartChannel(m_inputid); } } if (request.flags & kFlagLiveTV) - channel->Init(channum, false); + m_channel->Init(channum, false); - if (channel && !channum.isEmpty() && (channum.indexOf("NextChannel") >= 0)) + if (m_channel && !channum.isEmpty() && (channum.indexOf("NextChannel") >= 0)) { // FIXME This is just horrible int dir = channum.right(channum.length() - 12).toInt(); - uint chanid = channel->GetNextChannel(0, static_cast(dir)); + uint chanid = m_channel->GetNextChannel(0, static_cast(dir)); channum = ChannelUtil::GetChanNum(chanid); } @@ -3465,13 +3429,13 @@ QString TVRec::TuningGetChanNum(const TuningRequest &request, bool TVRec::TuningOnSameMultiplex(TuningRequest &request) { if ((request.flags & kFlagAntennaAdjust) || request.input.isEmpty() || - !GetDTVRecorder() || signalMonitor || !channel || !channel->IsOpen()) + !GetDTVRecorder() || m_signalMonitor || !m_channel || !m_channel->IsOpen()) { return false; } - uint sourceid = channel->GetSourceID(); - QString oldchannum = channel->GetChannelName(); + uint sourceid = m_channel->GetSourceID(); + QString oldchannum = m_channel->GetChannelName(); QString newchannum = request.channel; if (ChannelUtil::IsOnSameMultiplex(sourceid, newchannum, oldchannum)) @@ -3515,9 +3479,9 @@ bool TVRec::TuningOnSameMultiplex(TuningRequest &request) */ void TVRec::HandleTuning(void) { - if (tuningRequests.size()) + if (m_tuningRequests.size()) { - TuningRequest request = tuningRequests.front(); + TuningRequest request = m_tuningRequests.front(); LOG(VB_RECORD, LOG_INFO, LOC + "HandleTuning Request: " + request.toString()); @@ -3532,13 +3496,13 @@ void TVRec::HandleTuning(void) // The dequeue isn't safe to do until now because we // release the stateChangeLock to teardown a recorder - tuningRequests.dequeue(); + m_tuningRequests.dequeue(); // Now we start new stuff if (request.flags & (kFlagRecording|kFlagLiveTV| kFlagEITScan|kFlagAntennaAdjust)) { - if (!recorder) + if (!m_recorder) { LOG(VB_RECORD, LOG_INFO, LOC + "No recorder yet, calling TuningFrequency"); @@ -3550,18 +3514,18 @@ void TVRec::HandleTuning(void) SetFlags(kFlagWaitingForRecPause, __FILE__, __LINE__); } } - lastTuningRequest = request; + m_lastTuningRequest = request; } if (HasFlags(kFlagWaitingForRecPause)) { - if (!recorder->IsPaused()) + if (!m_recorder->IsPaused()) return; ClearFlags(kFlagWaitingForRecPause, __FILE__, __LINE__); LOG(VB_RECORD, LOG_INFO, LOC + "Recorder paused, calling TuningFrequency"); - TuningFrequency(lastTuningRequest); + TuningFrequency(m_lastTuningRequest); } MPEGStreamData *streamData = nullptr; @@ -3570,14 +3534,14 @@ void TVRec::HandleTuning(void) if (HasFlags(kFlagNeedToStartRecorder)) { - if (recorder) + if (m_recorder) TuningRestartRecorder(); else TuningNewRecorder(streamData); // If we got this far it is safe to set a new starting channel... - if (channel) - channel->StoreInputChannels(); + if (m_channel) + m_channel->StoreInputChannels(); } } @@ -3592,17 +3556,17 @@ void TVRec::TuningShutdowns(const TuningRequest &request) QString channum, inputname; - if (scanner && !(request.flags & kFlagEITScan) && + if (m_scanner && !(request.flags & kFlagEITScan) && HasFlags(kFlagEITScannerRunning)) { - scanner->StopActiveScan(); + m_scanner->StopActiveScan(); ClearFlags(kFlagEITScannerRunning, __FILE__, __LINE__); - eitScanStartTime = MythDate::current().addSecs( - eitCrawlIdleStart + eit_start_rand(eitTransportTimeout)); + m_eitScanStartTime = MythDate::current().addSecs( + m_eitCrawlIdleStart + eit_start_rand(m_eitTransportTimeout)); } - if (scanner && !request.IsOnSameMultiplex()) - scanner->StopPassiveScan(); + if (m_scanner && !request.IsOnSameMultiplex()) + m_scanner->StopPassiveScan(); if (HasFlags(kFlagSignalMonitorRunning)) { @@ -3628,19 +3592,19 @@ void TVRec::TuningShutdowns(const TuningRequest &request) { if (HasFlags(kFlagDummyRecorderRunning)) { - FinishedRecording(curRecording, nullptr); + FinishedRecording(m_curRecording, nullptr); ClearFlags(kFlagDummyRecorderRunning, __FILE__, __LINE__); - curRecording->MarkAsInUse(false, kRecorderInUseID); + m_curRecording->MarkAsInUse(false, kRecorderInUseID); } if (HasFlags(kFlagRecorderRunning) || - (curRecording && - (curRecording->GetRecordingStatus() == RecStatus::Failed || - curRecording->GetRecordingStatus() == RecStatus::Failing))) + (m_curRecording && + (m_curRecording->GetRecordingStatus() == RecStatus::Failed || + m_curRecording->GetRecordingStatus() == RecStatus::Failing))) { - stateChangeLock.unlock(); + m_stateChangeLock.unlock(); TeardownRecorder(request.flags); - stateChangeLock.lock(); + m_stateChangeLock.lock(); } // At this point the recorders are shut down @@ -3648,7 +3612,7 @@ void TVRec::TuningShutdowns(const TuningRequest &request) // At this point the channel is shut down } - if (ringBuffer && (request.flags & kFlagKillRingBuffer)) + if (m_ringBuffer && (request.flags & kFlagKillRingBuffer)) { LOG(VB_RECORD, LOG_INFO, LOC + "Tearing down RingBuffer"); SetRingBuffer(nullptr); @@ -3691,13 +3655,13 @@ void TVRec::TuningFrequency(const TuningRequest &request) const QString tuningmode = (HasFlags(kFlagEITScannerRunning)) ? dtvchan->GetSIStandard() : dtvchan->GetSuggestedTuningMode( - kState_WatchingLiveTV == internalState); + kState_WatchingLiveTV == m_internalState); dtvchan->SetTuningMode(tuningmode); if (request.minorChan && (tuningmode == "atsc")) { - channel->SetChannelByString(request.channel); + m_channel->SetChannelByString(request.channel); ATSCStreamData *atsc = dynamic_cast(mpeg); if (atsc) @@ -3705,7 +3669,7 @@ void TVRec::TuningFrequency(const TuningRequest &request) } else if (request.progNum >= 0) { - channel->SetChannelByString(request.channel); + m_channel->SetChannelByString(request.channel); if (mpeg) mpeg->SetDesiredProgram(request.progNum); @@ -3717,15 +3681,15 @@ void TVRec::TuningFrequency(const TuningRequest &request) // Update the channel number for SwitchLiveTVRingBuffer (called from // TuningRestartRecorder). This ensures that the livetvchain will be // updated with the new channel number - if (channel) + if (m_channel) { - channel->Renumber( CardUtil::GetSourceID(channel->GetInputID()), - channel->GetChannelName(), request.channel ); + m_channel->Renumber( CardUtil::GetSourceID(m_channel->GetInputID()), + m_channel->GetChannelName(), request.channel ); } QStringList slist; slist<<"message"<dispatch(me); SetFlags(kFlagNeedToStartRecorder, __FILE__, __LINE__); @@ -3736,11 +3700,11 @@ void TVRec::TuningFrequency(const TuningRequest &request) QString channum = request.channel; bool ok1; - if (channel) + if (m_channel) { - channel->Open(); + m_channel->Open(); if (!channum.isEmpty()) - ok1 = channel->SetChannelByString(channum); + ok1 = m_channel->SetChannelByString(channum); else ok1 = false; } @@ -3751,16 +3715,16 @@ void TVRec::TuningFrequency(const TuningRequest &request) { if (!(request.flags & kFlagLiveTV) || !(request.flags & kFlagEITScan)) { - if (curRecording) - curRecording->SetRecordingStatus(RecStatus::Failed); + if (m_curRecording) + m_curRecording->SetRecordingStatus(RecStatus::Failed); LOG(VB_GENERAL, LOG_ERR, LOC + QString("Failed to set channel to %1. Reverting to kState_None") .arg(channum)); - if (kState_None != internalState) + if (kState_None != m_internalState) ChangeState(kState_None); else - tuningRequests.enqueue(TuningRequest(kFlagKillRec)); + m_tuningRequests.enqueue(TuningRequest(kFlagKillRec)); return; } else @@ -3782,7 +3746,7 @@ void TVRec::TuningFrequency(const TuningRequest &request) bool livetv = request.flags & kFlagLiveTV; bool antadj = request.flags & kFlagAntennaAdjust; - bool use_sm = !mpts_only && SignalMonitor::IsRequired(genOpt.inputtype); + bool use_sm = !mpts_only && SignalMonitor::IsRequired(m_genOpt.inputtype); bool use_dr = use_sm && (livetv || antadj); bool has_dummy = false; @@ -3790,18 +3754,18 @@ void TVRec::TuningFrequency(const TuningRequest &request) { // We need there to be a ringbuffer for these modes bool ok2; - RecordingInfo *tmp = pseudoLiveTVRecording; - pseudoLiveTVRecording = nullptr; + RecordingInfo *tmp = m_pseudoLiveTVRecording; + m_pseudoLiveTVRecording = nullptr; - tvchain->SetInputType("DUMMY"); + m_tvChain->SetInputType("DUMMY"); - if (!ringBuffer) + if (!m_ringBuffer) ok2 = CreateLiveTVRingBuffer(channum); else ok2 = SwitchLiveTVRingBuffer(channum, true, false); - pseudoLiveTVRecording = tmp; + m_pseudoLiveTVRecording = tmp; - tvchain->SetInputType(genOpt.inputtype); + m_tvChain->SetInputType(m_genOpt.inputtype); if (!ok2) { @@ -3821,10 +3785,10 @@ void TVRec::TuningFrequency(const TuningRequest &request) !antadj, request.flags & kFlagEITScan, livetv | antadj)) { LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to setup signal monitor"); - if (signalMonitor) + if (m_signalMonitor) { - delete signalMonitor; - signalMonitor = nullptr; + delete m_signalMonitor; + m_signalMonitor = nullptr; } // pretend the signal monitor is running to prevent segfault @@ -3833,7 +3797,7 @@ void TVRec::TuningFrequency(const TuningRequest &request) error = true; } - if (signalMonitor) + if (m_signalMonitor) { if (request.flags & kFlagEITScan) { @@ -3849,53 +3813,53 @@ void TVRec::TuningFrequency(const TuningRequest &request) QDateTime expire = MythDate::current(); SetFlags(kFlagWaitingForSignal, __FILE__, __LINE__); - if (curRecording) + if (m_curRecording) { - reachedRecordingDeadline = reachedPreFail = false; + m_reachedRecordingDeadline = m_reachedPreFail = false; // If startRecordingDeadline is passed, this // recording is marked as failed, so the scheduler // can try another showing. - startRecordingDeadline = - expire.addMSecs(genOpt.channel_timeout); - preFailDeadline = - expire.addMSecs(genOpt.channel_timeout * 2 / 3); + m_startRecordingDeadline = + expire.addMSecs(m_genOpt.channel_timeout); + m_preFailDeadline = + expire.addMSecs(m_genOpt.channel_timeout * 2 / 3); // Keep trying to record this showing (even if it // has been marked as failed) until the scheduled // end time. - signalMonitorDeadline = - curRecording->GetRecordingEndTime().addSecs(-10); + m_signalMonitorDeadline = + m_curRecording->GetRecordingEndTime().addSecs(-10); LOG(VB_CHANNEL, LOG_DEBUG, LOC + QString("Pre-fail start deadline: %1 " "Start recording deadline: %2 " "Good signal deadline: %3") - .arg(preFailDeadline.toLocalTime() + .arg(m_preFailDeadline.toLocalTime() .toString("hh:mm:ss.zzz")) - .arg(startRecordingDeadline.toLocalTime() + .arg(m_startRecordingDeadline.toLocalTime() .toString("hh:mm:ss.zzz")) - .arg(signalMonitorDeadline.toLocalTime() + .arg(m_signalMonitorDeadline.toLocalTime() .toString("hh:mm:ss.zzz"))); } else { - signalMonitorDeadline = - expire.addMSecs(genOpt.channel_timeout); + m_signalMonitorDeadline = + expire.addMSecs(m_genOpt.channel_timeout); } - signalMonitorCheckCnt = 0; + m_signalMonitorCheckCnt = 0; //System Event TUNING_TIMEOUT deadline - signalEventCmdTimeout = expire.addMSecs(genOpt.channel_timeout); - signalEventCmdSent = false; + m_signalEventCmdTimeout = expire.addMSecs(m_genOpt.channel_timeout); + m_signalEventCmdSent = false; } } - if (has_dummy && ringBuffer) + if (has_dummy && m_ringBuffer) { // Make sure recorder doesn't point to bogus ringbuffer before // it is potentially restarted without a new ringbuffer, if // the next channel won't tune and the user exits LiveTV. - if (recorder) - recorder->SetRingBuffer(nullptr); + if (m_recorder) + m_recorder->SetRingBuffer(nullptr); SetFlags(kFlagDummyRecorderRunning, __FILE__, __LINE__); LOG(VB_RECORD, LOG_INFO, "DummyDTVRecorder -- started"); @@ -3927,28 +3891,28 @@ MPEGStreamData *TVRec::TuningSignalCheck(void) bool keep_trying = false; QDateTime current_time = MythDate::current(); - if ((signalMonitor->IsErrored() || current_time > signalEventCmdTimeout) && - !signalEventCmdSent) + if ((m_signalMonitor->IsErrored() || current_time > m_signalEventCmdTimeout) && + !m_signalEventCmdSent) { gCoreContext->SendSystemEvent(QString("TUNING_SIGNAL_TIMEOUT CARDID %1") - .arg(inputid)); - signalEventCmdSent = true; + .arg(m_inputid)); + m_signalEventCmdSent = true; } - if (signalMonitor->IsAllGood()) + if (m_signalMonitor->IsAllGood()) { LOG(VB_RECORD, LOG_INFO, LOC + "TuningSignalCheck: Good signal"); - if (curRecording && (current_time > startRecordingDeadline)) + if (m_curRecording && (current_time > m_startRecordingDeadline)) { newRecStatus = RecStatus::Failing; - curRecording->SaveVideoProperties(VID_DAMAGED, VID_DAMAGED); + m_curRecording->SaveVideoProperties(VID_DAMAGED, VID_DAMAGED); QString desc = tr("Good signal seen after %1 ms") - .arg(genOpt.channel_timeout + - startRecordingDeadline.msecsTo(current_time)); - QString title = curRecording->GetTitle(); - if (!curRecording->GetSubtitle().isEmpty()) - title += " - " + curRecording->GetSubtitle(); + .arg(m_genOpt.channel_timeout + + m_startRecordingDeadline.msecsTo(current_time)); + QString title = m_curRecording->GetTitle(); + if (!m_curRecording->GetSubtitle().isEmpty()) + title += " - " + m_curRecording->GetSubtitle(); MythNotification mn(MythNotification::Check, desc, "Recording", title, @@ -3959,7 +3923,7 @@ MPEGStreamData *TVRec::TuningSignalCheck(void) LOG(VB_GENERAL, LOG_WARNING, LOC + QString("It took longer than %1 ms to get a signal lock. " "Keeping status of '%2'") - .arg(genOpt.channel_timeout) + .arg(m_genOpt.channel_timeout) .arg(RecStatus::toString(newRecStatus, kSingleRecord))); LOG(VB_GENERAL, LOG_WARNING, LOC + "See 'Tuning timeout' in mythtv-setup for this input"); @@ -3969,41 +3933,41 @@ MPEGStreamData *TVRec::TuningSignalCheck(void) newRecStatus = RecStatus::Recording; } } - else if (signalMonitor->IsErrored() || current_time > signalMonitorDeadline) + else if (m_signalMonitor->IsErrored() || current_time > m_signalMonitorDeadline) { LOG(VB_GENERAL, LOG_ERR, LOC + "TuningSignalCheck: SignalMonitor " + - (signalMonitor->IsErrored() ? "failed" : "timed out")); + (m_signalMonitor->IsErrored() ? "failed" : "timed out")); ClearFlags(kFlagNeedToStartRecorder, __FILE__, __LINE__); newRecStatus = RecStatus::Failed; - if (scanner && HasFlags(kFlagEITScannerRunning)) + if (m_scanner && HasFlags(kFlagEITScannerRunning)) { - tuningRequests.enqueue(TuningRequest(kFlagNoRec)); + m_tuningRequests.enqueue(TuningRequest(kFlagNoRec)); } } - else if (curRecording && !reachedPreFail && current_time > preFailDeadline) + else if (m_curRecording && !m_reachedPreFail && current_time > m_preFailDeadline) { LOG(VB_GENERAL, LOG_ERR, LOC + "TuningSignalCheck: Hit pre-fail timeout"); - SendMythSystemRecEvent("REC_PREFAIL", curRecording); - reachedPreFail = true; + SendMythSystemRecEvent("REC_PREFAIL", m_curRecording); + m_reachedPreFail = true; return nullptr; } - else if (curRecording && !reachedRecordingDeadline && - current_time > startRecordingDeadline) + else if (m_curRecording && !m_reachedRecordingDeadline && + current_time > m_startRecordingDeadline) { newRecStatus = RecStatus::Failing; - reachedRecordingDeadline = true; + m_reachedRecordingDeadline = true; keep_trying = true; - SendMythSystemRecEvent("REC_FAILING", curRecording); + SendMythSystemRecEvent("REC_FAILING", m_curRecording); QString desc = tr("Taking more than %1 ms to get a lock.") - .arg(genOpt.channel_timeout); - QString title = curRecording->GetTitle(); - if (!curRecording->GetSubtitle().isEmpty()) - title += " - " + curRecording->GetSubtitle(); + .arg(m_genOpt.channel_timeout); + QString title = m_curRecording->GetTitle(); + if (!m_curRecording->GetSubtitle().isEmpty()) + title += " - " + m_curRecording->GetSubtitle(); MythNotification mn(MythNotification::Error, desc, "Recording", title, @@ -4015,37 +3979,37 @@ MPEGStreamData *TVRec::TuningSignalCheck(void) LOG(VB_GENERAL, LOG_WARNING, LOC + QString("TuningSignalCheck: taking more than %1 ms to get a lock. " "marking this recording as '%2'.") - .arg(genOpt.channel_timeout) + .arg(m_genOpt.channel_timeout) .arg(RecStatus::toString(newRecStatus, kSingleRecord))); LOG(VB_GENERAL, LOG_WARNING, LOC + "See 'Tuning timeout' in mythtv-setup for this input"); } else { - if (signalMonitorCheckCnt) // Don't flood log file - --signalMonitorCheckCnt; + if (m_signalMonitorCheckCnt) // Don't flood log file + --m_signalMonitorCheckCnt; else { LOG(VB_RECORD, LOG_INFO, LOC + QString("TuningSignalCheck: Still waiting. Will timeout @ %1") - .arg(signalMonitorDeadline.toLocalTime() + .arg(m_signalMonitorDeadline.toLocalTime() .toString("hh:mm:ss.zzz"))); - signalMonitorCheckCnt = 5; + m_signalMonitorCheckCnt = 5; } return nullptr; } SetRecordingStatus(newRecStatus, __LINE__); - if (curRecording) + if (m_curRecording) { - curRecording->SetRecordingStatus(newRecStatus); + m_curRecording->SetRecordingStatus(newRecStatus); MythEvent me(QString("UPDATE_RECORDING_STATUS %1 %2 %3 %4 %5") - .arg(curRecording->GetInputID()) - .arg(curRecording->GetChanID()) - .arg(curRecording->GetScheduledStartTime(MythDate::ISODate)) + .arg(m_curRecording->GetInputID()) + .arg(m_curRecording->GetChanID()) + .arg(m_curRecording->GetScheduledStartTime(MythDate::ISODate)) .arg(newRecStatus) - .arg(curRecording->GetRecordingEndTime(MythDate::ISODate))); + .arg(m_curRecording->GetRecordingEndTime(MythDate::ISODate))); gCoreContext->dispatch(me); } @@ -4069,14 +4033,14 @@ MPEGStreamData *TVRec::TuningSignalCheck(void) { DVBStreamData *dsd = dynamic_cast(streamData); if (dsd) - dsd->SetDishNetEIT(is_dishnet_eit(inputid)); + dsd->SetDishNetEIT(is_dishnet_eit(m_inputid)); if (!get_use_eit(GetInputId())) { LOG(VB_EIT, LOG_INFO, LOC + "EIT scanning disabled for all sources on this input."); } - else if (scanner) - scanner->StartPassiveScan(channel, streamData); + else if (m_scanner) + m_scanner->StartPassiveScan(m_channel, streamData); } return streamData; @@ -4153,8 +4117,8 @@ QString TVRec::LoadProfile(void *tvchain, RecordingInfo *rec, QString profileRequested = profileName; - if (profile.loadByType(profileName, genOpt.inputtype, - genOpt.videodev)) + if (profile.loadByType(profileName, m_genOpt.inputtype, + m_genOpt.videodev)) { LOG(VB_RECORD, LOG_INFO, LOC + QString("Using profile '%1' to record") @@ -4163,7 +4127,7 @@ QString TVRec::LoadProfile(void *tvchain, RecordingInfo *rec, else { profileName = "Default"; - if (profile.loadByType(profileName, genOpt.inputtype, genOpt.videodev)) + if (profile.loadByType(profileName, m_genOpt.inputtype, m_genOpt.videodev)) { LOG(VB_RECORD, LOG_INFO, LOC + QString("Profile '%1' not found, using " @@ -4193,43 +4157,43 @@ void TVRec::TuningNewRecorder(MPEGStreamData *streamData) bool had_dummyrec = false; if (HasFlags(kFlagDummyRecorderRunning)) { - FinishedRecording(curRecording, nullptr); + FinishedRecording(m_curRecording, nullptr); ClearFlags(kFlagDummyRecorderRunning, __FILE__, __LINE__); - curRecording->MarkAsInUse(false, kRecorderInUseID); + m_curRecording->MarkAsInUse(false, kRecorderInUseID); had_dummyrec = true; } - RecordingInfo *rec = lastTuningRequest.program; + RecordingInfo *rec = m_lastTuningRequest.program; RecordingProfile profile; - recProfileName = LoadProfile(tvchain, rec, profile); + m_recProfileName = LoadProfile(m_tvChain, rec, profile); - if (tvchain) + if (m_tvChain) { bool ok; - if (!ringBuffer) + if (!m_ringBuffer) { - ok = CreateLiveTVRingBuffer(channel->GetChannelName()); + ok = CreateLiveTVRingBuffer(m_channel->GetChannelName()); SetFlags(kFlagRingBufferReady, __FILE__, __LINE__); } else - ok = SwitchLiveTVRingBuffer(channel->GetChannelName(), - true, !had_dummyrec && recorder); + ok = SwitchLiveTVRingBuffer(m_channel->GetChannelName(), + true, !had_dummyrec && m_recorder); if (!ok) { LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to create RingBuffer 2"); goto err_ret; } - rec = curRecording; // new'd in Create/SwitchLiveTVRingBuffer() + rec = m_curRecording; // new'd in Create/SwitchLiveTVRingBuffer() } - if (lastTuningRequest.flags & kFlagRecording) + if (m_lastTuningRequest.flags & kFlagRecording) { - bool write = genOpt.inputtype != "IMPORT"; + bool write = m_genOpt.inputtype != "IMPORT"; LOG(VB_GENERAL, LOG_INFO, LOC + QString("rec->GetPathname(): '%1'") .arg(rec->GetPathname())); SetRingBuffer(RingBuffer::Create(rec->GetPathname(), write)); - if (!ringBuffer->IsOpen() && write) + if (!m_ringBuffer->IsOpen() && write) { LOG(VB_GENERAL, LOG_ERR, LOC + QString("RingBuffer '%1' not open...") @@ -4240,50 +4204,50 @@ void TVRec::TuningNewRecorder(MPEGStreamData *streamData) } } - if (!ringBuffer) + if (!m_ringBuffer) { LOG(VB_GENERAL, LOG_ERR, LOC + QString("Failed to start recorder! ringBuffer is NULL\n" "\t\t\t\t Tuning request was %1\n") - .arg(lastTuningRequest.toString())); + .arg(m_lastTuningRequest.toString())); if (HasFlags(kFlagLiveTV)) { - QString message = QString("QUIT_LIVETV %1").arg(inputid); + QString message = QString("QUIT_LIVETV %1").arg(m_inputid); MythEvent me(message); gCoreContext->dispatch(me); } goto err_ret; } - if (channel && genOpt.inputtype == "MJPEG") - channel->Close(); // Needed because of NVR::MJPEGInit() + if (m_channel && m_genOpt.inputtype == "MJPEG") + m_channel->Close(); // Needed because of NVR::MJPEGInit() LOG(VB_GENERAL, LOG_INFO, LOC + "TuningNewRecorder - CreateRecorder()"); - recorder = RecorderBase::CreateRecorder(this, channel, profile, genOpt); + m_recorder = RecorderBase::CreateRecorder(this, m_channel, profile, m_genOpt); - if (recorder) + if (m_recorder) { - recorder->SetRingBuffer(ringBuffer); - recorder->Initialize(); - if (recorder->IsErrored()) + m_recorder->SetRingBuffer(m_ringBuffer); + m_recorder->Initialize(); + if (m_recorder->IsErrored()) { LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to initialize recorder!"); - delete recorder; - recorder = nullptr; + delete m_recorder; + m_recorder = nullptr; } } - if (!recorder) + if (!m_recorder) { LOG(VB_GENERAL, LOG_ERR, LOC + QString("Failed to start recorder!\n" "\t\t\t\t Tuning request was %1\n") - .arg(lastTuningRequest.toString())); + .arg(m_lastTuningRequest.toString())); if (HasFlags(kFlagLiveTV)) { - QString message = QString("QUIT_LIVETV %1").arg(inputid); + QString message = QString("QUIT_LIVETV %1").arg(m_inputid); MythEvent me(message); gCoreContext->dispatch(me); } @@ -4292,7 +4256,7 @@ void TVRec::TuningNewRecorder(MPEGStreamData *streamData) } if (rec) - recorder->SetRecording(rec); + m_recorder->SetRecording(rec); if (GetDTVRecorder() && streamData) { @@ -4302,33 +4266,33 @@ void TVRec::TuningNewRecorder(MPEGStreamData *streamData) GetDTVRecorder()->SetStreamData(streamData); } - if (channel && genOpt.inputtype == "MJPEG") - channel->Open(); // Needed because of NVR::MJPEGInit() + if (m_channel && m_genOpt.inputtype == "MJPEG") + m_channel->Open(); // Needed because of NVR::MJPEGInit() // Setup for framebuffer capture devices.. - if (channel) + if (m_channel) { - SetVideoFiltersForChannel(channel->GetSourceID(), - channel->GetChannelName()); + SetVideoFiltersForChannel(m_channel->GetSourceID(), + m_channel->GetChannelName()); } if (GetV4LChannel()) { - channel->InitPictureAttributes(); + m_channel->InitPictureAttributes(); CloseChannel(); } - recorderThread = new MThread("RecThread", recorder); - recorderThread->start(); + m_recorderThread = new MThread("RecThread", m_recorder); + m_recorderThread->start(); // Wait for recorder to start. - stateChangeLock.unlock(); - while (!recorder->IsRecording() && !recorder->IsErrored()) + m_stateChangeLock.unlock(); + while (!m_recorder->IsRecording() && !m_recorder->IsErrored()) std::this_thread::sleep_for(std::chrono::microseconds(5)); - stateChangeLock.lock(); + m_stateChangeLock.lock(); if (GetV4LChannel()) - channel->SetFd(recorder->GetVideoFd()); + m_channel->SetFd(m_recorder->GetVideoFd()); SetFlags(kFlagRecorderRunning | kFlagRingBufferReady, __FILE__, __LINE__); @@ -4337,11 +4301,11 @@ void TVRec::TuningNewRecorder(MPEGStreamData *streamData) //workaround for failed import recordings, no signal monitor means we never //go to recording state and the status here seems to override the status //set in the importrecorder and backend via setrecordingstatus - if (genOpt.inputtype == "IMPORT") + if (m_genOpt.inputtype == "IMPORT") { SetRecordingStatus(RecStatus::Recording, __LINE__); - if (curRecording) - curRecording->SetRecordingStatus(RecStatus::Recording); + if (m_curRecording) + m_curRecording->SetRecordingStatus(RecStatus::Recording); } return; @@ -4365,7 +4329,7 @@ void TVRec::TuningNewRecorder(MPEGStreamData *streamData) gCoreContext->dispatch(me); } - if (tvchain) + if (m_tvChain) delete rec; } @@ -4378,10 +4342,10 @@ void TVRec::TuningRestartRecorder(void) bool had_dummyrec = false; - if (curRecording) + if (m_curRecording) { - FinishedRecording(curRecording, nullptr); - curRecording->MarkAsInUse(false, kRecorderInUseID); + FinishedRecording(m_curRecording, nullptr); + m_curRecording->MarkAsInUse(false, kRecorderInUseID); } if (HasFlags(kFlagDummyRecorderRunning)) @@ -4390,34 +4354,34 @@ void TVRec::TuningRestartRecorder(void) had_dummyrec = true; } - SwitchLiveTVRingBuffer(channel->GetChannelName(), true, !had_dummyrec); + SwitchLiveTVRingBuffer(m_channel->GetChannelName(), true, !had_dummyrec); if (had_dummyrec) { - recorder->SetRingBuffer(ringBuffer); - ProgramInfo *progInfo = tvchain->GetProgramAt(-1); + m_recorder->SetRingBuffer(m_ringBuffer); + ProgramInfo *progInfo = m_tvChain->GetProgramAt(-1); RecordingInfo recinfo(*progInfo); delete progInfo; - recinfo.SetInputID(inputid); - recorder->SetRecording(&recinfo); + recinfo.SetInputID(m_inputid); + m_recorder->SetRecording(&recinfo); } - recorder->Reset(); + m_recorder->Reset(); // Set file descriptor of channel from recorder for V4L if (GetV4LChannel()) - channel->SetFd(recorder->GetVideoFd()); + m_channel->SetFd(m_recorder->GetVideoFd()); // Some recorders unpause on Reset, others do not... - recorder->Unpause(); + m_recorder->Unpause(); - if (pseudoLiveTVRecording && curRecording) + if (m_pseudoLiveTVRecording && m_curRecording) { - ProgramInfo *rcinfo1 = pseudoLiveTVRecording; + ProgramInfo *rcinfo1 = m_pseudoLiveTVRecording; QString msg1 = QString("Recording: %1 %2 %3 %4") .arg(rcinfo1->GetTitle()).arg(rcinfo1->GetChanID()) .arg(rcinfo1->GetRecordingStartTime(MythDate::ISODate)) .arg(rcinfo1->GetRecordingEndTime(MythDate::ISODate)); - ProgramInfo *rcinfo2 = tvchain->GetProgramAt(-1); + ProgramInfo *rcinfo2 = m_tvChain->GetProgramAt(-1); QString msg2 = QString("Recording: %1 %2 %3 %4") .arg(rcinfo2->GetTitle()).arg(rcinfo2->GetChanID()) .arg(rcinfo2->GetRecordingStartTime(MythDate::ISODate)) @@ -4426,12 +4390,12 @@ void TVRec::TuningRestartRecorder(void) LOG(VB_RECORD, LOG_INFO, LOC + "Pseudo LiveTV recording starting." + "\n\t\t\t" + msg1 + "\n\t\t\t" + msg2); - curRecording->SaveAutoExpire( - curRecording->GetRecordingRule()->GetAutoExpire()); + m_curRecording->SaveAutoExpire( + m_curRecording->GetRecordingRule()->GetAutoExpire()); - curRecording->ApplyRecordRecGroupChange(curRecording->GetRecordingRule()->m_recGroupID); + m_curRecording->ApplyRecordRecGroupChange(m_curRecording->GetRecordingRule()->m_recGroupID); - InitAutoRunJobs(curRecording, kAutoRunProfile, nullptr, __LINE__); + InitAutoRunJobs(m_curRecording, kAutoRunProfile, nullptr, __LINE__); } ClearFlags(kFlagNeedToStartRecorder, __FILE__, __LINE__); @@ -4439,19 +4403,19 @@ void TVRec::TuningRestartRecorder(void) void TVRec::SetFlags(uint f, const QString & file, int line) { - QMutexLocker lock(&stateChangeLock); - stateFlags |= f; + QMutexLocker lock(&m_stateChangeLock); + m_stateFlags |= f; LOG(VB_RECORD, LOG_INFO, LOC + QString("SetFlags(%1) -> %2 @ %3:%4") - .arg(FlagToString(f)).arg(FlagToString(stateFlags)).arg(file).arg(line)); + .arg(FlagToString(f)).arg(FlagToString(m_stateFlags)).arg(file).arg(line)); WakeEventLoop(); } void TVRec::ClearFlags(uint f, const QString & file, int line) { - QMutexLocker lock(&stateChangeLock); - stateFlags &= ~f; + QMutexLocker lock(&m_stateChangeLock); + m_stateFlags &= ~f; LOG(VB_RECORD, LOG_INFO, LOC + QString("ClearFlags(%1) -> %2 @ %3:%4") - .arg(FlagToString(f)).arg(FlagToString(stateFlags)).arg(file).arg(line)); + .arg(FlagToString(f)).arg(FlagToString(m_stateFlags)).arg(file).arg(line)); WakeEventLoop(); } @@ -4538,12 +4502,12 @@ QString TVRec::FlagToString(uint f) bool TVRec::WaitForNextLiveTVDir(void) { - QMutexLocker lock(&nextLiveTVDirLock); + QMutexLocker lock(&m_nextLiveTVDirLock); - bool found = !nextLiveTVDir.isEmpty(); - if (!found && triggerLiveTVDir.wait(&nextLiveTVDirLock, 500)) + bool found = !m_nextLiveTVDir.isEmpty(); + if (!found && m_triggerLiveTVDir.wait(&m_nextLiveTVDirLock, 500)) { - found = !nextLiveTVDir.isEmpty(); + found = !m_nextLiveTVDir.isEmpty(); } return found; @@ -4551,10 +4515,10 @@ bool TVRec::WaitForNextLiveTVDir(void) void TVRec::SetNextLiveTVDir(QString dir) { - QMutexLocker lock(&nextLiveTVDirLock); + QMutexLocker lock(&m_nextLiveTVDirLock); - nextLiveTVDir = dir; - triggerLiveTVDir.wakeAll(); + m_nextLiveTVDir = dir; + m_triggerLiveTVDir.wakeAll(); } bool TVRec::GetProgramRingBufferForLiveTV(RecordingInfo **pginfo, @@ -4562,24 +4526,24 @@ bool TVRec::GetProgramRingBufferForLiveTV(RecordingInfo **pginfo, const QString & channum) { LOG(VB_RECORD, LOG_INFO, LOC + "GetProgramRingBufferForLiveTV()"); - if (!channel || !tvchain || !pginfo || !rb) + if (!m_channel || !m_tvChain || !pginfo || !rb) return false; - nextLiveTVDirLock.lock(); - nextLiveTVDir.clear(); - nextLiveTVDirLock.unlock(); + m_nextLiveTVDirLock.lock(); + m_nextLiveTVDir.clear(); + m_nextLiveTVDirLock.unlock(); // Dispatch this early, the response can take a while. - MythEvent me(QString("QUERY_NEXT_LIVETV_DIR %1").arg(inputid)); + MythEvent me(QString("QUERY_NEXT_LIVETV_DIR %1").arg(m_inputid)); gCoreContext->dispatch(me); - uint sourceid = channel->GetSourceID(); + uint sourceid = m_channel->GetSourceID(); int chanid = ChannelUtil::GetChanID(sourceid, channum); if (chanid < 0) { // Test setups might have zero channels - if (genOpt.inputtype == "IMPORT" || genOpt.inputtype == "DEMO") + if (m_genOpt.inputtype == "IMPORT" || m_genOpt.inputtype == "DEMO") chanid = 9999; else { @@ -4597,15 +4561,15 @@ bool TVRec::GetProgramRingBufferForLiveTV(RecordingInfo **pginfo, hoursMax = 8; RecordingInfo *prog = nullptr; - if (pseudoLiveTVRecording) - prog = new RecordingInfo(*pseudoLiveTVRecording); + if (m_pseudoLiveTVRecording) + prog = new RecordingInfo(*m_pseudoLiveTVRecording); else { prog = new RecordingInfo( chanid, MythDate::current(true), true, hoursMax); } - prog->SetInputID(inputid); + prog->SetInputID(m_inputid); if (prog->GetRecordingStartTime() == prog->GetRecordingEndTime()) { @@ -4618,15 +4582,15 @@ bool TVRec::GetProgramRingBufferForLiveTV(RecordingInfo **pginfo, prog->SetChanID(chanid); } - if (!pseudoLiveTVRecording) + if (!m_pseudoLiveTVRecording) prog->SetRecordingStartTime(MythDate::current(true)); prog->SetStorageGroup("LiveTV"); if (WaitForNextLiveTVDir()) { - QMutexLocker lock(&nextLiveTVDirLock); - prog->SetPathname(nextLiveTVDir); + QMutexLocker lock(&m_nextLiveTVDirLock); + prog->SetPathname(m_nextLiveTVDir); } else { @@ -4634,7 +4598,7 @@ bool TVRec::GetProgramRingBufferForLiveTV(RecordingInfo **pginfo, prog->SetPathname(sgroup.FindNextDirMostFree()); } - if (!pseudoLiveTVRecording) + if (!m_pseudoLiveTVRecording) prog->SetRecordingGroup("LiveTV"); StartedRecording(prog); @@ -4664,8 +4628,8 @@ bool TVRec::CreateLiveTVRingBuffer(const QString & channum) RingBuffer *rb = nullptr; QString inputName; - if (!channel || - !channel->CheckChannel(channum)) + if (!m_channel || + !m_channel->CheckChannel(channum)) { ChangeState(kState_None); return false; @@ -4683,21 +4647,21 @@ bool TVRec::CreateLiveTVRingBuffer(const QString & channum) SetRingBuffer(rb); pginfo->SaveAutoExpire(kLiveTVAutoExpire); - if (!pseudoLiveTVRecording) + if (!m_pseudoLiveTVRecording) pginfo->ApplyRecordRecGroupChange(RecordingInfo::kLiveTVRecGroup); - bool discont = (tvchain->TotalSize() > 0); - tvchain->AppendNewProgram(pginfo, channel->GetChannelName(), - channel->GetInputName(), discont); + bool discont = (m_tvChain->TotalSize() > 0); + m_tvChain->AppendNewProgram(pginfo, m_channel->GetChannelName(), + m_channel->GetInputName(), discont); - if (curRecording) + if (m_curRecording) { - curRecording->MarkAsInUse(false, kRecorderInUseID); - delete curRecording; + m_curRecording->MarkAsInUse(false, kRecorderInUseID); + delete m_curRecording; } - curRecording = pginfo; - curRecording->MarkAsInUse(true, kRecorderInUseID); + m_curRecording = pginfo; + m_curRecording->MarkAsInUse(true, kRecorderInUseID); return true; } @@ -4706,11 +4670,11 @@ bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, bool discont, bool set_rec) { QString msg; - if (curRecording) + if (m_curRecording) { msg = QString(" curRec(%1) curRec.size(%2)") - .arg(curRecording->MakeUniqueKey()) - .arg(curRecording->GetFilesize()); + .arg(m_curRecording->MakeUniqueKey()) + .arg(m_curRecording->GetFilesize()); } LOG(VB_RECORD, LOG_INFO, LOC + QString("SwitchLiveTVRingBuffer(discont %1, set_next_rec %2)") @@ -4720,8 +4684,8 @@ bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, RingBuffer *rb = nullptr; QString inputName; - if (!channel || - !channel->CheckChannel(channum)) + if (!m_channel || + !m_channel->CheckChannel(channum)) { ChangeState(kState_None); return false; @@ -4733,20 +4697,20 @@ bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, return false; } - QString oldinputtype = tvchain->GetInputType(-1); + QString oldinputtype = m_tvChain->GetInputType(-1); pginfo->MarkAsInUse(true, kRecorderInUseID); pginfo->SaveAutoExpire(kLiveTVAutoExpire); - if (!pseudoLiveTVRecording) + if (!m_pseudoLiveTVRecording) pginfo->ApplyRecordRecGroupChange(RecordingInfo::kLiveTVRecGroup); - tvchain->AppendNewProgram(pginfo, channel->GetChannelName(), - channel->GetInputName(), discont); + m_tvChain->AppendNewProgram(pginfo, m_channel->GetChannelName(), + m_channel->GetInputName(), discont); - if (set_rec && recorder) + if (set_rec && m_recorder) { - recorder->SetNextRecording(pginfo, rb); + m_recorder->SetNextRecording(pginfo, rb); if (discont) - recorder->CheckForRingBufferSwitch(); + m_recorder->CheckForRingBufferSwitch(); delete pginfo; SetFlags(kFlagRingBufferReady, __FILE__, __LINE__); } @@ -4754,13 +4718,13 @@ bool TVRec::SwitchLiveTVRingBuffer(const QString & channum, { // dummy recordings are finished before this // is called and other recordings must be finished.. - if (curRecording && oldinputtype != "DUMMY") + if (m_curRecording && oldinputtype != "DUMMY") { - FinishedRecording(curRecording, nullptr); - curRecording->MarkAsInUse(false, kRecorderInUseID); - delete curRecording; + FinishedRecording(m_curRecording, nullptr); + m_curRecording->MarkAsInUse(false, kRecorderInUseID); + delete m_curRecording; } - curRecording = pginfo; + m_curRecording = pginfo; SetRingBuffer(rb); } else @@ -4775,28 +4739,28 @@ RecordingInfo *TVRec::SwitchRecordingRingBuffer(const RecordingInfo &rcinfo) { LOG(VB_RECORD, LOG_INFO, LOC + "SwitchRecordingRingBuffer()"); - if (switchingBuffer) + if (m_switchingBuffer) { LOG(VB_RECORD, LOG_ERR, LOC + "SwitchRecordingRingBuffer -> " "already switching."); return nullptr; } - if (!recorder) + if (!m_recorder) { LOG(VB_RECORD, LOG_ERR, LOC + "SwitchRecordingRingBuffer -> " "invalid recorder."); return nullptr; } - if (!curRecording) + if (!m_curRecording) { LOG(VB_RECORD, LOG_ERR, LOC + "SwitchRecordingRingBuffer -> " "invalid recording."); return nullptr; } - if (rcinfo.GetChanID() != curRecording->GetChanID()) + if (rcinfo.GetChanID() != m_curRecording->GetChanID()) { LOG(VB_RECORD, LOG_ERR, LOC + "SwitchRecordingRingBuffer -> " "Not the same channel."); @@ -4808,21 +4772,21 @@ RecordingInfo *TVRec::SwitchRecordingRingBuffer(const RecordingInfo &rcinfo) QString pn = LoadProfile(nullptr, ri, profile); - if (pn != recProfileName) + if (pn != m_recProfileName) { LOG(VB_RECORD, LOG_ERR, LOC + QString("SwitchRecordingRingBuffer() -> " "cannot switch profile '%1' to '%2'") - .arg(recProfileName).arg(pn)); + .arg(m_recProfileName).arg(pn)); return nullptr; } - PreviewGeneratorQueue::GetPreviewImage(*curRecording, ""); + PreviewGeneratorQueue::GetPreviewImage(*m_curRecording, ""); ri->MarkAsInUse(true, kRecorderInUseID); StartedRecording(ri); - bool write = genOpt.inputtype != "IMPORT"; + bool write = m_genOpt.inputtype != "IMPORT"; RingBuffer *rb = RingBuffer::Create(ri->GetPathname(), write); if (!rb || !rb->IsOpen()) { @@ -4837,10 +4801,10 @@ RecordingInfo *TVRec::SwitchRecordingRingBuffer(const RecordingInfo &rcinfo) } else { - recorder->SetNextRecording(ri, rb); + m_recorder->SetNextRecording(ri, rb); SetFlags(kFlagRingBufferReady, __FILE__, __LINE__); - recordEndTime = GetRecordEndTime(ri); - switchingBuffer = true; + m_recordEndTime = GetRecordEndTime(ri); + m_switchingBuffer = true; ri->SetRecordingStatus(RecStatus::Recording); LOG(VB_RECORD, LOG_INFO, LOC + "SwitchRecordingRingBuffer -> done"); return ri; diff --git a/mythtv/libs/libmythtv/tv_rec.h b/mythtv/libs/libmythtv/tv_rec.h index bf9e98c5b0a..4cff4aad161 100644 --- a/mythtv/libs/libmythtv/tv_rec.h +++ b/mythtv/libs/libmythtv/tv_rec.h @@ -181,10 +181,10 @@ class MTV_PUBLIC TVRec : public SignalMonitorListener, public QRunnable TVState GetState(void) const; /// \brief Returns "state == kState_RecordingPreRecorded" - bool IsPlaying(void) { return StateIsPlaying(internalState); } + bool IsPlaying(void) { return StateIsPlaying(m_internalState); } /// \brief Returns "state == kState_RecordingRecordedOnly" /// \sa IsReallyRecording() - bool IsRecording(void) { return StateIsRecording(internalState); } + bool IsRecording(void) { return StateIsRecording(m_internalState); } bool SetVideoFiltersForChannel(uint sourceid, const QString &channum); @@ -238,9 +238,9 @@ class MTV_PUBLIC TVRec : public SignalMonitorListener, public QRunnable QString channame, QString xmltvid); /// \brief Returns the inputid - uint GetInputId(void) { return inputid; } - uint GetParentId(void) { return parentid; } - uint GetMajorId(void) { return parentid ? parentid : inputid; } + uint GetInputId(void) { return m_inputid; } + uint GetParentId(void) { return m_parentid; } + uint GetMajorId(void) { return m_parentid ? m_parentid : m_inputid; } /// \brief Returns true is "errored" is true, false otherwise. bool IsErrored(void) const { return HasFlags(kFlagErrored); } @@ -249,7 +249,7 @@ class MTV_PUBLIC TVRec : public SignalMonitorListener, public QRunnable void SetNextLiveTVDir(QString dir); - uint GetFlags(void) const { return stateFlags; } + uint GetFlags(void) const { return m_stateFlags; } static TVRec *GetTVRec(uint inputid); @@ -291,7 +291,7 @@ class MTV_PUBLIC TVRec : public SignalMonitorListener, public QRunnable void TeardownSignalMonitor(void); DTVSignalMonitor *GetDTVSignalMonitor(void); - bool HasFlags(uint f) const { return (stateFlags & f) == f; } + bool HasFlags(uint f) const { return (m_stateFlags & f) == f; } void SetFlags(uint f, const QString & file, int line); void ClearFlags(uint f, const QString & file, int line); static QString FlagToString(uint); @@ -340,93 +340,94 @@ class MTV_PUBLIC TVRec : public SignalMonitorListener, public QRunnable RecordingProfile&); // Various components TVRec coordinates - RecorderBase *recorder; - ChannelBase *channel; - SignalMonitor *signalMonitor; - EITScanner *scanner; + RecorderBase *m_recorder {nullptr}; + ChannelBase *m_channel {nullptr}; + SignalMonitor *m_signalMonitor {nullptr}; + EITScanner *m_scanner {nullptr}; - QDateTime signalEventCmdTimeout; - bool signalEventCmdSent; + QDateTime m_signalEventCmdTimeout; + bool m_signalEventCmdSent {false}; - QDateTime startRecordingDeadline; - QDateTime signalMonitorDeadline; - uint signalMonitorCheckCnt; - bool reachedRecordingDeadline; - QDateTime preFailDeadline; - bool reachedPreFail; + QDateTime m_startRecordingDeadline; + QDateTime m_signalMonitorDeadline; + uint m_signalMonitorCheckCnt {0}; + bool m_reachedRecordingDeadline {false}; + QDateTime m_preFailDeadline; + bool m_reachedPreFail {false}; // Various threads /// Event processing thread, runs TVRec::run(). - MThread *eventThread; + MThread *m_eventThread {nullptr}; /// Recorder thread, runs RecorderBase::run(). - MThread *recorderThread; + MThread *m_recorderThread {nullptr}; // Configuration variables from database - bool transcodeFirst; - bool earlyCommFlag; - bool runJobOnHostOnly; - int eitCrawlIdleStart; - int eitTransportTimeout; - int audioSampleRateDB; - int overRecordSecNrml; - int overRecordSecCat; - QString overRecordCategory; + bool m_transcodeFirst {false}; + bool m_earlyCommFlag {false}; + bool m_runJobOnHostOnly {false}; + int m_eitCrawlIdleStart {60}; + int m_eitTransportTimeout {5*60}; + int m_audioSampleRateDB {0}; + int m_overRecordSecNrml {0}; + int m_overRecordSecCat {0}; + QString m_overRecordCategory; // Configuration variables from setup routines - uint inputid; - uint parentid; - bool ispip; + uint m_inputid; + uint m_parentid {0}; + bool m_ispip {false}; // Configuration variables from database, based on inputid - GeneralDBOptions genOpt; - DVBDBOptions dvbOpt; - FireWireDBOptions fwOpt; + GeneralDBOptions m_genOpt; + DVBDBOptions m_dvbOpt; + FireWireDBOptions m_fwOpt; - QString recProfileName; + QString m_recProfileName; // State variables - mutable QMutex setChannelLock; - mutable QMutex stateChangeLock; - mutable QMutex pendingRecLock; - TVState internalState; - TVState desiredNextState; - bool changeState; - bool pauseNotify; - uint stateFlags; - TuningQueue tuningRequests; - TuningRequest lastTuningRequest; - QDateTime eitScanStartTime; - mutable QMutex triggerEventLoopLock; - QWaitCondition triggerEventLoopWait; - bool triggerEventLoopSignal; - mutable QMutex triggerEventSleepLock; - QWaitCondition triggerEventSleepWait; - bool triggerEventSleepSignal; - volatile bool switchingBuffer; - RecStatus::Type m_recStatus; + mutable QMutex m_setChannelLock; + mutable QMutex m_stateChangeLock {QMutex::Recursive}; + mutable QMutex m_pendingRecLock {QMutex::Recursive}; + TVState m_internalState {kState_None}; + TVState m_desiredNextState {kState_None}; + bool m_changeState {false}; + bool m_pauseNotify {true}; + uint m_stateFlags {0}; + TuningQueue m_tuningRequests; + TuningRequest m_lastTuningRequest {0}; + QDateTime m_eitScanStartTime; + mutable QMutex m_triggerEventLoopLock {QMutex::NonRecursive}; + QWaitCondition m_triggerEventLoopWait; + bool m_triggerEventLoopSignal {false}; + mutable QMutex m_triggerEventSleepLock {QMutex::NonRecursive}; + QWaitCondition m_triggerEventSleepWait; + bool m_triggerEventSleepSignal {false}; + volatile bool m_switchingBuffer {false}; + RecStatus::Type m_recStatus {RecStatus::Unknown}; // Current recording info - RecordingInfo *curRecording; - QDateTime recordEndTime; - QHash autoRunJobs; // RecordingInfo::MakeUniqueKey()->autoRun - int overrecordseconds; + RecordingInfo *m_curRecording {nullptr}; + QDateTime m_recordEndTime; + // RecordingInfo::MakeUniqueKey()->autoRun + QHash m_autoRunJobs; + int m_overrecordseconds {0}; // Pending recording info - PendingMap pendingRecordings; + PendingMap m_pendingRecordings; // Pseudo LiveTV recording - RecordingInfo *pseudoLiveTVRecording; - QString nextLiveTVDir; - QMutex nextLiveTVDirLock; - QWaitCondition triggerLiveTVDir; - QString LiveTVStartChannel; + RecordingInfo *m_pseudoLiveTVRecording {nullptr}; + QString m_nextLiveTVDir; + QMutex m_nextLiveTVDirLock; + QWaitCondition m_triggerLiveTVDir; + QString m_liveTVStartChannel; // LiveTV file chain - LiveTVChain *tvchain; + LiveTVChain *m_tvChain {nullptr}; // RingBuffer info - RingBuffer *ringBuffer; - QString rbFileExt; + RingBuffer *m_ringBuffer {nullptr}; + QString m_rbFileExt {"ts"}; public: static QReadWriteLock s_inputsLock;