diff --git a/src/zapit/include/zapit/getservices.h b/src/zapit/include/zapit/getservices.h index 15fbabf01..30ec33c99 100644 --- a/src/zapit/include/zapit/getservices.h +++ b/src/zapit/include/zapit/getservices.h @@ -128,7 +128,7 @@ class CServiceManager CZapitChannel* FindChannel(const t_channel_id channel_id, bool * current_is_nvod = NULL); CZapitChannel* FindChannelByName(std::string name); - CZapitChannel* FindChannelByPattern(std::string pattern); //NI + CZapitChannel* FindChannelByPattern(std::string pattern); CZapitChannel* FindCurrentChannel(const t_channel_id channel_id); CZapitChannel* FindChannel48(const t_channel_id channel_id); CZapitChannel* FindChannel48Pos(const t_channel_id channel_id, diff --git a/src/zapit/src/getservices.cpp b/src/zapit/src/getservices.cpp index 4d9a74937..764749af9 100644 --- a/src/zapit/src/getservices.cpp +++ b/src/zapit/src/getservices.cpp @@ -220,8 +220,7 @@ CZapitChannel * CServiceManager::FindChannelByName(std::string name) return NULL; } -//NI -CZapitChannel * CServiceManager::FindChannelByPattern(std::string pattern) +CZapitChannel* CServiceManager::FindChannelByPattern(std::string pattern) { for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) { //INFO("searching for %s in %s", pattern.c_str(), it->second.getName().c_str()); @@ -244,21 +243,29 @@ CZapitChannel * CServiceManager::FindCurrentChannel(const t_channel_id channel_i CZapitChannel * CServiceManager::FindChannel48(const t_channel_id channel_id) { for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) { - if((it->second.getChannelID() & 0xFFFFFFFFFFFFULL) == (channel_id & 0xFFFFFFFFFFFFULL)) - return &it->second; + if ((it->second.getChannelID() & 0xFFFFFFFFFFFFULL) == (channel_id & 0xFFFFFFFFFFFFULL)) + return &(it->second); } return NULL; } -CZapitChannel* CServiceManager::FindChannel48Pos(const t_channel_id channel_id, - const t_satellite_position pos) +CZapitChannel * CServiceManager::FindChannel48Pos(const t_channel_id channel_id, + const t_satellite_position pos) { for (channel_map_iterator_t it = allchans.begin(); it != allchans.end(); ++it) { - CZapitChannel *ret = &it->second; - if ((ret->getChannelID() & 0xFFFFFFFFFFFFULL) != (channel_id & 0xFFFFFFFFFFFFULL)) - continue; - if (pos == ret->getSatellitePosition()) - return ret; + CZapitChannel &channel = it->second; + if (CFrontend::isCable(channel.delsys)) + { + if ((channel.getChannelID() & 0xFFFFFFFFFFFFULL) == (channel_id & 0xFFFFFFFFFFFFULL)) + return &channel; + } + else + { + if ((channel.getChannelID() & 0xFFFFFFFFFFFFULL) != (channel_id & 0xFFFFFFFFFFFFULL)) + continue; + if (pos == channel.getSatellitePosition()) + return &channel; + } } return NULL; }