Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: DVB-T UK and odd new drivers problems (was: RTL-group replayproblems)



Gregor Lawatscheck wrote:
> 
> ...
> >- Blue button crashes (in a non-self restarting kind of way) vdr when used
> >in the channel
> >  list "switch" context. This *really* annoys the wife.

Please try this patch - it should fix the blue button crash
(thanks to Torsten Herz <torsten.herz@web.de>):

--- eit.c       2003/02/02 15:41:03     1.65
+++ eit.c       2003/03/16 11:14:35     1.66
@@ -1250,12 +1250,13 @@
                   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 @@
                                  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 @@
                         case 0x12:
                            if (buf[0] != 0x72)
                            {
-                              cMutexLock MutexLock(&schedulesMutex);
                               cEIT ceit(buf, seclen, schedules);
                               ceit.ProcessEIT(buf, currentSource);
                            }
@@ -1310,9 +1309,7 @@
                            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)) {
-- 
_______________________________________________________________

Klaus Schmidinger                       Phone: +49-8635-6989-10
CadSoft Computer GmbH                   Fax:   +49-8635-6989-40
Hofmark 2                               Email:   kls@cadsoft.de
D-84568 Pleiskirchen, Germany           URL:     www.cadsoft.de
_______________________________________________________________


-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index