summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorFrank Schmirler <vdr@schmirler.de>2014-06-23 23:30:55 +0200
committerFrank Schmirler <vdr@schmirler.de>2014-06-23 23:30:55 +0200
commit888cf0a2f81d3c3180fc4ed2f63dc992aac42f39 (patch)
treee4b3fd09b4cf52f58cdf95908b97c472c831d4c4 /server
parent1dc142342943b9ee90cebca96251f89707b36507 (diff)
downloadvdr-plugin-streamdev-888cf0a2f81d3c3180fc4ed2f63dc992aac42f39.tar.gz
vdr-plugin-streamdev-888cf0a2f81d3c3180fc4ed2f63dc992aac42f39.tar.bz2
Try changing to other device when receiver got detached
Diffstat (limited to 'server')
-rw-r--r--server/livestreamer.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/server/livestreamer.c b/server/livestreamer.c
index c939e1e..e33c60d 100644
--- a/server/livestreamer.c
+++ b/server/livestreamer.c
@@ -671,6 +671,18 @@ bool cStreamdevLiveStreamer::ProvidesChannel(const cChannel *Channel, int Priori
void cStreamdevLiveStreamer::MainThreadHook()
{
+ if (!m_SwitchLive && Running() && m_Device && !m_Device->IsTunedToTransponder(m_Channel) && !IsReceiving()) {
+ cDevice *dev = SwitchDevice(m_Channel, m_Priority);
+ if (dev) {
+ dsyslog("streamdev: Lost channel %d (%s) on device %d. Continuing on device %d.", m_Channel->Number(), m_Channel->Name(), m_Device->CardIndex(), dev->CardIndex());
+ m_Device = dev;
+ StartReceiver();
+ }
+ else {
+ isyslog("streamdev: Lost channel %d (%s) on device %d.", m_Channel->Number(), m_Channel->Name(), m_Device->CardIndex());
+ Stop();
+ }
+ }
if (m_SwitchLive) {
// switched away live TV. Try previous channel on other device first
if (!Channels.SwitchTo(cDevice::CurrentChannel())) {