2022-11-14 Fred Gleason <fredg@paravelsystems.com>

* Fixed a race condition with calculating the effect start time
	of events in rdcatchd(8).

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2022-11-14 14:54:17 -05:00
parent f6bf97cb94
commit b94dee3e64
2 changed files with 10 additions and 7 deletions

View File

@@ -23666,3 +23666,6 @@
2022-11-14 Fred Gleason <fredg@paravelsystems.com> 2022-11-14 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression in rdcatch(1) that caused the 'Edit Recording' * Fixed a regression in rdcatch(1) that caused the 'Edit Recording'
dialog to load an incorrect value for the 'Source:' control. dialog to load an incorrect value for the 'Source:' control.
2022-11-14 Fred Gleason <fredg@paravelsystems.com>
* Fixed a race condition with calculating the effect start time
of events in rdcatchd(8).

View File

@@ -553,10 +553,9 @@ void MainObject::engineData(int id)
int event=GetEvent(id); int event=GetEvent(id);
// //
// Generate Effective Date // Generate Effective Date/Time
// //
QDate date=QDate::currentDate(); QDateTime now=QDateTime::currentDateTime();
QTime current_time=QTime::currentTime();
// //
// Ignore inactive or non-existent events // Ignore inactive or non-existent events
@@ -569,7 +568,7 @@ void MainObject::engineData(int id)
rda->syslog(LOG_DEBUG,"event %d is marked inactive, ignoring",id); rda->syslog(LOG_DEBUG,"event %d is marked inactive, ignoring",id);
return; return;
} }
if(!catch_events[event].dayOfWeek(date.dayOfWeek())) { if(!catch_events[event].dayOfWeek(now.date().dayOfWeek())) {
rda->syslog(LOG_DEBUG,"event %d is not valid for this DOW, ignoring",id); rda->syslog(LOG_DEBUG,"event %d is not valid for this DOW, ignoring",id);
return; return;
} }
@@ -659,7 +658,7 @@ void MainObject::engineData(int id)
case RDRecording::GpiStart: case RDRecording::GpiStart:
catch_events[event].gpiStartTimer()-> catch_events[event].gpiStartTimer()->
start(catch_events[event].startLength()- start(catch_events[event].startLength()-
(QTime(0,0,0).msecsTo(current_time)- (QTime(0,0,0).msecsTo(now.time())-
QTime(0,0,0).msecsTo(catch_events[event].startTime()))); QTime(0,0,0).msecsTo(catch_events[event].startTime())));
catch_record_deck_status[catch_events[event].channel()-1]= catch_record_deck_status[catch_events[event].channel()-1]=
RDDeck::Waiting; RDDeck::Waiting;
@@ -771,8 +770,9 @@ void MainObject::engineData(int id)
delete q; delete q;
catch_events[event]. catch_events[event].
setResolvedUrl(RDDateTimeDecode(catch_events[event].url(), setResolvedUrl(RDDateTimeDecode(catch_events[event].url(),
QDateTime(date.addDays(catch_events[event].eventdateOffset()), QDateTime(now.date().
current_time),rda->station(),RDConfiguration())); addDays(catch_events[event].eventdateOffset()),
now.time()),rda->station(),RDConfiguration()));
StartDownloadEvent(event); StartDownloadEvent(event);
break; break;