CEpgPtr CEpgContainer::CreateChannelEpg(CPVRChannelPtr channel) { if (!channel) return NULL; WaitForUpdateFinish(true); LoadFromDB(); CEpgPtr epg; if (channel->EpgID() > 0) epg = GetById(channel->EpgID()); if (!epg) { channel->SetEpgID(NextEpgId()); epg.reset(new CEpg(channel, false)); CSingleLock lock(m_critSection); m_epgs.insert(std::make_pair((unsigned int)epg->EpgID(), epg)); SetChanged(); epg->RegisterObserver(this); } epg->SetChannel(channel); { CSingleLock lock(m_critSection); m_bPreventUpdates = false; CDateTime::GetCurrentDateTime().GetAsUTCDateTime().GetAsTime(m_iNextEpgUpdate); } NotifyObservers(ObservableMessageEpgContainer); return epg; }