diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2003-03-19 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2003-03-19 18:00:00 +0100 |
commit | b60eda5a8e8a9b9b96a90016fd27c03cd3f1ec8b (patch) | |
tree | 2249deb285b81b32994195a344e38df4ddc37be0 /eit.c | |
parent | b6e4637356502e707fdfc4b97ed1856e08de3df1 (diff) | |
download | vdr-patch-lnbsharing-b60eda5a8e8a9b9b96a90016fd27c03cd3f1ec8b.tar.gz vdr-patch-lnbsharing-b60eda5a8e8a9b9b96a90016fd27c03cd3f1ec8b.tar.bz2 |
Version 1.1.26vdr-1.1.26
- Removed signal handling and usleep(5000) from cDvbOsd::Cmd() (apparently this
is no longer necessary with DVB driver 1.0.0pre2 or later).
- If the primary device (as defined in setup.conf) doesn't have an MPEG decoder
(and thus can't be used as a primary device) VDR now scans all devices at
startup and uses the first one (if any) that actually has an MPEG decoder.
That way this will also work automatically if the primary device is implemented
by a plugin.
- Fixed a possible deadlock when using the "Blue" button in the "Schedules" menu
to switch to an other channel (thanks to Torsten Herz).
- Fixed the EPG bugfix code number for the MAX_USEFUL_SUBTITLE_LENGTH fix (thanks to
Torsten Herz for reporting this one).
- Modified the EPG scanner to avoid CPU load peaks (thanks to Steffen Becker for
reporting this one).
- Fixed support for Viaccess CAMs (thanks to Axel Gruber for helping to debug this).
Diffstat (limited to 'eit.c')
-rw-r--r-- | eit.c | 11 |
1 files changed, 4 insertions, 7 deletions
@@ -16,7 +16,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: eit.c 1.65 2003/02/02 15:41:03 kls Exp $ + * $Id: eit.c 1.67 2003/03/16 11:20:05 kls Exp $ ***************************************************************************/ #include "eit.h" @@ -607,7 +607,7 @@ void cEventInfo::FixEpgBugs(void) free(pExtendedDescription); pExtendedDescription = pSubtitle; pSubtitle = NULL; - EpgBugFixStat(5, GetChannelID()); + EpgBugFixStat(6, GetChannelID()); } } @@ -1250,12 +1250,13 @@ void cSIProcessor::Action() if (seclen == r) { //dsyslog("Received pid 0x%04X with table ID 0x%02X and length of %4d\n", pid, buf[0], seclen); + cMutexLock MutexLock(&schedulesMutex); // since the xMem... stuff is not thread safe, we need to use a "global" mutex + LOCK_THREAD; switch (pid) { case 0x00: if (buf[0] == 0x00) { - LOCK_THREAD; if (pmtPid && time(NULL) - lastPmtScan > PMT_SCAN_TIMEOUT) { DelFilter(pmtPid, 0x02); pmtPid = 0; @@ -1263,7 +1264,6 @@ void cSIProcessor::Action() lastPmtScan = time(NULL); } if (!pmtPid) { - cMutexLock MutexLock(&schedulesMutex); // since the xMem... stuff is not thread safe, we need to use a "global" mutex struct LIST *pat = siParsePAT(buf); if (pat) { int Index = 0; @@ -1301,7 +1301,6 @@ void cSIProcessor::Action() case 0x12: if (buf[0] != 0x72) { - cMutexLock MutexLock(&schedulesMutex); cEIT ceit(buf, seclen, schedules); ceit.ProcessEIT(buf, currentSource); } @@ -1310,9 +1309,7 @@ void cSIProcessor::Action() break; default: { - LOCK_THREAD; if (pid == pmtPid && buf[0] == 0x02 && currentSource && currentTransponder) { - cMutexLock MutexLock(&schedulesMutex); // since the xMem... stuff is not thread safe, we need to use a "global" mutex struct Pid *pi = siParsePMT(buf); if (pi) { for (struct LIST *d = (struct LIST *)pi->Descriptors; d; d = (struct LIST *)xSucc(d)) { |