summaryrefslogtreecommitdiff
path: root/receiver
diff options
context:
space:
mode:
authorDenis Loh <denis.loh@gmail.com>2009-10-27 20:46:39 +0100
committerDenis Loh <denis.loh@gmail.com>2009-10-27 20:46:39 +0100
commitbb94419e095defbe0c8c1297708b2b66f5b1ee44 (patch)
tree7fe9cf8a96b1e0b32bbd9446c6ce81ca51ec0566 /receiver
parentc672d0018e24161434e63400f7dc23999d3f9c8a (diff)
downloadvdr-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.cpp10
-rw-r--r--receiver/livereceiver.h3
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);