diff --git a/mythtv/libs/libmythtv/eitscanner.cpp b/mythtv/libs/libmythtv/eitscanner.cpp
index 6135e08..660cdc4 100644
a
|
b
|
void EITScanner::run(void) |
147 | 147 | // 24 hours ago |
148 | 148 | eitHelper->PruneEITCache(activeScanNextTrig.toTime_t() - 86400); |
149 | 149 | } |
| 150 | if (!activeScan) |
| 151 | activeScanStopped = true; |
150 | 152 | |
151 | 153 | lock.lock(); |
152 | 154 | if (!exitThread) |
153 | 155 | exitThreadCond.wait(&lock, 400); // sleep up to 400 ms. |
| 156 | |
| 157 | if (!activeScan) |
| 158 | activeScanStopped = true; |
154 | 159 | } |
155 | 160 | lock.unlock(); |
| 161 | activeScanStopped = true; |
156 | 162 | } |
157 | 163 | |
158 | 164 | /** \fn EITScanner::RescheduleRecordings(void) |
… |
… |
void EITScanner::StartActiveScan(TVRec *_rec, uint max_seconds_per_source) |
271 | 277 | // Add a little randomness to trigger time so multiple |
272 | 278 | // cards will have a staggered channel changing time. |
273 | 279 | activeScanTrigTime += random() % 29; |
| 280 | activeScanStopped = false; |
274 | 281 | activeScan = true; |
275 | 282 | } |
276 | 283 | } |
277 | 284 | |
278 | | void EITScanner::StopActiveScan() |
| 285 | void EITScanner::StopActiveScan(void) |
279 | 286 | { |
| 287 | activeScanStopped = false; |
280 | 288 | activeScan = false; |
281 | | rec = NULL; |
| 289 | |
| 290 | lock.lock(); |
| 291 | exitThreadCond.wakeAll(); |
| 292 | lock.unlock(); |
| 293 | |
282 | 294 | StopPassiveScan(); |
| 295 | while (!activeScanStopped) |
| 296 | usleep(10000); |
| 297 | |
| 298 | rec = NULL; |
283 | 299 | } |
diff --git a/mythtv/libs/libmythtv/eitscanner.h b/mythtv/libs/libmythtv/eitscanner.h
index 36dd4d9..af4f1e5 100644
a
|
b
|
class EITScanner : public QRunnable |
58 | 58 | QWaitCondition exitThreadCond; |
59 | 59 | |
60 | 60 | TVRec *rec; |
61 | | bool activeScan; |
| 61 | volatile bool activeScan; |
| 62 | volatile bool activeScanStopped; |
62 | 63 | QDateTime activeScanNextTrig; |
63 | 64 | uint activeScanTrigTime; |
64 | 65 | QStringList activeScanChannels; |