{
eDebug("[eEPGCache] remove channel %p", chan);
messages.send(Message(Message::leaveChannel, chan));
- while(!it->second->can_delete)
+ while(!it->second->canDelete())
usleep(1000);
delete it->second;
m_knownChannels.erase(it);
eEPGCache::channel_data::channel_data(eEPGCache *ml)
:cache(ml)
,abortTimer(ml), zapTimer(ml),state(0)
- ,isRunning(0), haveData(0), can_delete(1)
+ ,isRunning(0), haveData(0)
,startPrivateTimer(ml)
{
CONNECT(zapTimer.timeout, eEPGCache::channel_data::startEPG);
}
singleLock l(cache->cache_lock);
cache->channelLastUpdated[channel->getChannelID()] = eDVBLocalTimeHandler::getInstance()->nowTime();
-#ifdef ENABLE_PRIVATE_EPG
- if (seenPrivateSections.empty())
-#endif
- can_delete=1;
return true;
}
return false;
eDebug("[EPGC] start caching events(%ld)", eDVBLocalTimeHandler::getInstance()->nowTime());
state=0;
haveData=0;
- can_delete=0;
for (int i=0; i < 3; ++i)
{
seenSections[i].clear();
seenSections[i].clear();
calcedSections[i].clear();
}
-#ifdef ENABLE_PRIVATE_EPG
- if (seenPrivateSections.empty())
-#endif
- can_delete=1;
}
}
++state;
if (m_PrivateConn)
m_PrivateConn=0;
#endif
- can_delete=1;
}
void eEPGCache::channel_data::readData( const __u8 *data)
mask.mode[3] = 0x3E;
}
seenPrivateSections.clear();
- m_PrivateReader->connectRead(slot(*this, &eEPGCache::channel_data::readPrivateData), m_PrivateConn);
+ if (!m_PrivateConn)
+ m_PrivateReader->connectRead(slot(*this, &eEPGCache::channel_data::readPrivateData), m_PrivateConn);
m_PrivateReader->start(mask);
}
{
if ( seenPrivateSections.find( data[6] ) == seenPrivateSections.end() )
{
-#ifdef NEED_DEMUX_WORKAROUND
- int version = data[5];
- version = ((version & 0x3E) >> 1);
- can_delete = 0;
- if ( m_PrevVersion != version )
- {
- cache->privateSectionRead(m_PrivateService, data);
- seenPrivateSections.insert(data[6]);
- }
- else
- eDebug("ignore");
-#else
- can_delete = 0;
cache->privateSectionRead(m_PrivateService, data);
seenPrivateSections.insert(data[6]);
-#endif
}
if ( seenPrivateSections.size() == (unsigned int)(data[7] + 1) )
{
eDebug("[EPGC] private finished");
- if (!isRunning)
- can_delete = 1;
m_PrevVersion = (data[5] & 0x3E) >> 1;
startPrivateReader();
}