diff options
author | Frank Schmirler <vdr@schmirler.de> | 2011-10-18 08:50:54 +0200 |
---|---|---|
committer | Frank Schmirler <vdr@schmirler.de> | 2011-10-18 08:50:54 +0200 |
commit | 615f101b9dce6ae4a2b7b02866176a413e47169f (patch) | |
tree | c0bb6929e51b0d1c6e00274e0ffdbe0888dd88ee /server/connectionIGMP.h | |
parent | 2fae067cfef6f930415e8b3d4c4713b5de91b1eb (diff) | |
download | vdr-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.h | 4 |
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 */ |