diff options
author | Johann Friedrichs <johann.friedrichs@web.de> | 2017-06-13 23:09:22 +0200 |
---|---|---|
committer | Frank Neumann <fnu@yavdr.org> | 2017-06-13 23:09:22 +0200 |
commit | ceb158e1bd9df3cc0c6f9243856faac6f735ffb8 (patch) | |
tree | c5f4de10edc31a97307453ebb2d1144e1c7a6e0f /menu_main.c | |
parent | f04099841879fd9fdec2ff2f8b89109109fa1ee0 (diff) | |
download | vdr-plugin-epgsearch-ceb158e1bd9df3cc0c6f9243856faac6f735ffb8.tar.gz vdr-plugin-epgsearch-ceb158e1bd9df3cc0c6f9243856faac6f735ffb8.tar.bz2 |
Fix more lock sequences.
Diffstat (limited to 'menu_main.c')
-rw-r--r-- | menu_main.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/menu_main.c b/menu_main.c index 912affe..d392e20 100644 --- a/menu_main.c +++ b/menu_main.c @@ -73,11 +73,10 @@ cMenuSearchMain::cMenuSearchMain(void) } if ((EPGSearchConfig.StartMenu == 1 || forceMenu == 1) && forceMenu != 2) - { - LOCK_SCHEDULES_READ; + { InWhatsOnMenu = true; - AddSubMenu(new cMenuWhatsOnSearch(Schedules, cDevice::CurrentChannel())); - } + AddSubMenu(new cMenuWhatsOnSearch(cDevice::CurrentChannel())); + } if (forceMenu == 3) ShowSummary(); } @@ -119,6 +118,7 @@ void cMenuSearchMain::PrepareSchedule(const cChannel *Channel) cMenuTemplate* ScheduleTemplate = cTemplFile::GetTemplateByName("MenuSchedule"); eventObjects.Clear(); + LOCK_TIMERS_READ; const cSchedule *Schedule; { LOCK_SCHEDULES_READ; @@ -148,10 +148,10 @@ void cMenuSearchMain::PrepareSchedule(const cChannel *Channel) struct tm *t_event = localtime_r(&EventDate, &tm_rEvent); struct tm *t_lastevent = localtime_r(&lastEventDate, &tm_rLastEvent); if (t_event->tm_mday != t_lastevent->tm_mday) - Add(new cMenuMyScheduleSepItem(Event)); + Add(new cMenuMyScheduleSepItem(NULL, Event)); lastEventDate = EventDate; } - Add(new cMenuMyScheduleItem(Event, NULL, showNow, ScheduleTemplate), Event == PresentEvent); + Add(new cMenuMyScheduleItem(Timers, Event, NULL, showNow, ScheduleTemplate), Event == PresentEvent); eventObjects.Add(Event); } } @@ -170,8 +170,9 @@ void cMenuSearchMain::PrepareSchedule(const cChannel *Channel) bool cMenuSearchMain::Update(void) { bool result = false; + LOCK_TIMERS_READ; for (cOsdItem *item = First(); item; item = Next(item)) { - if (item->Selectable() && ((cMenuMyScheduleItem *)item)->Update()) + if (item->Selectable() && ((cMenuMyScheduleItem *)item)->Update(Timers)) result = true; } return result; @@ -436,10 +437,6 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key) break; case kGreen: { - LOCK_CHANNELS_READ; - LOCK_SCHEDULES_READ; - if (Schedules) - { if (HasSubMenu() && !InWhatsOnMenu && !InFavoritesMenu) { if (Count()) @@ -455,6 +452,7 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key) cMenuMyScheduleItem* Item = (cMenuMyScheduleItem *)Get(Current()); if (Item && Item->event) { + LOCK_CHANNELS_READ; const cChannel *channel = Channels->GetByChannelID(Item->event->ChannelID(), true, true); if (channel) ChannelNr = channel->Number(); @@ -468,12 +466,16 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key) else { InWhatsOnMenu = true; - return AddSubMenu(new cMenuWhatsOnSearch(Schedules, ChannelNr)); + return AddSubMenu(new cMenuWhatsOnSearch(ChannelNr)); } } else { - const cChannel *channel = Channels->GetByNumber(currentChannel-1,-1); + const cChannel *channel; + { + LOCK_CHANNELS_READ; + channel = Channels->GetByNumber(currentChannel-1,-1); + } if (channel) { PrepareSchedule(channel); @@ -485,14 +487,9 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key) SetHelpKeys(true); return osContinue; } - } } case kYellow: { - LOCK_CHANNELS_READ; - LOCK_SCHEDULES_READ; - if (Schedules) - { if (HasSubMenu()) { if (Count()) @@ -505,11 +502,15 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key) { cMenuWhatsOnSearch::currentShowMode = showNext; InWhatsOnMenu = true; - return AddSubMenu(new cMenuWhatsOnSearch(Schedules, cMenuWhatsOnSearch::CurrentChannel())); + return AddSubMenu(new cMenuWhatsOnSearch(cMenuWhatsOnSearch::CurrentChannel())); } else { - const cChannel *channel = Channels->GetByNumber(currentChannel+1,1); + const cChannel *channel; + { + LOCK_CHANNELS_READ; + channel = Channels->GetByNumber(currentChannel+1,1); + } if (channel) { PrepareSchedule(channel); if (channel->Number() != cDevice::CurrentChannel()) { @@ -520,7 +521,6 @@ eOSState cMenuSearchMain::ProcessKey(eKeys Key) SetHelpKeys(true); return osContinue; } - } break; } case kBlue: |