diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-02-03 23:05:05 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-02-03 23:05:05 +0000 |
| commit | 44e0351dc04a1f4194424eadb75ea0ef68b15628 (patch) | |
| tree | 9fddc0cf549217d32950edfd1277f9af6ca6bd87 /lib/dvb/dvb.cpp | |
| parent | 72340ff944f651577e6175f030ab2f761e971ee6 (diff) | |
| download | enigma2-44e0351dc04a1f4194424eadb75ea0ef68b15628.tar.gz enigma2-44e0351dc04a1f4194424eadb75ea0ef68b15628.zip | |
fix cached channel handling
Diffstat (limited to 'lib/dvb/dvb.cpp')
| -rw-r--r-- | lib/dvb/dvb.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 8f4022ec..f2469365 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -310,6 +310,7 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse channel = m_cached_channel; return 0; } + m_cached_channel_state_changed_conn.disconnect(); m_cached_channel=0; } @@ -358,7 +359,8 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse return errChidNotFound; } m_cached_channel = channel = ch; - CONNECT(ch->m_stateChanged,eDVBResourceManager::DVBChannelStateChanged); + m_cached_channel_state_changed_conn = + CONNECT(ch->m_stateChanged,eDVBResourceManager::DVBChannelStateChanged); return 0; } @@ -390,6 +392,7 @@ void eDVBResourceManager::DVBChannelStateChanged(iDVBChannel *chan) void eDVBResourceManager::releaseCachedChannel() { eDebug("release cached channel"); + m_cached_channel_state_changed_conn.disconnect(); m_cached_channel=0; } @@ -398,7 +401,10 @@ RESULT eDVBResourceManager::allocateRawChannel(eUsePtr<iDVBChannel> &channel, in ePtr<eDVBAllocatedFrontend> fe; if (m_cached_channel) + { + m_cached_channel_state_changed_conn.disconnect(); m_cached_channel=0; + } if (allocateFrontendByIndex(fe, frontend_index)) return errNoFrontend; @@ -416,7 +422,10 @@ RESULT eDVBResourceManager::allocatePVRChannel(eUsePtr<iDVBPVRChannel> &channel) ePtr<eDVBAllocatedDemux> demux; if (m_cached_channel) + { + m_cached_channel_state_changed_conn.disconnect(); m_cached_channel=0; + } eDVBChannel *ch; ch = new eDVBChannel(this, 0); |
