summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY1
-rw-r--r--HISTORY.DE1
-rw-r--r--epgsearchext.c9
-rw-r--r--menu_dirselect.c9
-rw-r--r--menu_event.c9
5 files changed, 11 insertions, 18 deletions
diff --git a/HISTORY b/HISTORY
index 86e104b..613cb11 100644
--- a/HISTORY
+++ b/HISTORY
@@ -18,6 +18,7 @@ new:
- Commit menu_category_recsdone.diff by tomas & louis @vdr-portal.de
http://www.vdr-portal.de/board1-news/board2-vdr-news/p1271995-skindesigner-1-0-0-neuer-default-skin-estuary4vdr/#post1271995
- Commit 0001-revert-seperate-status-thread.diff by TomJoad@vdr-portal.de
+- Commit 0002-fix-incorrect-lock-sequences.diff by TomJoad@vdr-portal.de
http://www.vdr-portal.de/board17-developer/board21-vdr-plugins/p1291452-epgsearch-f%C3%BCr-vdr-2-3-x/#post1291452
2013-03-xx; Version 1.0.1 - maintenance release
diff --git a/HISTORY.DE b/HISTORY.DE
index c2a868e..65a90d1 100644
--- a/HISTORY.DE
+++ b/HISTORY.DE
@@ -18,6 +18,7 @@ neu:
- Anwenden menu_category_recsdone.diff von tomas & louis @vdr-portal.de
http://www.vdr-portal.de/board1-news/board2-vdr-news/p1271995-skindesigner-1-0-0-neuer-default-skin-estuary4vdr/#post1271995
- Anwenden 0001-revert-seperate-status-thread.diff von TomJoad@vdr-portal.de
+- Anwenden 0002-fix-incorrect-lock-sequences.diff von TomJoad@vdr-portal.de
http://www.vdr-portal.de/board17-developer/board21-vdr-plugins/p1291452-epgsearch-f%C3%BCr-vdr-2-3-x/#post1291452
2013-03-xx: Version 1.0.1 - Maintenance Release
diff --git a/epgsearchext.c b/epgsearchext.c
index 844c789..28ea0b5 100644
--- a/epgsearchext.c
+++ b/epgsearchext.c
@@ -1025,10 +1025,13 @@ cSearchResults* cSearchExt::Run(int PayTVMode, bool inspectTimerMargin, int eval
const cSchedules *schedules;
#if VDRVERSNUM > 20300
+ LOCK_CHANNELS_READ; // Channels must be locked first
+ const cChannels *vdrchannels = Channels;
LOCK_SCHEDULES_READ;
schedules = Schedules;
#else
cSchedulesLock schedulesLock;
+ cChannels *vdrchannels = &Channels;
schedules = cSchedules::Schedules(schedulesLock);
#endif
if(!schedules) {
@@ -1048,12 +1051,6 @@ cSearchResults* cSearchExt::Run(int PayTVMode, bool inspectTimerMargin, int eval
cSearchResults* pBlacklistResults = GetBlacklistEvents(inspectTimerMargin?MarginStop:0);
int counter = 0;
-#if VDRVERSNUM > 20300
- LOCK_CHANNELS_READ;
- const cChannels *vdrchannels = Channels;
-#else
- cChannels *vdrchannels = &Channels;
-#endif
while (Schedule) {
const cChannel* channel = vdrchannels->GetByChannelID(Schedule->ChannelID(),true,true);
if (!channel)
diff --git a/menu_dirselect.c b/menu_dirselect.c
index 3064c09..5bbcb6a 100644
--- a/menu_dirselect.c
+++ b/menu_dirselect.c
@@ -133,9 +133,12 @@ void cMenuDirSelect::CreateDirSet(bool extraDirs)
// add distinct directories from current recordings
#if VDRVERSNUM > 20300
+ LOCK_TIMERS_READ;
+ const cTimers *vdrtimers = Timers;
LOCK_RECORDINGS_READ;
const cRecordings *vdrrecordings = Recordings;
#else
+ const cTimers *vdrtimers = &Timers;
cRecordings *vdrrecordings = &Recordings;
if (Recordings.Count() == 0)
Recordings.Load();
@@ -162,12 +165,6 @@ void cMenuDirSelect::CreateDirSet(bool extraDirs)
}
}
// add distinct directories from current timers
-#if VDRVERSNUM > 20300
- LOCK_TIMERS_READ;
- const cTimers *vdrtimers = Timers;
-#else
- const cTimers *vdrtimers = &Timers;
-#endif
for (const cTimer *timer = vdrtimers->First(); timer; timer = vdrtimers->Next(timer))
{
char* dir = strdup(timer->File());
diff --git a/menu_event.c b/menu_event.c
index 7c29114..d9c92f7 100644
--- a/menu_event.c
+++ b/menu_event.c
@@ -85,9 +85,12 @@ void cMenuEventSearch::Set()
if (event)
{
#if VDRVERSNUM > 20300
+ LOCK_TIMERS_READ;
+ const cTimers *vdrtimers = Timers;
LOCK_CHANNELS_READ;
const cChannels *vdrchannels = Channels;
#else
+ cTimers *vdrtimers = &Timers;
cChannels *vdrchannels = &Channels;
#endif
const cChannel *channel = vdrchannels->GetByChannelID(event->ChannelID(), true, true);
@@ -102,12 +105,6 @@ void cMenuEventSearch::Set()
cEventObj* eventObjNext = GetNext(event);
eTimerMatch timerMatch = tmNone;
-#if VDRVERSNUM > 20300
- LOCK_TIMERS_READ;
- const cTimers *vdrtimers = Timers;
-#else
- cTimers *vdrtimers = &Timers;
-#endif
vdrtimers->GetMatch(event, &timerMatch);
const char* szRed = trVDR("Button$Record");
if (timerMatch == tmFull)