From a46c7161bddc00b5b11bda0f8a14066b5f837302 Mon Sep 17 00:00:00 2001 From: Frank Neumann Date: Mon, 1 May 2017 11:02:21 +0200 Subject: Add compatibility for VDR 2.3.2+ (thx kamel5, mini73 & TomJoad) --- uservars.h | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) (limited to 'uservars.h') diff --git a/uservars.h b/uservars.h index 9366af0..1681f25 100644 --- a/uservars.h +++ b/uservars.h @@ -176,7 +176,13 @@ public: string Evaluate(const cEvent* e, bool escapeStrings = false) { if (!e) return ""; - cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel *channel = vdrchannels->GetByChannelID(e->ChannelID(), true); if (!channel) return ""; string res(channel->GetChannelID().ToString()); @@ -415,7 +421,13 @@ public: string Evaluate(const cEvent* e, bool escapeStrings = false) { if (!e) return ""; - cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel *channel = vdrchannels->GetByChannelID(e->ChannelID(), true); string res = channel?channel->ShortName(true):""; if (escapeStrings) return "'" + EscapeString(res) + "'"; else return res; } @@ -427,7 +439,13 @@ public: string Evaluate(const cEvent* e, bool escapeStrings = false) { if (!e) return ""; - cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel *channel = vdrchannels->GetByChannelID(e->ChannelID(), true); string res = channel?channel->Name():""; if (escapeStrings) return "'" + EscapeString(res) + "'"; else return res; } @@ -439,7 +457,13 @@ class cChannelDataVar : public cInternalVar { string Evaluate(const cEvent* e, bool escapeStrings = false) { if (!e) return ""; - cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel *channel = vdrchannels->GetByChannelID(e->ChannelID(), true); return channel?CHANNELSTRING(channel):""; } }; @@ -451,9 +475,15 @@ public: { if (!e) return ""; ostringstream os; - cChannel *channel = Channels.GetByChannelID(e->ChannelID(), true); +#if VDRVERSNUM > 20300 + LOCK_CHANNELS_READ; + const cChannels *vdrchannels = Channels; +#else + cChannels *vdrchannels = &Channels; +#endif + const cChannel *channel = vdrchannels->GetByChannelID(e->ChannelID(), true); while(channel && !channel->GroupSep()) - channel = Channels.Prev(channel); + channel = vdrchannels->Prev(channel); if (!channel || !channel->Name()) return ""; string grpName = channel->Name(); if (escapeStrings) return "'" + EscapeString(grpName) + "'"; else return grpName; -- cgit v1.2.3