summaryrefslogtreecommitdiff
path: root/changrp.c
diff options
context:
space:
mode:
Diffstat (limited to 'changrp.c')
-rw-r--r--changrp.c60
1 files changed, 45 insertions, 15 deletions
diff --git a/changrp.c b/changrp.c
index 66cd6a1..223273f 100644
--- a/changrp.c
+++ b/changrp.c
@@ -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();