diff --git a/src/zapit/include/zapit/getservices.h b/src/zapit/include/zapit/getservices.h index a0439a1ff..3de645b9c 100644 --- a/src/zapit/include/zapit/getservices.h +++ b/src/zapit/include/zapit/getservices.h @@ -164,6 +164,7 @@ class CServiceManager void FreeNumber(int number, bool radio); void UseNumber(int number, bool radio); void SetServicesChanged(bool changed) { services_changed = changed; } + void UpdateSatTransponders(t_satellite_position satellitePosition); bool GetTransponder(transponder &t); transponder_list_t & GetSatelliteTransponders(t_satellite_position position) { return satelliteTransponders[position]; } diff --git a/src/zapit/src/getservices.cpp b/src/zapit/src/getservices.cpp index a65856423..20bf61ad9 100644 --- a/src/zapit/src/getservices.cpp +++ b/src/zapit/src/getservices.cpp @@ -328,7 +328,7 @@ void CServiceManager::ParseTransponders(xmlNodePtr node, t_satellite_position sa ret = transponders.insert(transponder_pair_t(tid, t)); if (ret.second == false) - t.dump("[zapit] duplicate"); + t.dump("[zapit] duplicate in all transponders:"); /* read channels that belong to the current transponder */ ParseChannels(node->xmlChildrenNode, transport_stream_id, original_network_id, satellitePosition, freq, polarization); @@ -336,6 +336,7 @@ void CServiceManager::ParseTransponders(xmlNodePtr node, t_satellite_position sa /* hop to next transponder */ node = node->xmlNextNode; } + UpdateSatTransponders(satellitePosition); return; } @@ -1064,3 +1065,20 @@ bool CServiceManager::GetTransponder(transponder &t) } return false; } + +void CServiceManager::UpdateSatTransponders(t_satellite_position satellitePosition) +{ + pair::iterator,bool> ret; + transponder_list_t & stransponders = satelliteTransponders[satellitePosition]; + for (transponder_list_t::iterator tI = transponders.begin(); tI != transponders.end(); tI++) { + for (stiterator stI = stransponders.begin(); stI != stransponders.end(); ++stI) { + if (stI->second.compare(tI->second)) { + stransponders.erase(stI); + break; + } + } + ret = stransponders.insert(transponder_pair_t(tI->first, tI->second)); + if (ret.second == false) + tI->second.dump("[zapit] duplicate in sat transponders:"); + } +}