diff options
author | Denis Loh <denis.loh@gmail.com> | 2009-10-27 20:46:39 +0100 |
---|---|---|
committer | Denis Loh <denis.loh@gmail.com> | 2009-10-27 20:46:39 +0100 |
commit | bb94419e095defbe0c8c1297708b2b66f5b1ee44 (patch) | |
tree | 7fe9cf8a96b1e0b32bbd9446c6ce81ca51ec0566 /receiver | |
parent | c672d0018e24161434e63400f7dc23999d3f9c8a (diff) | |
download | vdr-plugin-upnp-bb94419e095defbe0c8c1297708b2b66f5b1ee44.tar.gz vdr-plugin-upnp-bb94419e095defbe0c8c1297708b2b66f5b1ee44.tar.bz2 |
Hopefully improved compatibility with DLNA devices
Diffstat (limited to 'receiver')
-rw-r--r-- | receiver/livereceiver.cpp | 10 | ||||
-rw-r--r-- | receiver/livereceiver.h | 3 |
2 files changed, 12 insertions, 1 deletions
diff --git a/receiver/livereceiver.cpp b/receiver/livereceiver.cpp index 593853f..9ba69eb 100644 --- a/receiver/livereceiver.cpp +++ b/receiver/livereceiver.cpp @@ -129,13 +129,21 @@ 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..."); - cCondWait::SleepMs(50); + cCondWait::SleepMs(RECEIVER_WAIT_ON_NODATA); if(!this->IsAttached()){ MESSAGE("Lost device..."); return 0; } + WaitTimeout-=RECEIVER_WAIT_ON_NODATA; + if(WaitTimeout<=0){ + double seconds = (RECEIVER_WAIT_ON_NODATA_TIMEOUT/1000); + ERROR("No data received for %4.2f seconds, aborting.", seconds); + this->Activate(false); + return 0; + } } uchar* buffer = this->mOutputBuffer->Get(bytesRead); diff --git a/receiver/livereceiver.h b/receiver/livereceiver.h index 4632733..9da8923 100644 --- a/receiver/livereceiver.h +++ b/receiver/livereceiver.h @@ -13,6 +13,9 @@ #include <vdr/thread.h> #include <vdr/receiver.h> +#define RECEIVER_WAIT_ON_NODATA 50 // 50 ms +#define RECEIVER_WAIT_ON_NODATA_TIMEOUT 1000 * 10 // 10s + class cLiveReceiver : public cReceiver, public cThread, public cFileHandle { public: static cLiveReceiver* newInstance(cChannel *Channel, int Priority); |