summaryrefslogtreecommitdiff
path: root/maps.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'maps.cpp')
-rw-r--r--maps.cpp42
1 files changed, 39 insertions, 3 deletions
diff --git a/maps.cpp b/maps.cpp
index 884a23f..be92a4c 100644
--- a/maps.cpp
+++ b/maps.cpp
@@ -187,7 +187,41 @@ void cEPGMapping::ReplaceChannels(int NumChannelIDs, tChannelID *ChannelIDs)
}
}
-void cEPGMapping::RemoveChannel(int ChannelNumber)
+void cEPGMapping::RemoveInvalidChannels()
+{
+ qsort(channelids,numchannelids,sizeof(tChannelID),compare);
+ for (int i=0; i<numchannelids; i++)
+ {
+ if (channelids[i]==tChannelID::InvalidID)
+ {
+ numchannelids--;
+ }
+ }
+}
+
+void cEPGMapping::RemoveChannel(tChannelID ChannelID, bool MarkOnly)
+{
+ bool found=false;
+ int i;
+ for (i=0; i<numchannelids; i++)
+ {
+ if (channelids[i]==ChannelID)
+ {
+ found=true;
+ break;
+ }
+ }
+ if (found)
+ {
+ channelids[i]=tChannelID::InvalidID;
+ if (!MarkOnly) {
+ qsort(channelids,numchannelids,sizeof(tChannelID),compare);
+ numchannelids--;
+ }
+ }
+}
+
+void cEPGMapping::RemoveChannel(int ChannelNumber, bool MarkOnly)
{
if (!ChannelNumber) return;
cChannel *chan=Channels.GetByNumber(ChannelNumber);
@@ -206,7 +240,9 @@ void cEPGMapping::RemoveChannel(int ChannelNumber)
if (found)
{
channelids[i]=tChannelID::InvalidID;
- qsort(channelids,numchannelids,sizeof(tChannelID),compare);
- numchannelids--;
+ if (!MarkOnly) {
+ qsort(channelids,numchannelids,sizeof(tChannelID),compare);
+ numchannelids--;
+ }
}
}