diff -u vdr-1.3.22/pat.c vdr-1.3.22.patch/pat.c --- vdr-1.3.22/pat.c 2005-01-25 22:02:11.000000000 +0100 +++ vdr-1.3.22.patch/pat.c 2005-03-27 19:46:45.000000000 +0200 @@ -234,6 +234,7 @@ pmtPid = 0; lastPmtScan = 0; numPmtEntries = 0; + endOfScan = false; Set(0x00, 0x00); // PAT } @@ -244,11 +245,13 @@ pmtPid = 0; lastPmtScan = 0; numPmtEntries = 0; + endOfScan = false; } void cPatFilter::Trigger(void) { numPmtEntries = 0; + endOfScan=false; } bool cPatFilter::PmtVersionChanged(int PmtPid, int Sid, int Version) @@ -290,10 +293,10 @@ if (Index++ == pmtIndex) { pmtPid = assoc.getPid(); Add(pmtPid, 0x02); - break; } } } + num=Index; if (!pmtPid) pmtIndex = 0; } @@ -409,5 +412,7 @@ } lastPmtScan = 0; // this triggers the next scan Channels.Unlock(); + if (num==numPmtEntries) + endOfScan = true; } } diff -u vdr-1.3.22/pat.h vdr-1.3.22.patch/pat.h --- vdr-1.3.22/pat.h 2004-03-07 17:22:01.000000000 +0100 +++ vdr-1.3.22.patch/pat.h 2005-03-27 19:46:45.000000000 +0200 @@ -23,10 +23,13 @@ uint64_t pmtVersion[MAXPMTENTRIES]; int numPmtEntries; bool PmtVersionChanged(int PmtPid, int Sid, int Version); + int num; + bool endOfScan; protected: virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length); public: cPatFilter(void); + bool EndOfScan(void) {return endOfScan; }; virtual void SetStatus(bool On); void Trigger(void); };