282 lines
10 KiB
Diff
282 lines
10 KiB
Diff
|
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);
|