From c2730942e325b393e589bb0b369c8e08bab3ea3c Mon Sep 17 00:00:00 2001 From: David Hampton Date: Thu, 17 Dec 2020 22:21:37 -0500 Subject: [PATCH] More libmythtv to std::chrono conversions. (27a) --- mythtv/libs/libmythtv/eitscanner.cpp | 6 +-- mythtv/libs/libmythtv/eitscanner.h | 4 +- mythtv/libs/libmythtv/jobqueue.cpp | 30 ++++++------- mythtv/libs/libmythtv/jobqueue.h | 5 ++- mythtv/libs/libmythtv/mythplayerui.cpp | 15 ++++--- mythtv/libs/libmythtv/mythsystemevent.cpp | 2 +- mythtv/libs/libmythtv/recordinginfo.cpp | 10 ++--- mythtv/libs/libmythtv/recordinginfo.h | 2 +- mythtv/libs/libmythtv/tv_play.cpp | 2 +- mythtv/libs/libmythtv/tv_rec.cpp | 44 ++++++++++---------- mythtv/libs/libmythtv/tv_rec.h | 8 ++-- mythtv/programs/mythbackend/scheduler.cpp | 4 +- mythtv/programs/mythbackend/services/dvr.cpp | 2 +- mythtv/programs/mythshutdown/main.cpp | 2 +- 14 files changed, 69 insertions(+), 67 deletions(-) diff --git a/mythtv/libs/libmythtv/eitscanner.cpp b/mythtv/libs/libmythtv/eitscanner.cpp index 560fd38b2cd..b08318591df 100644 --- a/mythtv/libs/libmythtv/eitscanner.cpp +++ b/mythtv/libs/libmythtv/eitscanner.cpp @@ -132,7 +132,7 @@ void EITScanner::run(void) } m_activeScanNextTrig = MythDate::current() - .addSecs(m_activeScanTrigTime); + .addSecs(m_activeScanTrigTime.count()); if (!m_activeScanChannels.empty()) { ++m_activeScanNextChan; @@ -214,7 +214,7 @@ void EITScanner::StopPassiveScan(void) LOG(VB_EIT, LOG_INFO, LOC_ID + "Stopped passive scan"); } -void EITScanner::StartActiveScan(TVRec *_rec, uint max_seconds_per_source) +void EITScanner::StartActiveScan(TVRec *_rec, std::chrono::seconds max_seconds_per_source) { m_rec = _rec; @@ -273,7 +273,7 @@ void EITScanner::StartActiveScan(TVRec *_rec, uint max_seconds_per_source) m_activeScanTrigTime = max_seconds_per_source; // Add a little randomness to trigger time so multiple // cards will have a staggered channel changing time. - m_activeScanTrigTime += MythRandom() % 29; + m_activeScanTrigTime += std::chrono::seconds(MythRandom() % 29); m_activeScanStopped = false; m_activeScan = true; } diff --git a/mythtv/libs/libmythtv/eitscanner.h b/mythtv/libs/libmythtv/eitscanner.h index 6b4fd14ff71..dc8ebe94a72 100644 --- a/mythtv/libs/libmythtv/eitscanner.h +++ b/mythtv/libs/libmythtv/eitscanner.h @@ -39,7 +39,7 @@ class EITScanner : public QRunnable void StartPassiveScan(ChannelBase *channel, EITSource *eitSource); void StopPassiveScan(void); - void StartActiveScan(TVRec *_rec, uint max_seconds_per_source); + void StartActiveScan(TVRec *_rec, std::chrono::seconds max_seconds_per_source); void StopActiveScan(void); @@ -65,7 +65,7 @@ class EITScanner : public QRunnable volatile bool m_activeScanStopped {true}; // protected by lock QWaitCondition m_activeScanCond; // protected by lock QDateTime m_activeScanNextTrig; - uint m_activeScanTrigTime {0}; + std::chrono::seconds m_activeScanTrigTime {0s}; QStringList m_activeScanChannels; QStringList::iterator m_activeScanNextChan; uint m_activeScanNextChanIndex {MythRandom()}; diff --git a/mythtv/libs/libmythtv/jobqueue.cpp b/mythtv/libs/libmythtv/jobqueue.cpp index 9ac98bccffe..3aaaf83f874 100644 --- a/mythtv/libs/libmythtv/jobqueue.cpp +++ b/mythtv/libs/libmythtv/jobqueue.cpp @@ -790,8 +790,8 @@ bool JobQueue::DeleteAllJobs(uint chanid, const QDateTime &recstartts) // wait until running job(s) are done bool jobsAreRunning = true; - int totalSlept = 0; - int maxSleep = 90; + std::chrono::seconds totalSlept = 0s; + std::chrono::seconds maxSleep = 90s; while (jobsAreRunning && totalSlept < maxSleep) { usleep(1000); @@ -817,7 +817,7 @@ bool JobQueue::DeleteAllJobs(uint chanid, const QDateTime &recstartts) jobsAreRunning = false; continue; } - if ((totalSlept % 5) == 0) + if ((totalSlept % 5s) == 0s) { message = QString("Waiting on %1 jobs still running for " "chanid %2 @ %3").arg(query.size()) @@ -1148,7 +1148,7 @@ QString JobQueue::StatusText(int status) return tr("Undefined"); } -bool JobQueue::InJobRunWindow(int orStartsWithinMins) +bool JobQueue::InJobRunWindow(std::chrono::minutes orStartsWithinMins) { QString queueStartTimeStr; QString queueEndTimeStr; @@ -1156,7 +1156,7 @@ bool JobQueue::InJobRunWindow(int orStartsWithinMins) QTime queueEndTime; QTime curTime = QTime::currentTime(); bool inTimeWindow = false; - orStartsWithinMins = orStartsWithinMins < 0 ? 0 : orStartsWithinMins; + orStartsWithinMins = orStartsWithinMins < 0min ? 0min : orStartsWithinMins; queueStartTimeStr = gCoreContext->GetSetting("JobQueueWindowStart", "00:00"); queueEndTimeStr = gCoreContext->GetSetting("JobQueueWindowEnd", "23:59"); @@ -1192,17 +1192,17 @@ bool JobQueue::InJobRunWindow(int orStartsWithinMins) { inTimeWindow = true; } - else if (orStartsWithinMins > 0) + else if (orStartsWithinMins > 0min) { // Check if the window starts soon if (curTime <= queueStartTime) { // Start time hasn't passed yet today - if (queueStartTime.secsTo(curTime) <= (orStartsWithinMins * 60)) + if (queueStartTime.secsTo(curTime) <= duration_cast(orStartsWithinMins).count()) { LOG(VB_JOBQUEUE, LOG_INFO, LOC + QString("Job run window will start within %1 minutes") - .arg(orStartsWithinMins)); + .arg(orStartsWithinMins.count())); inTimeWindow = true; } } @@ -1213,12 +1213,12 @@ bool JobQueue::InJobRunWindow(int orStartsWithinMins) QDateTime startDateTime = QDateTime( curDateTime.date(), queueStartTime, Qt::UTC).addDays(1); - if (curDateTime.secsTo(startDateTime) <= (orStartsWithinMins * 60)) + if (curDateTime.secsTo(startDateTime) <= duration_cast(orStartsWithinMins).count()) { LOG(VB_JOBQUEUE, LOG_INFO, LOC + QString("Job run window will start " "within %1 minutes (tomorrow)") - .arg(orStartsWithinMins)); + .arg(orStartsWithinMins.count())); inTimeWindow = true; } } @@ -1227,18 +1227,18 @@ bool JobQueue::InJobRunWindow(int orStartsWithinMins) return inTimeWindow; } -bool JobQueue::HasRunningOrPendingJobs(int startingWithinMins) +bool JobQueue::HasRunningOrPendingJobs(std::chrono::minutes startingWithinMins) { /* startingWithinMins <= 0 - look for any pending jobs > 0 - only consider pending starting within this time */ QMap jobs; QMap::Iterator it; QDateTime maxSchedRunTime = MythDate::current(); - bool checkForQueuedJobs = (startingWithinMins <= 0 + bool checkForQueuedJobs = (startingWithinMins <= 0min || InJobRunWindow(startingWithinMins)); - if (checkForQueuedJobs && startingWithinMins > 0) { - maxSchedRunTime = maxSchedRunTime.addSecs(startingWithinMins * 60); + if (checkForQueuedJobs && startingWithinMins > 0min) { + maxSchedRunTime = maxSchedRunTime.addSecs(duration_cast(startingWithinMins).count()); LOG(VB_JOBQUEUE, LOG_INFO, LOC + QString("HasRunningOrPendingJobs: checking for jobs " "starting before: %1") @@ -1259,7 +1259,7 @@ bool JobQueue::HasRunningOrPendingJobs(int startingWithinMins) if (checkForQueuedJobs) { if ((tmpStatus != JOB_UNKNOWN) && (!(tmpStatus & JOB_DONE))) { - if (startingWithinMins <= 0) { + if (startingWithinMins <= 0min) { LOG(VB_JOBQUEUE, LOG_INFO, LOC + "HasRunningOrPendingJobs: found pending job"); return true; diff --git a/mythtv/libs/libmythtv/jobqueue.h b/mythtv/libs/libmythtv/jobqueue.h index f1278330b29..ef3862d9f09 100644 --- a/mythtv/libs/libmythtv/jobqueue.h +++ b/mythtv/libs/libmythtv/jobqueue.h @@ -12,6 +12,7 @@ #include #include "mythtvexp.h" +#include "mythchrono.h" class MThread; class ProgramInfo; @@ -201,7 +202,7 @@ class MTV_PUBLIC JobQueue : public QObject, public QRunnable static QString JobText(int jobType); static QString StatusText(int status); - static bool HasRunningOrPendingJobs(int startingWithinMins = 0); + static bool HasRunningOrPendingJobs(std::chrono::minutes startingWithinMins = 0min); static int GetJobsInQueue(QMap &jobs, int findJobs = JOB_LIST_NOT_DONE); @@ -227,7 +228,7 @@ class MTV_PUBLIC JobQueue : public QObject, public QRunnable bool AllowedToRun(const JobQueueEntry& job); - static bool InJobRunWindow(int orStartsWithinMins = 0); + static bool InJobRunWindow(std::chrono::minutes orStartsWithinMins = 0min); void StartChildJob(void *(*ChildThreadRoutine)(void *), int jobID); diff --git a/mythtv/libs/libmythtv/mythplayerui.cpp b/mythtv/libs/libmythtv/mythplayerui.cpp index 8412392cdf1..bfce6aa300e 100644 --- a/mythtv/libs/libmythtv/mythplayerui.cpp +++ b/mythtv/libs/libmythtv/mythplayerui.cpp @@ -1,3 +1,5 @@ +#include + // MythTV #include "mythsystemevent.h" #include "audiooutput.h" @@ -762,18 +764,15 @@ void MythPlayerUI::SetWatched(bool ForceWatched) numFrames = static_cast((endtime - starttime) * m_videoFrameRate); } - auto offset = static_cast(round(0.14 * (numFrames / m_videoFrameRate))); - - if (offset < 240) - offset = 240; // 4 Minutes Min - else if (offset > 720) - offset = 720; // 12 Minutes Max + // 4 minutes min, 12 minutes max + auto offset = std::chrono::seconds(lround(0.14 * (numFrames / m_videoFrameRate))); + offset = std::clamp(offset, 240s, 720s); - if (ForceWatched || (m_framesPlayed > (numFrames - (offset * m_videoFrameRate)))) + if (ForceWatched || (m_framesPlayed > (numFrames - (offset.count() * m_videoFrameRate)))) { m_playerCtx->m_playingInfo->SaveWatched(true); LOG(VB_GENERAL, LOG_INFO, LOC + QString("Marking recording as watched using offset %1 minutes") - .arg(offset/60)); + .arg(offset.count()/60)); } m_playerCtx->UnlockPlayingInfo(__FILE__, __LINE__); diff --git a/mythtv/libs/libmythtv/mythsystemevent.cpp b/mythtv/libs/libmythtv/mythsystemevent.cpp index fc39e2a379c..2388272d8d6 100644 --- a/mythtv/libs/libmythtv/mythsystemevent.cpp +++ b/mythtv/libs/libmythtv/mythsystemevent.cpp @@ -190,7 +190,7 @@ void MythSystemEventHandler::SubstituteMatches(const QStringList &tokens, { // 2rd Try searching for RecordingInfo RecordingInfo::LoadStatus status = RecordingInfo::kNoProgram; - RecordingInfo recinfo2(chanid, recstartts, false, 0, &status); + RecordingInfo recinfo2(chanid, recstartts, false, 0h, &status); if (status == RecordingInfo::kFoundProgram) recinfo2.SubstituteMatches(command); else diff --git a/mythtv/libs/libmythtv/recordinginfo.cpp b/mythtv/libs/libmythtv/recordinginfo.cpp index e78b6f3fae1..6b32c13ba92 100644 --- a/mythtv/libs/libmythtv/recordinginfo.cpp +++ b/mythtv/libs/libmythtv/recordinginfo.cpp @@ -236,7 +236,7 @@ RecordingInfo::RecordingInfo( */ RecordingInfo::RecordingInfo( uint _chanid, const QDateTime &desiredts, - bool genUnknown, uint maxHours, LoadStatus *status) + bool genUnknown, std::chrono::hours maxHours, LoadStatus *status) { ProgramList schedList; ProgramList progList; @@ -257,12 +257,12 @@ RecordingInfo::RecordingInfo( { ProgramInfo *pginfo = progList[0]; - if (maxHours > 0) + if (maxHours > 0h) { - if (desiredts.secsTo( - pginfo->GetScheduledEndTime()) > (int)maxHours * 3600) + auto maxSecs = duration_cast(maxHours); + if (desiredts.secsTo(pginfo->GetScheduledEndTime()) > maxSecs.count()) { - pginfo->SetScheduledEndTime(desiredts.addSecs(maxHours * 3600)); + pginfo->SetScheduledEndTime(desiredts.addSecs(maxSecs.count())); pginfo->SetRecordingEndTime(pginfo->GetScheduledEndTime()); } } diff --git a/mythtv/libs/libmythtv/recordinginfo.h b/mythtv/libs/libmythtv/recordinginfo.h index c1c5237772a..dbe5cb13a62 100644 --- a/mythtv/libs/libmythtv/recordinginfo.h +++ b/mythtv/libs/libmythtv/recordinginfo.h @@ -183,7 +183,7 @@ class MTV_PUBLIC RecordingInfo : public ProgramInfo kFakedZeroMinProgram = 3, }; RecordingInfo(uint _chanid, const QDateTime &desiredts, - bool genUnknown, uint maxHours = 0, + bool genUnknown, std::chrono::hours maxHours = 0h, LoadStatus *status = nullptr); enum SpecialRecordingGroups { diff --git a/mythtv/libs/libmythtv/tv_play.cpp b/mythtv/libs/libmythtv/tv_play.cpp index 32d0d3f4cc5..94082ff3c7b 100644 --- a/mythtv/libs/libmythtv/tv_play.cpp +++ b/mythtv/libs/libmythtv/tv_play.cpp @@ -7603,7 +7603,7 @@ void TV::QuickRecord() QDateTime startts = MythDate::fromString(bi.m_startTime); RecordingInfo::LoadStatus status = RecordingInfo::kNoProgram; - RecordingInfo recinfo(bi.m_chanId, startts, false, 0, &status); + RecordingInfo recinfo(bi.m_chanId, startts, false, 0h, &status); if (RecordingInfo::kFoundProgram == status) recinfo.QuickRecord(); recinfo.ToMap(infoMap); diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp index e71f56f1794..c1878f24b33 100644 --- a/mythtv/libs/libmythtv/tv_rec.cpp +++ b/mythtv/libs/libmythtv/tv_rec.cpp @@ -53,7 +53,7 @@ static bool is_dishnet_eit(uint inputid); static int init_jobs(const RecordingInfo *rec, RecordingProfile &profile, bool on_host, bool transcode_bfr_comm, bool on_line_comm); static void apply_broken_dvb_driver_crc_hack(ChannelBase* /*c*/, MPEGStreamData* /*s*/); -static int eit_start_rand(uint inputId, int eitTransportTimeout); +static std::chrono::seconds eit_start_rand(uint inputId, std::chrono::seconds eitTransportTimeout); /** \class TVRec * \brief This is the coordinating class of the \ref recorder_subsystem. @@ -151,12 +151,13 @@ bool TVRec::Init(void) gCoreContext->GetBoolSetting("AutoTranscodeBeforeAutoCommflag", false); m_earlyCommFlag = gCoreContext->GetBoolSetting("AutoCommflagWhileRecording", false); m_runJobOnHostOnly = gCoreContext->GetBoolSetting("JobsRunOnRecordHost", false); - m_eitTransportTimeout = - std::max(gCoreContext->GetNumSetting("EITTransportTimeout", 5) * 60, 6); - m_eitCrawlIdleStart = gCoreContext->GetNumSetting("EITCrawIdleStart", 60); + m_eitTransportTimeout = gCoreContext->GetDurSetting("EITTransportTimeout", 5min); + if (m_eitTransportTimeout < 6s) + m_eitTransportTimeout = 6s; + m_eitCrawlIdleStart = gCoreContext->GetDurSetting("EITCrawIdleStart", 60s); m_audioSampleRateDB = gCoreContext->GetNumSetting("AudioSampleRate"); - m_overRecordSecNrml = gCoreContext->GetNumSetting("RecordOverTime"); - m_overRecordSecCat = gCoreContext->GetNumSetting("CategoryOverTime") * 60; + m_overRecordSecNrml = gCoreContext->GetDurSetting("RecordOverTime"); + m_overRecordSecCat = gCoreContext->GetDurSetting("CategoryOverTime"); m_overRecordCategory= gCoreContext->GetSetting("OverTimeCategory"); m_eventThread->start(); @@ -332,8 +333,8 @@ QDateTime TVRec::GetRecordEndTime(const ProgramInfo *pi) const { bool spcat = (!m_overRecordCategory.isEmpty() && pi->GetCategory() == m_overRecordCategory); - int secs = (spcat) ? m_overRecordSecCat : m_overRecordSecNrml; - return pi->GetRecordingEndTime().addSecs(secs); + std::chrono::seconds secs = (spcat) ? m_overRecordSecCat : m_overRecordSecNrml; + return pi->GetRecordingEndTime().addSecs(secs.count()); } /** \fn TVRec::CancelNextRecording(bool) @@ -1019,8 +1020,8 @@ void TVRec::HandleStateChange(void) { m_scanner->StopActiveScan(); ClearFlags(kFlagEITScannerRunning, __FILE__, __LINE__); - m_eitScanStartTime = MythDate::current().addSecs( - m_eitCrawlIdleStart + eit_start_rand(m_inputId, m_eitTransportTimeout)); + auto secs = m_eitCrawlIdleStart + eit_start_rand(m_inputId, m_eitTransportTimeout); + m_eitScanStartTime = MythDate::current().addSecs(secs.count()); } // Handle different state transitions @@ -1064,8 +1065,8 @@ void TVRec::HandleStateChange(void) m_eitScanStartTime = MythDate::current(); if (m_scanner && (m_internalState == kState_None)) { - m_eitScanStartTime = m_eitScanStartTime.addSecs( - m_eitCrawlIdleStart + eit_start_rand(m_inputId, m_eitTransportTimeout)); + auto secs = m_eitCrawlIdleStart + eit_start_rand(m_inputId, m_eitTransportTimeout); + m_eitScanStartTime = m_eitScanStartTime.addSecs(secs.count()); } else { @@ -1249,10 +1250,10 @@ static int num_inputs(void) return -1; } -static int eit_start_rand(uint inputId, int eitTransportTimeout) +static std::chrono::seconds eit_start_rand(uint inputId, std::chrono::seconds eitTransportTimeout) { // Randomize start time a bit - int timeout = static_cast(MythRandom() % (eitTransportTimeout / 3)); + auto timeout = std::chrono::seconds(MythRandom()) % (eitTransportTimeout.count() / 3); // Get the number of inputs and the position of the current input // to distribute the scan start evenly over eitTransportTimeout @@ -1278,8 +1279,8 @@ void TVRec::run(void) (m_dvbOpt.m_dvbEitScan || get_use_eit(m_inputId))) // EIT is selected for card OR EIT is selected for video source { m_scanner = new EITScanner(m_inputId); - m_eitScanStartTime = m_eitScanStartTime.addSecs( - m_eitCrawlIdleStart + eit_start_rand(m_inputId, m_eitTransportTimeout)); + auto secs = m_eitCrawlIdleStart + eit_start_rand(m_inputId, m_eitTransportTimeout); + m_eitScanStartTime = m_eitScanStartTime.addSecs(secs.count()); } else { @@ -3579,8 +3580,8 @@ void TVRec::TuningShutdowns(const TuningRequest &request) { m_scanner->StopActiveScan(); ClearFlags(kFlagEITScannerRunning, __FILE__, __LINE__); - m_eitScanStartTime = MythDate::current().addSecs( - m_eitCrawlIdleStart + eit_start_rand(m_inputId, m_eitTransportTimeout)); + auto secs = m_eitCrawlIdleStart + eit_start_rand(m_inputId, m_eitTransportTimeout); + m_eitScanStartTime = MythDate::current().addSecs(secs.count()); } if (m_scanner && !request.IsOnSameMultiplex()) @@ -4573,9 +4574,10 @@ bool TVRec::GetProgramRingBufferForLiveTV(RecordingInfo **pginfo, } } - int hoursMax = gCoreContext->GetNumSetting("MaxHoursPerLiveTVRecording", 8); - if (hoursMax <= 0) - hoursMax = 8; + auto hoursMax = + gCoreContext->GetDurSetting("MaxHoursPerLiveTVRecording", 8h); + if (hoursMax <= 0h) + hoursMax = 8h; RecordingInfo *prog = nullptr; if (m_pseudoLiveTVRecording) diff --git a/mythtv/libs/libmythtv/tv_rec.h b/mythtv/libs/libmythtv/tv_rec.h index 52ab0f56d5b..9d2975d780e 100644 --- a/mythtv/libs/libmythtv/tv_rec.h +++ b/mythtv/libs/libmythtv/tv_rec.h @@ -359,11 +359,11 @@ class MTV_PUBLIC TVRec : public SignalMonitorListener, public QRunnable bool m_transcodeFirst {false}; bool m_earlyCommFlag {false}; bool m_runJobOnHostOnly {false}; - int m_eitCrawlIdleStart {60}; - int m_eitTransportTimeout {5*60}; + std::chrono::seconds m_eitCrawlIdleStart {1min}; + std::chrono::seconds m_eitTransportTimeout {5min}; int m_audioSampleRateDB {0}; - int m_overRecordSecNrml {0}; - int m_overRecordSecCat {0}; + std::chrono::seconds m_overRecordSecNrml {0s}; + std::chrono::seconds m_overRecordSecCat {0s}; QString m_overRecordCategory; // Configuration variables from setup routines diff --git a/mythtv/programs/mythbackend/scheduler.cpp b/mythtv/programs/mythbackend/scheduler.cpp index ec84e2c8e56..1f7cdf141f1 100644 --- a/mythtv/programs/mythbackend/scheduler.cpp +++ b/mythtv/programs/mythbackend/scheduler.cpp @@ -3103,7 +3103,7 @@ void Scheduler::HandleIdleShutdown( return; // If there are active jobs, then we're not idle - bool activeJobs = JobQueue::HasRunningOrPendingJobs(0); + bool activeJobs = JobQueue::HasRunningOrPendingJobs(0min); if (!blocking && !recording && !activeJobs && !delay) { @@ -5613,7 +5613,7 @@ void Scheduler::SchedLiveTV(void) // Get the program that will be recording on this channel at // record start time and assume this LiveTV session continues // for at least another 30 minutes from now. - auto *dummy = new RecordingInfo(in.m_chanId, m_livetvTime, true, 4); + auto *dummy = new RecordingInfo(in.m_chanId, m_livetvTime, true, 4h); dummy->SetRecordingStartTime(m_schedTime); if (m_schedTime.secsTo(dummy->GetRecordingEndTime()) < 1800) dummy->SetRecordingEndTime(m_schedTime.addSecs(1800)); diff --git a/mythtv/programs/mythbackend/services/dvr.cpp b/mythtv/programs/mythbackend/services/dvr.cpp index 7999f262acd..b40f59f1f60 100644 --- a/mythtv/programs/mythbackend/services/dvr.cpp +++ b/mythtv/programs/mythbackend/services/dvr.cpp @@ -1546,7 +1546,7 @@ DTC::RecRule* Dvr::GetRecordSchedule( uint nRecordId, // Despite the use of RecordingInfo, this only applies to programs in the // present or future, not to recordings? Confused yet? RecordingInfo::LoadStatus status = RecordingInfo::kNoProgram; - RecordingInfo info(nChanId, dStartTime, false, 0, &status); + RecordingInfo info(nChanId, dStartTime, false, 0h, &status); if (status != RecordingInfo::kFoundProgram) throw QString("Program does not exist."); RecordingRule *pRule = info.GetRecordingRule(); diff --git a/mythtv/programs/mythshutdown/main.cpp b/mythtv/programs/mythshutdown/main.cpp index 3f45d45ee94..4cc01766653 100644 --- a/mythtv/programs/mythshutdown/main.cpp +++ b/mythtv/programs/mythshutdown/main.cpp @@ -277,7 +277,7 @@ static int getStatus(bool bWantRecStatus) res |= 16; } - if (JobQueue::HasRunningOrPendingJobs(15)) + if (JobQueue::HasRunningOrPendingJobs(15min)) { LOG(VB_STDIO|VB_FLUSH, LOG_ERR, QObject::tr("Has queued or pending jobs", "mythshutdown") + "\n");