diff --git a/src/eitd/xmlutil.cpp b/src/eitd/xmlutil.cpp index c2a2da7d1..2c1fe99e4 100644 --- a/src/eitd/xmlutil.cpp +++ b/src/eitd/xmlutil.cpp @@ -564,10 +564,12 @@ t_channel_id getepgid(std::string epg_name) if (m == CZapitClient::MODE_RADIO) cit = g_bouquetManager->radioChannelsBegin(); - for (; !(cit.EndOfChannels()); cit++) + for (; g_bouquetManager->empty || !(cit.EndOfChannels()); cit++) { - std::string tvg_id = (*cit)->getEPGmap(); + if(g_bouquetManager->empty) + break; + std::string tvg_id = (*cit)->getEPGmap(); if (tvg_id.empty()) continue; @@ -576,6 +578,8 @@ t_channel_id getepgid(std::string epg_name) { if (match_found) { + if(g_bouquetManager->empty) + break; if ((*cit)->getEpgID() == epgid) continue; (*cit)->setEPGid(epgid); } diff --git a/src/zapit/include/zapit/bouquets.h b/src/zapit/include/zapit/bouquets.h index c9597e11b..709a5c925 100644 --- a/src/zapit/include/zapit/bouquets.h +++ b/src/zapit/include/zapit/bouquets.h @@ -122,8 +122,9 @@ class CBouquetManager : public OpenThreads::Thread bool logo_running; std::list LogoList; public: - CBouquetManager() { remainChannels = NULL; logo_running = false; }; + CBouquetManager() { remainChannels = NULL; logo_running = false; empty = false; }; ~CBouquetManager(); + bool empty; class ChannelIterator { private: diff --git a/src/zapit/src/zapit.cpp b/src/zapit/src/zapit.cpp index f663f3087..bfaafb4cf 100644 --- a/src/zapit/src/zapit.cpp +++ b/src/zapit/src/zapit.cpp @@ -1180,15 +1180,18 @@ bool CZapit::PrepareChannels() { current_channel = 0; - if (!CServiceManager::getInstance()->LoadServices(false)) + g_bouquetManager->empty = true; + if (!CServiceManager::getInstance()->LoadServices(false)){ + g_bouquetManager->empty = false; return false; - + } INFO("LoadServices: success"); if(CNeutrinoApp::getInstance()->channelList) CNeutrinoApp::getInstance()->channelList->ClearChannelList(); g_bouquetManager->loadBouquets(); + g_bouquetManager->empty = false; /* save if services changed (update from sdt, etc) */ CServiceManager::getInstance()->SaveServices(true, true); return true;