aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/dvb.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-02-03 23:05:05 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-02-03 23:05:05 +0000
commit44e0351dc04a1f4194424eadb75ea0ef68b15628 (patch)
tree9fddc0cf549217d32950edfd1277f9af6ca6bd87 /lib/dvb/dvb.cpp
parent72340ff944f651577e6175f030ab2f761e971ee6 (diff)
downloadenigma2-44e0351dc04a1f4194424eadb75ea0ef68b15628.tar.gz
enigma2-44e0351dc04a1f4194424eadb75ea0ef68b15628.zip
fix cached channel handling
Diffstat (limited to 'lib/dvb/dvb.cpp')
-rw-r--r--lib/dvb/dvb.cpp11
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);