summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Grimm <tobias@e-tobi.loc>2009-04-25 19:56:42 +0200
committerTobias Grimm <tobias@e-tobi.loc>2009-06-20 18:17:43 +0200
commit61ea36dc9f402d0218d5cec06b0d583920509b68 (patch)
tree5f91dde7abedd32104bd9a8479ef78fbe7f9ebac
parentb2285463adc98dd6a6770e6869fa849b3b711157 (diff)
downloadvdr-patches-61ea36dc9f402d0218d5cec06b0d583920509b68.tar.gz
vdr-patches-61ea36dc9f402d0218d5cec06b0d583920509b68.tar.bz2
ttxtsubs: Use the manual page number if available
-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);