diff options
Diffstat (limited to 'receiver')
-rw-r--r-- | receiver/livereceiver.cpp | 7 | ||||
-rw-r--r-- | receiver/livereceiver.h | 3 |
2 files changed, 6 insertions, 4 deletions
diff --git a/receiver/livereceiver.cpp b/receiver/livereceiver.cpp index 9ba69eb..189f4a4 100644 --- a/receiver/livereceiver.cpp +++ b/receiver/livereceiver.cpp @@ -129,9 +129,10 @@ int cLiveReceiver::read(char* buf, size_t buflen){ if(!this->IsAttached()) bytesRead = -1; else { - int WaitTimeout = RECEIVER_WAIT_ON_NODATA_TIMEOUT; // 10 Seconds timeout with no data - while(!this->mOutputBuffer->Available()){ - WARNING("No data, waiting..."); + int WaitTimeout = RECEIVER_WAIT_ON_NODATA_TIMEOUT; + // Wait until the buffer size is at least half the requested buffer length + while((unsigned)this->mOutputBuffer->Available() < (buflen / 2) ){ + WARNING("Too few data, waiting..."); cCondWait::SleepMs(RECEIVER_WAIT_ON_NODATA); if(!this->IsAttached()){ MESSAGE("Lost device..."); diff --git a/receiver/livereceiver.h b/receiver/livereceiver.h index 9da8923..6b04619 100644 --- a/receiver/livereceiver.h +++ b/receiver/livereceiver.h @@ -12,9 +12,10 @@ #include "filehandle.h" #include <vdr/thread.h> #include <vdr/receiver.h> +#include <vdr/ringbuffer.h> #define RECEIVER_WAIT_ON_NODATA 50 // 50 ms -#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 10 // 10s +#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 2 // 2s class cLiveReceiver : public cReceiver, public cThread, public cFileHandle { public: |