diff options
author | Denis Loh <denis.loh@gmail.com> | 2009-10-29 16:40:29 +0100 |
---|---|---|
committer | Denis Loh <denis.loh@gmail.com> | 2009-10-29 16:40:29 +0100 |
commit | 5057fe1ea036ba681ee232a19392751633322760 (patch) | |
tree | 9f28323fd073f8518e90df5148c8737b2ee3017e /receiver | |
parent | a0ea012e9f0a6535695ab1c6efb6cb700d4b57ef (diff) | |
download | vdr-plugin-upnp-5057fe1ea036ba681ee232a19392751633322760.tar.gz vdr-plugin-upnp-5057fe1ea036ba681ee232a19392751633322760.tar.bz2 |
Closed bug with ' and database\nimproved LiveTV receiver
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: |