summaryrefslogtreecommitdiff
path: root/server/connectionIGMP.h
diff options
context:
space:
mode:
authorFrank Schmirler <vdr@schmirler.de>2011-10-18 08:50:54 +0200
committerFrank Schmirler <vdr@schmirler.de>2011-10-18 08:50:54 +0200
commit615f101b9dce6ae4a2b7b02866176a413e47169f (patch)
treec0bb6929e51b0d1c6e00274e0ffdbe0888dd88ee /server/connectionIGMP.h
parent2fae067cfef6f930415e8b3d4c4713b5de91b1eb (diff)
downloadvdr-plugin-streamdev-615f101b9dce6ae4a2b7b02866176a413e47169f.tar.gz
vdr-plugin-streamdev-615f101b9dce6ae4a2b7b02866176a413e47169f.tar.bz2
fixed regression of "live TV must be switched in VDR main thread" change:
deadlock in IGMP streaming server when switching live TV. Previously cComponentIGMP::Accept did all the work including the channel switch with the new cConnectionIGMP waiting for MainThreadHook. But as the new connection is stored *after* Accept, MainThreadHook didn't see it and so wasn't able to switch. The streamdev main thread waited forever. Moved the main work into cComponentIGMP::Welcome.
Diffstat (limited to 'server/connectionIGMP.h')
-rw-r--r--server/connectionIGMP.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/server/connectionIGMP.h b/server/connectionIGMP.h
index 90abd58..facda65 100644
--- a/server/connectionIGMP.h
+++ b/server/connectionIGMP.h
@@ -20,12 +20,14 @@ private:
cStreamdevLiveStreamer *m_LiveStreamer;
int m_ClientPort;
eStreamType m_StreamType;
+ cChannel *m_Channel;
public:
cConnectionIGMP(const char* Name, int ClientPort, eStreamType StreamType);
virtual ~cConnectionIGMP();
- bool Start(cChannel *Channel, in_addr_t Dst);
+ bool SetChannel(cChannel *Channel, in_addr_t Dst);
+ virtual void Welcome(void);
void Stop();
/* Not used here */