From bb94419e095defbe0c8c1297708b2b66f5b1ee44 Mon Sep 17 00:00:00 2001 From: Denis Loh Date: Tue, 27 Oct 2009 20:46:39 +0100 Subject: Hopefully improved compatibility with DLNA devices --- receiver/livereceiver.cpp | 10 +++++++++- receiver/livereceiver.h | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'receiver') 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 #include +#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); -- cgit v1.2.3