diff --git a/mythtv/libs/libmythtv/eitscanner.cpp b/mythtv/libs/libmythtv/eitscanner.cpp
index 6135e08..80041d5 100644
|
a
|
b
|
void EITScanner::run(void)
|
| 75 | 75 | static const float rt[] = { 0.0f, 0.2f, 0.4f, 0.6f, 0.8f, }; |
| 76 | 76 | |
| 77 | 77 | lock.lock(); |
| 78 | | exitThread = false; |
| 79 | 78 | |
| 80 | 79 | MythTimer t; |
| 81 | 80 | uint eitCount = 0; |
| … |
… |
void EITScanner::run(void)
|
| 149 | 148 | } |
| 150 | 149 | |
| 151 | 150 | lock.lock(); |
| 152 | | if (!exitThread) |
| | 151 | if ((activeScan || activeScanStopped) && !exitThread) |
| 153 | 152 | exitThreadCond.wait(&lock, 400); // sleep up to 400 ms. |
| | 153 | |
| | 154 | if (!activeScan && !activeScanStopped) |
| | 155 | { |
| | 156 | activeScanStopped = true; |
| | 157 | activeScanCond.wakeAll(); |
| | 158 | } |
| 154 | 159 | } |
| | 160 | activeScanStopped = true; |
| | 161 | activeScanCond.wakeAll(); |
| 155 | 162 | lock.unlock(); |
| 156 | 163 | } |
| 157 | 164 | |
| … |
… |
void EITScanner::StartActiveScan(TVRec *_rec, uint max_seconds_per_source)
|
| 271 | 278 | // Add a little randomness to trigger time so multiple |
| 272 | 279 | // cards will have a staggered channel changing time. |
| 273 | 280 | activeScanTrigTime += random() % 29; |
| | 281 | activeScanStopped = false; |
| 274 | 282 | activeScan = true; |
| 275 | 283 | } |
| 276 | 284 | } |
| 277 | 285 | |
| 278 | | void EITScanner::StopActiveScan() |
| | 286 | void EITScanner::StopActiveScan(void) |
| 279 | 287 | { |
| | 288 | QMutexLocker locker(&lock); |
| | 289 | |
| | 290 | activeScanStopped = false; |
| 280 | 291 | activeScan = false; |
| 281 | | rec = NULL; |
| | 292 | exitThreadCond.wakeAll(); |
| | 293 | |
| | 294 | locker.unlock(); |
| 282 | 295 | StopPassiveScan(); |
| | 296 | locker.relock(); |
| | 297 | |
| | 298 | while (!activeScan && !activeScanStopped) |
| | 299 | activeScanCond.wait(&lock, 100); |
| | 300 | |
| | 301 | rec = NULL; |
| 283 | 302 | } |
diff --git a/mythtv/libs/libmythtv/eitscanner.h b/mythtv/libs/libmythtv/eitscanner.h
index 36dd4d9..3351aae 100644
|
a
|
b
|
class EITScanner : public QRunnable
|
| 54 | 54 | |
| 55 | 55 | EITHelper *eitHelper; |
| 56 | 56 | MThread *eventThread; |
| 57 | | bool exitThread; |
| 58 | | QWaitCondition exitThreadCond; |
| | 57 | volatile bool exitThread; |
| | 58 | QWaitCondition exitThreadCond; // protected by lock |
| 59 | 59 | |
| 60 | 60 | TVRec *rec; |
| 61 | | bool activeScan; |
| | 61 | volatile bool activeScan; |
| | 62 | volatile bool activeScanStopped; // protected by lock |
| | 63 | QWaitCondition activeScanCond; // protected by lock |
| 62 | 64 | QDateTime activeScanNextTrig; |
| 63 | 65 | uint activeScanTrigTime; |
| 64 | 66 | QStringList activeScanChannels; |