Ticket #1153: ringBufferSwitchRaceConditionFix.diff
File ringBufferSwitchRaceConditionFix.diff, 2.7 KB (added by , 18 years ago) |
---|
-
libs/libmythtv/recorderbase.cpp
197 197 198 198 if (nextRingBuffer) 199 199 { 200 VERBOSE(VB_RECORD, LOC + "CheckForRingBufferSwitch() - Switching Ring-Buffer"); 201 200 202 FinishRecording(); 201 203 ResetForNewFile(); 202 204 -
libs/libmythtv/tv_rec.cpp
136 136 // tvchain 137 137 tvchain(NULL), 138 138 // RingBuffer info 139 ringBuffer(NULL), rbFilePrefix(""), rbFileExt("mpg") 139 ringBuffer(NULL), 140 ringBufferSwitchInProgress(false), 141 rbFilePrefix(""), rbFileExt("mpg") 140 142 { 141 143 } 142 144 … … 1333 1335 <<"!has_rec("<<!has_rec<<") " 1334 1336 <<"!rec_soon("<<!rec_soon<<") " 1335 1337 <<"curRec("<<curRecording<<") " 1336 <<"starttm("<<starttime.toString(Qt::ISODate)<<")"); 1338 <<"starttm("<<starttime.toString(Qt::ISODate)<<")" 1339 <<"now(" << now.toString(Qt::ISODate)<<")" 1340 <<"curRecording->endts(" << curRecording->endts.toString(Qt::ISODate)<<")"); 1337 1341 // last = QDateTime::currentDateTime().addSecs(20); 1338 1342 } 1339 1343 else … … 3088 3092 curRecording = new ProgramInfo(*pginfo); 3089 3093 curRecording->MarkAsInUse(true, "recorder"); 3090 3094 } 3095 ringBufferSwitchInProgress = false; 3091 3096 } 3092 3097 3093 3098 QString TVRec::TuningGetChanNum(const TuningRequest &request, … … 4089 4094 bool TVRec::SwitchLiveTVRingBuffer(bool discont, bool set_rec) 4090 4095 { 4091 4096 VERBOSE(VB_RECORD, LOC + "SwitchLiveTVRingBuffer(discont " 4092 <<discont<<", set_rec "<<set_rec<<") ");4097 <<discont<<", set_rec "<<set_rec<<") - ringBufferSwitchInProgress(" << ringBufferSwitchInProgress << ")"); 4093 4098 4099 if (set_rec && ringBufferSwitchInProgress) 4100 { 4101 /* The ring-buffer is already being switched */ 4102 return false; 4103 } 4104 else if (set_rec && !ringBufferSwitchInProgress) 4105 { 4106 ringBufferSwitchInProgress = true; 4107 } 4108 4094 4109 ProgramInfo *pginfo = NULL; 4095 4110 RingBuffer *rb = NULL; 4096 4111 -
libs/libmythtv/tv_rec.h
366 366 367 367 // RingBuffer info 368 368 RingBuffer *ringBuffer; 369 bool ringBufferSwitchInProgress; 369 370 QString rbFilePrefix; 370 371 QString rbFileExt; 371 372