summaryrefslogtreecommitdiff
path: root/maps.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'maps.cpp')
-rw-r--r--maps.cpp126
1 files changed, 87 insertions, 39 deletions
diff --git a/maps.cpp b/maps.cpp
index a21b0b8..065e805 100644
--- a/maps.cpp
+++ b/maps.cpp
@@ -182,20 +182,40 @@ int cEPGMapping::compare(const void *a, const void *b)
{
num1=INT_MAX;
}
- else
- {
- cChannel *c1=Channels.GetByChannelID(*v1);
- if (c1) num1=c1->Number();
- }
if (*v2==tChannelID::InvalidID)
{
num2=INT_MAX;
}
- else
+
+#if VDRVERSNUM>=20301
+ cStateKey StateKeyChan;
+ const cChannels *Channels=cChannels::GetChannelsRead(StateKeyChan);
+ if (Channels)
{
- cChannel *c2=Channels.GetByChannelID(*v2);
- if (c2) num2=c2->Number();
+#endif
+
+ if (!num1)
+ {
+#if VDRVERSNUM>=20301
+ const cChannel *c1=Channels->GetByChannelID(*v1);
+#else
+ cChannel *c1=Channels.GetByChannelID(*v1);
+#endif
+ if (c1) num1=c1->Number();
+ }
+ if (!num2)
+ {
+#if VDRVERSNUM>=20301
+ const cChannel *c2=Channels->GetByChannelID(*v2);
+#else
+ cChannel *c2=Channels.GetByChannelID(*v2);
+#endif
+ if (c2) num2=c2->Number();
+ }
+#if VDRVERSNUM>=20301
+ StateKeyChan.Remove();
}
+#endif
if (num1>num2) return 1;
else return -1;
}
@@ -230,30 +250,42 @@ void cEPGMapping::addchannels(const char *channels)
void cEPGMapping::AddChannel(int ChannelNumber)
{
- cChannel *chan=Channels.GetByNumber(ChannelNumber);
- if (chan)
+#if VDRVERSNUM>=20301
+ cStateKey StateKeyChan;
+ const cChannels *Channels=cChannels::GetChannelsRead(StateKeyChan);
+ if (Channels)
{
- bool found=false;
- for (int i=0; i<numchannelids; i++)
+ const cChannel *chan=Channels->GetByNumber(ChannelNumber);
+#else
+ cChannel *chan=Channels.GetByNumber(ChannelNumber);
+#endif
+ if (chan)
{
- if (channelids[i]==chan->GetChannelID())
+ bool found=false;
+ for (int i=0; i<numchannelids; i++)
{
- found=true;
- break;
+ if (channelids[i]==chan->GetChannelID())
+ {
+ found=true;
+ break;
+ }
}
- }
- if (!found)
- {
- tChannelID *tmp_channelids=static_cast<tChannelID *>(realloc(channelids,(numchannelids+1)*sizeof(struct tChannelID)));
- if (tmp_channelids)
+ if (!found)
{
- channelids=tmp_channelids;
- channelids[numchannelids]=chan->GetChannelID();
- numchannelids++;
- qsort(channelids,numchannelids,sizeof(tChannelID),compare);
+ tChannelID *tmp_channelids=static_cast<tChannelID *>(realloc(channelids,(numchannelids+1)*sizeof(struct tChannelID)));
+ if (tmp_channelids)
+ {
+ channelids=tmp_channelids;
+ channelids[numchannelids]=chan->GetChannelID();
+ numchannelids++;
+ qsort(channelids,numchannelids,sizeof(tChannelID),compare);
+ }
}
}
+#if VDRVERSNUM>=20301
+ StateKeyChan.Remove();
}
+#endif
}
void cEPGMapping::ReplaceChannels(int NumChannelIDs, tChannelID *ChannelIDs)
@@ -316,26 +348,42 @@ void cEPGMapping::RemoveChannel(tChannelID ChannelID, bool MarkOnly)
void cEPGMapping::RemoveChannel(int ChannelNumber, bool MarkOnly)
{
if (!ChannelNumber) return;
+#if VDRVERSNUM>=20301
+ cStateKey StateKeyChan;
+ const cChannels *Channels=cChannels::GetChannelsRead(StateKeyChan);
+ if (Channels)
+ {
+ const cChannel *chan=Channels->GetByNumber(ChannelNumber);
+ if (!chan)
+ {
+ StateKeyChan.Remove();
+ return;
+ }
+#else
cChannel *chan=Channels.GetByNumber(ChannelNumber);
if (!chan) return;
-
- bool found=false;
- int i;
- for (i=0; i<numchannelids; i++)
- {
- if (channelids[i]==chan->GetChannelID())
+#endif
+ bool found=false;
+ int i;
+ for (i=0; i<numchannelids; i++)
{
- found=true;
- break;
+ if (channelids[i]==chan->GetChannelID())
+ {
+ found=true;
+ break;
+ }
}
- }
- if (found)
- {
- channelids[i]=tChannelID::InvalidID;
- if (!MarkOnly)
+ if (found)
{
- qsort(channelids,numchannelids,sizeof(tChannelID),compare);
- numchannelids--;
+ channelids[i]=tChannelID::InvalidID;
+ if (!MarkOnly)
+ {
+ qsort(channelids,numchannelids,sizeof(tChannelID),compare);
+ numchannelids--;
+ }
}
+#if VDRVERSNUM>=20301
+ StateKeyChan.Remove();
}
+#endif
}