diff options
author | Frank Neumann <fnu@yavdr.org> | 2017-05-01 11:02:21 +0200 |
---|---|---|
committer | Frank Neumann <fnu@yavdr.org> | 2017-05-01 11:02:21 +0200 |
commit | a46c7161bddc00b5b11bda0f8a14066b5f837302 (patch) | |
tree | 48e50b78f0efb1120b39bfb07f3612aabb1541e6 /changrp.c | |
parent | 0b09f90f361454d1d422cc750ee84359f11bd378 (diff) | |
download | vdr-plugin-epgsearch-a46c7161bddc00b5b11bda0f8a14066b5f837302.tar.gz vdr-plugin-epgsearch-a46c7161bddc00b5b11bda0f8a14066b5f837302.tar.bz2 |
Add compatibility for VDR 2.3.2+ (thx kamel5, mini73 & TomJoad)
Diffstat (limited to 'changrp.c')
-rw-r--r-- | changrp.c | 60 |
1 files changed, 45 insertions, 15 deletions
@@ -82,7 +82,13 @@ bool cChannelGroup::Parse(const char *s) #endif if (numChannels == 1) { - cChannel* channel = Channels.GetByChannelID(tChannelID::FromString(channelbuffer), true, true); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel* channel = vdrchannels->GetByChannelID(tChannelID::FromString(channelbuffer), true, true); if (channel) { cChannelGroupItem* channelitem = new cChannelGroupItem(channel); @@ -110,7 +116,7 @@ const char *cChannelGroup::ToText(void) int index = 0; while (ChannelGroupItem) { - cChannel* channel = ChannelGroupItem->channel; + const cChannel* channel = ChannelGroupItem->channel; if (index++ == 0) channelbuffer = strdup(CHANNELSTRING(channel)); else @@ -129,14 +135,20 @@ const char *cChannelGroup::ToText(void) int* cChannelGroup::CreateChannelSel() { - int* channelSel = (int*) malloc(Channels.Count() * sizeof(int)); - cChannel* channel = Channels.First(); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + int* channelSel = (int*) malloc(vdrchannels->Count() * sizeof(int)); + const cChannel* channel = vdrchannels->First(); int index = 0; while (channel) { if (channel->GroupSep()) { - channel = Channels.Next(channel); + channel = vdrchannels->Next(channel); continue; } channelSel[index] = 0; @@ -151,7 +163,7 @@ int* cChannelGroup::CreateChannelSel() channelInGroup = channels.Next(channelInGroup); } index++; - channel = Channels.Next(channel); + channel = vdrchannels->Next(channel); } return channelSel; } @@ -159,7 +171,13 @@ int* cChannelGroup::CreateChannelSel() void cChannelGroup::CreateChannelList(int* channelSel) { channels.Clear(); - cChannel* channel = Channels.First(); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel* channel = vdrchannels->First(); int index = 0; while (channel) { @@ -169,7 +187,7 @@ void cChannelGroup::CreateChannelList(int* channelSel) channels.Add(new cChannelGroupItem(channel)); index++; } - channel = Channels.Next(channel); + channel = vdrchannels->Next(channel); } } @@ -178,7 +196,7 @@ bool cChannelGroup::Save(FILE *f) return fprintf(f, "%s\n", ToText()) > 0; } -bool cChannelGroup::ChannelInGroup(cChannel* channel) +bool cChannelGroup::ChannelInGroup(const cChannel* channel) { cChannelGroupItem* channelInGroup = channels.First(); while (channelInGroup) @@ -432,17 +450,23 @@ void cMenuEditChannelGroup::Set() Clear(); Add(new cMenuEditStrItem( tr("Group name"), name, sizeof(group->name), trVDR(FileNameChars))); - cChannel* channel = Channels.First(); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel* channel = vdrchannels->First(); int index = 0; while (channel) { if (channel->GroupSep()) { - channel = Channels.Next(channel); + channel = vdrchannels->Next(channel); continue; } Add(new cMenuEditBoolItem( CHANNELNAME(channel), &channelSel[index++], trVDR("no"), trVDR("yes"))); - channel = Channels.Next(channel); + channel = vdrchannels->Next(channel); } SetCurrent(Get(current)); @@ -507,19 +531,25 @@ eOSState cMenuEditChannelGroup::ProcessKey(eKeys Key) case kGreen: case kYellow: { - cChannel* channel = Channels.First(); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel* channel = vdrchannels->First(); int index = 0; while (channel) { if (channel->GroupSep()) { - channel = Channels.Next(channel); + channel = vdrchannels->Next(channel); continue; } channelSel[index] = (Key == kGreen?1:(Key == kRed?1-channelSel[index]:0)); index++; - channel = Channels.Next(channel); + channel = vdrchannels->Next(channel); } Set(); Display(); |