git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove unneeded code in channel cache handling
[enigma2.git]
/
lib
/
dvb
/
dvb.cpp
diff --git
a/lib/dvb/dvb.cpp
b/lib/dvb/dvb.cpp
index 8b442e3d28cf70d3d05bd90095f5c7964d79a083..93065074846981f95b9c0bf93d73ea1fecfa44aa 100644
(file)
--- a/
lib/dvb/dvb.cpp
+++ b/
lib/dvb/dvb.cpp
@@
-310,7
+310,9
@@
RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse
channel = m_cached_channel;
return 0;
}
channel = m_cached_channel;
return 0;
}
+ m_cached_channel_state_changed_conn.disconnect();
m_cached_channel=0;
m_cached_channel=0;
+ m_releaseCachedChannelTimer.stop();
}
// eDebug("allocate channel.. %04x:%04x", channelid.transport_stream_id.get(), channelid.original_network_id.get());
}
// eDebug("allocate channel.. %04x:%04x", channelid.transport_stream_id.get(), channelid.original_network_id.get());
@@
-358,7
+360,8
@@
RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, eUse
return errChidNotFound;
}
m_cached_channel = channel = ch;
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;
}
return 0;
}
@@
-369,6
+372,7
@@
void eDVBResourceManager::DVBChannelStateChanged(iDVBChannel *chan)
chan->getState(state);
switch (state)
{
chan->getState(state);
switch (state)
{
+ case iDVBChannel::state_release:
case iDVBChannel::state_ok:
{
eDebug("stop release channel timer");
case iDVBChannel::state_ok:
{
eDebug("stop release channel timer");
@@
-388,7
+392,7
@@
void eDVBResourceManager::DVBChannelStateChanged(iDVBChannel *chan)
void eDVBResourceManager::releaseCachedChannel()
{
void eDVBResourceManager::releaseCachedChannel()
{
- eDebug("release cached channel");
+ eDebug("release cached channel
(timer timeout)
");
m_cached_channel=0;
}
m_cached_channel=0;
}
@@
-397,7
+401,11
@@
RESULT eDVBResourceManager::allocateRawChannel(eUsePtr<iDVBChannel> &channel, in
ePtr<eDVBAllocatedFrontend> fe;
if (m_cached_channel)
ePtr<eDVBAllocatedFrontend> fe;
if (m_cached_channel)
+ {
+ m_cached_channel_state_changed_conn.disconnect();
m_cached_channel=0;
m_cached_channel=0;
+ m_releaseCachedChannelTimer.stop();
+ }
if (allocateFrontendByIndex(fe, frontend_index))
return errNoFrontend;
if (allocateFrontendByIndex(fe, frontend_index))
return errNoFrontend;
@@
-414,9
+422,6
@@
RESULT eDVBResourceManager::allocatePVRChannel(eUsePtr<iDVBPVRChannel> &channel)
{
ePtr<eDVBAllocatedDemux> demux;
{
ePtr<eDVBAllocatedDemux> demux;
- if (m_cached_channel)
- m_cached_channel=0;
-
eDVBChannel *ch;
ch = new eDVBChannel(this, 0);
eDVBChannel *ch;
ch = new eDVBChannel(this, 0);
@@
-814,7
+819,10
@@
void eDVBChannel::getNextSourceSpan(off_t current_offset, size_t bytes_read, off
void eDVBChannel::AddUse()
{
if (++m_use_count > 1 && m_state == state_last_instance)
void eDVBChannel::AddUse()
{
if (++m_use_count > 1 && m_state == state_last_instance)
+ {
m_state = state_ok;
m_state = state_ok;
+ m_stateChanged(this);
+ }
}
void eDVBChannel::ReleaseUse()
}
void eDVBChannel::ReleaseUse()