diff -uNr a/mythtv/libs/libmythtv/DeviceReadBuffer.cpp b/mythtv/libs/libmythtv/DeviceReadBuffer.cpp
a
|
b
|
|
156 | 156 | void DeviceReadBuffer::SetPaused(bool val) |
157 | 157 | { |
158 | 158 | QMutexLocker locker(&lock); |
159 | | paused = val; |
| 159 | paused.fetchAndStoreOrdered(val); |
160 | 160 | if (val) |
161 | 161 | pauseWait.wakeAll(); |
162 | 162 | else |
… |
… |
|
165 | 165 | |
166 | 166 | bool DeviceReadBuffer::IsPaused(void) const |
167 | 167 | { |
168 | | QMutexLocker locker(&lock); |
169 | 168 | return paused; |
170 | 169 | } |
171 | 170 | |
… |
… |
|
332 | 331 | return false; |
333 | 332 | #else |
334 | 333 | bool retval = true; |
| 334 | |
| 335 | unsigned int elapsed = 0; |
| 336 | unsigned int timeout = 2500 /* ms */; |
335 | 337 | MythTimer timer; |
336 | 338 | timer.start(); |
337 | 339 | |
… |
… |
|
371 | 373 | } |
372 | 374 | else // ret == 0 |
373 | 375 | { |
374 | | if (timer.elapsed() > 2500 /*ms*/) |
| 376 | elapsed += timer.restart(); |
| 377 | if (elapsed > timeout) |
375 | 378 | { |
376 | | VERBOSE(VB_RECORD, LOC_ERR + "Poll giving up"); |
377 | | QMutexLocker locker(&lock); |
378 | | error = true; |
379 | | return true; |
| 379 | timeout = elapsed + 5000 /* ms */; |
| 380 | |
| 381 | VERBOSE(VB_RECORD, LOC_ERR + QString("No data seen for %1 msecs.") |
| 382 | .arg(elapsed)); |
380 | 383 | } |
381 | 384 | } |
382 | 385 | } |
diff -uNr a/mythtv/libs/libmythtv/DeviceReadBuffer.h b/mythtv/libs/libmythtv/DeviceReadBuffer.h
a
|
b
|
|
11 | 11 | #include <qwaitcondition.h> |
12 | 12 | #include <qstring.h> |
13 | 13 | |
| 14 | #include <QAtomicInt> |
| 15 | |
14 | 16 | #include "util.h" |
15 | 17 | |
16 | 18 | class ReaderPausedCB |
… |
… |
|
86 | 88 | bool eof; |
87 | 89 | mutable bool error; |
88 | 90 | bool request_pause; |
89 | | bool paused; |
| 91 | QAtomicInt paused; |
90 | 92 | bool using_poll; |
91 | 93 | |
92 | 94 | size_t size; |