channel = m_cached_channel;
return 0;
}
+ m_cached_channel_state_changed_conn.disconnect();
m_cached_channel=0;
}
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;
}
void eDVBResourceManager::releaseCachedChannel()
{
eDebug("release cached channel");
+ m_cached_channel_state_changed_conn.disconnect();
m_cached_channel=0;
}
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;
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);
bool canAllocateFrontend(ePtr<iDVBFrontendParameters> &feparm);
eUsePtr<iDVBChannel> m_cached_channel;
+ Connection m_cached_channel_state_changed_conn;
eTimer m_releaseCachedChannelTimer;
void DVBChannelStateChanged(iDVBChannel*);
void releaseCachedChannel();