| compile fix >=vdr-2.3.1 |
| http://www.vdr-portal.de/board1-news/board2-vdr-news/p1254875-announce-vdr-developer-version-2-3-1/#post1254875 |
| Signed-of-by: Joerg Bornkessel <hd_brummy@gentoo.org> (25 Okt 2015) |
| |
| diff -rupN b/zappilotosd.c a/zappilotosd.c |
| --- b/zappilotosd.c 2015-06-24 14:32:15.000000000 +0200 |
| +++ a/zappilotosd.c 2015-10-22 18:39:36.000000000 +0200 |
| @@ -69,7 +69,7 @@ cZappilotOsd::~cZappilotOsd(void) |
| |
| void cZappilotOsd::DisplayChannel(const cChannel *Channel) |
| { |
| - int BufSize = 255; |
| + int BufSize = 1020; |
| if (Channel) |
| { |
| if (Channel->GroupSep()) |
| @@ -172,11 +172,11 @@ void cZappilotOsd::UpdateEPGInfo(int Now |
| titleFollowingInfo = NULL; |
| subtitlePresentInfo = NULL; |
| subtitleFollowingInfo = NULL; |
| - cSchedulesLock SchedulesLock; |
| - const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock); |
| + LOCK_SCHEDULES_READ; |
| + LOCK_CHANNELS_READ; |
| if (Schedules) |
| { |
| - const cSchedule *Schedule = Schedules->GetSchedule(Channels.GetByNumber(PilotChannelNumber)->GetChannelID()); |
| + const cSchedule *Schedule = Schedules->GetSchedule(Channels->GetByNumber(PilotChannelNumber)->GetChannelID()); |
| if (Schedule) |
| { |
| // Get Present event |
| @@ -267,9 +267,9 @@ void cZappilotOsd::UpdateEPGInfo(int Now |
| void cZappilotOsd::Show() |
| { |
| // find the actual current |
| - cChannel *Channel = Channels.GetByNumber(cDevice::PrimaryDevice()->CurrentChannel()); |
| - currentChannel = Channels.GetByNumber(cDevice::PrimaryDevice()->CurrentChannel()); |
| - |
| + LOCK_CHANNELS_READ; |
| + const cChannel *Channel = Channels->GetByNumber(cDevice::PrimaryDevice()->CurrentChannel()); |
| + currentChannel = Channel; |
| if (Channel) |
| { |
| PilotChannelNumber = Channel->Number(); |
| @@ -333,13 +333,14 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| case k1 ... k9: |
| if (number >= 0) |
| { |
| - if (number > Channels.MaxNumber()) |
| + LOCK_CHANNELS_READ; |
| + if (number > Channels->MaxNumber()) |
| number = Key - k0; |
| else |
| number = number * 10 + Key - k0; |
| if (number > 0) |
| { |
| - cChannel *channel = Channels.GetByNumber(number); |
| + const cChannel *channel = Channels->GetByNumber(number); |
| if (channel) |
| { |
| PilotChannelNumber = channel->Number(); |
| @@ -363,7 +364,8 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| if (config.fastbrowse) |
| { |
| CursorDown(); |
| - cChannel *channel = Channels.GetByNumber(PilotChannelNumber); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(PilotChannelNumber); |
| if (channel) |
| group = channel->Index()-1; |
| break; |
| @@ -380,7 +382,8 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| if (config.fastbrowse) |
| { |
| CursorUp(); |
| - cChannel *channel = Channels.GetByNumber(PilotChannelNumber); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(PilotChannelNumber); |
| if (channel) |
| group = channel->Index()-1; |
| break; |
| @@ -396,7 +399,8 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| { |
| if (group < 0) |
| { |
| - cChannel *channel = Channels.GetByNumber(PilotChannelNumber); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(PilotChannelNumber); |
| if (channel) |
| group = channel->Index(); |
| } |
| @@ -405,15 +409,18 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| int SaveGroup = group; |
| if (NORMALKEY(Key) == kRight) |
| { |
| - group = Channels.GetNextGroup(group); |
| + LOCK_CHANNELS_READ; |
| + group = Channels->GetNextGroup(group); |
| } |
| else |
| { |
| - group = Channels.GetPrevGroup(group < 1 ? 1 : group); |
| + LOCK_CHANNELS_READ; |
| + group = Channels->GetPrevGroup(group < 1 ? 1 : group); |
| } |
| if (group < 0) |
| group = SaveGroup; |
| - cChannel *channel = Channels.Get(group); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->Get(group); |
| if (channel) |
| { |
| //DisplayChannel(channel); |
| @@ -449,7 +456,8 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| else |
| { |
| CursorUp(); |
| - cChannel *channel = Channels.GetByNumber(PilotChannelNumber); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(PilotChannelNumber); |
| if (channel) |
| group = channel->Index()-1; |
| break; |
| @@ -466,20 +474,22 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| else |
| { |
| CursorDown(); |
| - cChannel *channel = Channels.GetByNumber(PilotChannelNumber); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(PilotChannelNumber); |
| if (channel) |
| - group = channel->Index()-1; |
| + group = channel->Index()-1; |
| break; |
| } |
| case kNone: |
| if (number && (int)cTimeMs::Now() - lastTime > 1000) |
| { |
| - if (Channels.GetByNumber(number)) |
| + LOCK_CHANNELS_READ; |
| + if (Channels->GetByNumber(number)) |
| { |
| PilotChannelNumber = number; |
| lastTime = cTimeMs::Now(); |
| number = 0; |
| - cChannel *channel = Channels.GetByNumber(PilotChannelNumber); |
| + const cChannel *channel = Channels->GetByNumber(PilotChannelNumber); |
| if (channel) |
| group = channel->Index()-1; |
| } |
| @@ -553,7 +563,8 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| { |
| if (group < 0) |
| { |
| - cChannel *channel = Channels.GetByNumber(PilotChannelNumber); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(PilotChannelNumber); |
| if (channel) |
| group = channel->Index(); |
| } |
| @@ -562,15 +573,18 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| int SaveGroup = group; |
| if (NORMALKEY(Key) == kBlue) |
| { |
| - group = Channels.GetNextGroup(group); |
| + LOCK_CHANNELS_READ; |
| + group = Channels->GetNextGroup(group); |
| } |
| else |
| { |
| - group = Channels.GetPrevGroup(group < 1 ? 1 : group); |
| + LOCK_CHANNELS_READ; |
| + group = Channels->GetPrevGroup(group < 1 ? 1 : group); |
| } |
| if (group < 0) |
| group = SaveGroup; |
| - cChannel *channel = Channels.Get(group); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->Get(group); |
| if (channel) |
| { |
| //DisplayChannel(channel); |
| @@ -663,8 +677,8 @@ eOSState cZappilotOsd::ProcessKey(eKeys |
| void cZappilotOsd::CursorUp() |
| { |
| int n = PilotChannelNumber + 1; |
| - cChannel *channel; |
| - channel = Channels.GetByNumber(n, 1); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(n, 1); |
| if (channel) |
| { |
| n = channel->Number(); |
| @@ -678,8 +692,8 @@ void cZappilotOsd::CursorUp() |
| void cZappilotOsd::CursorDown() |
| { |
| int n = PilotChannelNumber - 1; |
| - cChannel *channel; |
| - channel = Channels.GetByNumber(n, -1); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(n, -1); |
| if (channel) |
| { |
| n = channel->Number(); |
| @@ -693,9 +707,13 @@ void cZappilotOsd::CursorDown() |
| void cZappilotOsd::CursorOK() |
| { |
| DrawMenu(0,2); |
| - if (currentChannel != Channels.GetByNumber(PilotChannelNumber)) |
| + LOCK_CHANNELS_READ; |
| + const cChannel* chan = Channels->GetByNumber(PilotChannelNumber); |
| + |
| + if (currentChannel != chan) |
| { |
| - cChannel *Channel = Channels.GetByNumber(PilotChannelNumber); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *Channel = Channels->GetByNumber(PilotChannelNumber); |
| if (Channel) |
| { |
| cDevice::PrimaryDevice()->SwitchChannel(Channel, true); |
| @@ -750,7 +768,8 @@ void cZappilotOsd::DisplayInfo(int delta |
| displayTimer = NULL; |
| displayChannel = Skins.Current()->DisplayChannel(true); |
| } |
| - cChannel *channel = Channels.GetByNumber(PilotChannelNumber); |
| + LOCK_CHANNELS_READ; |
| + const cChannel *channel = Channels->GetByNumber(PilotChannelNumber); |
| |
| if (!isempty(titlePresentInfo)) |
| { |
| @@ -778,14 +797,17 @@ void cZappilotOsd::DisplayExtraInfo() |
| displayEvent = NULL; |
| } |
| |
| - displayEvent = new cMenuEvent(Present,false,true); |
| + |
| + LOCK_TIMERS_READ; |
| + LOCK_CHANNELS_READ; |
| + displayEvent = new cMenuEvent(Timers, Channels, Present,false,true); |
| displayEvent->Display(); |
| } |
| |
| |
| void cZappilotOsd::DisplayTimer() |
| { |
| - |
| + |
| if (displayChannel) |
| { |
| delete displayChannel; |
| @@ -797,13 +819,17 @@ void cZappilotOsd::DisplayTimer() |
| displayEvent = NULL; |
| } |
| |
| + LOCK_TIMERS_WRITE; |
| + |
| cTimer *timer = new cTimer(Present); |
| - cTimer *t = Timers.GetTimer(timer); |
| + cTimer *t = Timers->GetMatch(Present); |
| + |
| if (t) |
| { |
| delete timer; |
| timer = t; |
| } |
| + |
| displayTimer=new cMenuEditTimer(timer, !t); |
| displayTimer->Display(); |
| } |
| diff -rupN b/zappilotosd.h a/zappilotosd.h |
| --- b/zappilotosd.h 2015-06-24 14:32:15.000000000 +0200 |
| +++ a/zappilotosd.h 2015-10-22 18:40:02.000000000 +0200 |
| @@ -39,7 +39,7 @@ class cZappilotOsd : public cOsdObject |
| int offset; |
| int lines; |
| int type; |
| - cChannel* currentChannel; |
| + const cChannel* currentChannel; |
| |
| public: |
| cZappilotOsd(void); |