summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pat.c10
-rw-r--r--vdrttxtsubshooks.c2
-rw-r--r--vdrttxtsubshooks.h4
3 files changed, 15 insertions, 1 deletions
diff --git a/pat.c b/pat.c
index d001633..2848822 100644
--- a/pat.c
+++ b/pat.c
@@ -13,6 +13,7 @@
#include "libsi/section.h"
#include "libsi/descriptor.h"
#include "thread.h"
+#include "vdrttxtsubshooks.h"
#define PMT_SCAN_TIMEOUT 10 // seconds
@@ -458,6 +459,15 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
if (Setup.UpdateChannels >= 2) {
Channel->SetPids(Vpid, Ppid, Vtype, Apids, ALangs, Dpids, DLangs, Spids, SLangs, Tpid);
+ if (NumTPages < MAXTPAGES) {
+ int manualPageNumber = cVDRTtxtsubsHookListener::Hook()->ManualPageNumber(Channel);
+ if (manualPageNumber) {
+ char *s = TLangs[NumTPages];
+ strn0cpy(s, "man", MAXLANGCODE1);
+ TPages[NumTPages] = manualPageNumber;
+ NumTPages++;
+ }
+ }
Channel->SetTPidData(TLangs, TPages);
Channel->SetCaIds(CaDescriptors->CaIds());
}
diff --git a/vdrttxtsubshooks.c b/vdrttxtsubshooks.c
index 081d107..01f5b5e 100644
--- a/vdrttxtsubshooks.c
+++ b/vdrttxtsubshooks.c
@@ -38,6 +38,8 @@ class cVDRTtxtsubsHookProxy : public cVDRTtxtsubsHookListener
{ if(gListener) gListener->PlayerTeletextData(p, length, IsPesRecording); };
virtual cTtxtSubsRecorderBase *NewTtxtSubsRecorder(cDevice *dev, const cChannel *ch)
{ if(gListener) return gListener->NewTtxtSubsRecorder(dev, ch); else return NULL; };
+ virtual int ManualPageNumber(const cChannel *channel)
+ { if(gListener) return gListener->ManualPageNumber(channel); else return 0; };
};
diff --git a/vdrttxtsubshooks.h b/vdrttxtsubshooks.h
index 5d3b7df..9f2eac2 100644
--- a/vdrttxtsubshooks.h
+++ b/vdrttxtsubshooks.h
@@ -41,12 +41,14 @@ class cVDRTtxtsubsHookListener {
virtual ~cVDRTtxtsubsHookListener();
void HookAttach(void);
-
+
virtual void HideOSD(void) {};
virtual void ShowOSD(void) {};
virtual void PlayerTeletextData(uint8_t *p, int length, bool IsPesRecording = true) {};
virtual cTtxtSubsRecorderBase *NewTtxtSubsRecorder(cDevice *dev, const cChannel *ch)
{ return NULL; };
+ virtual int ManualPageNumber(const cChannel *channel)
+ { return 0; };
// used by VDR to call hook listeners
static cVDRTtxtsubsHookListener *Hook(void);