From 3f8883dfcd30c97b6acdfc52441d8cd012438b8d Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Wed, 30 Dec 2009 15:19:57 +0100 Subject: [PATCH] vdr: - update to vdr-1.7.10 --- ...ons.diff => 10_vdr-1.7.10_extensions.diff} | 2843 +++++++---------- .../patches/vdr-1.7.9-include_stdarg.h.diff | 11 - .../vdr/patches/vdr-1.7.9-linux_2.6.32.diff | 14 - ....7.9-uClibc-no_canonicalize_file_name.diff | 13 - .../vdr-1.7.9-uClibc_pthread_rwlock.diff | 25 - packages/multimedia/vdr/url | 2 +- 6 files changed, 1206 insertions(+), 1702 deletions(-) rename packages/multimedia/vdr/patches/{10_vdr-1.7.9_extensions.diff => 10_vdr-1.7.10_extensions.diff} (88%) delete mode 100644 packages/multimedia/vdr/patches/vdr-1.7.9-include_stdarg.h.diff delete mode 100644 packages/multimedia/vdr/patches/vdr-1.7.9-linux_2.6.32.diff delete mode 100644 packages/multimedia/vdr/patches/vdr-1.7.9-uClibc-no_canonicalize_file_name.diff delete mode 100644 packages/multimedia/vdr/patches/vdr-1.7.9-uClibc_pthread_rwlock.diff diff --git a/packages/multimedia/vdr/patches/10_vdr-1.7.9_extensions.diff b/packages/multimedia/vdr/patches/10_vdr-1.7.10_extensions.diff similarity index 88% rename from packages/multimedia/vdr/patches/10_vdr-1.7.9_extensions.diff rename to packages/multimedia/vdr/patches/10_vdr-1.7.10_extensions.diff index 395324bd3b..db800268f2 100644 --- a/packages/multimedia/vdr/patches/10_vdr-1.7.9_extensions.diff +++ b/packages/multimedia/vdr/patches/10_vdr-1.7.10_extensions.diff @@ -1,6 +1,6 @@ -diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c ---- vdr-1.7.9/channels.c 2009-08-16 17:08:49.000000000 +0200 -+++ vdr-1.7.9-extensions/channels.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/channels.c vdr-1.7.10b/channels.c +--- vdr-1.7.10/channels.c 2009-08-30 13:25:50.000000000 +0200 ++++ vdr-1.7.10b/channels.c 2009-12-30 11:33:26.000000000 +0100 @@ -13,6 +13,9 @@ #include "device.h" #include "epg.h" @@ -21,16 +21,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__); inversion = INVERSION_AUTO; bandwidth = 8000000; -@@ -202,7 +208,7 @@ - modification = CHANNELMOD_NONE; - schedule = NULL; - linkChannels = NULL; -- refChannel = NULL; -+ refChannels = NULL; - } - - cChannel::cChannel(const cChannel &Channel) -@@ -211,34 +217,38 @@ +@@ -211,6 +217,9 @@ shortName = NULL; provider = NULL; portalName = NULL; @@ -39,44 +30,8 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c +#endif /* PLUGINPARAM */ schedule = NULL; linkChannels = NULL; -- refChannel = NULL; -+ refChannels = NULL; - *this = Channel; - } - - cChannel::~cChannel() - { -- delete linkChannels; -- linkChannels = NULL; // more than one channel can link to this one, so we need the following loop -- for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { -- if (Channel->linkChannels) { -- for (cLinkChannel *lc = Channel->linkChannels->First(); lc; lc = Channel->linkChannels->Next(lc)) { -- if (lc->Channel() == this) { -- Channel->linkChannels->Del(lc); -- break; -- } -- } -- if (Channel->linkChannels->Count() == 0) { -- delete Channel->linkChannels; -- Channel->linkChannels = NULL; -- } -- } -- } -+ if (linkChannels) { -+ // in all channels which we link to remove the reference to us -+ for (cLinkChannel *lc = linkChannels->First(); lc; lc = linkChannels->Next(lc)) -+ lc->Channel()->DelRefChannel(this); -+ delete linkChannels; -+ linkChannels = NULL; -+ } -+ if (refChannels) { -+ // in all channels which reference us remove their link to us -+ for (cLinkChannel *lc = refChannels->First(); lc; lc = refChannels->Next(lc)) -+ lc->Channel()->DelLinkChannel(this); -+ delete refChannels; -+ refChannels = NULL; -+ } - free(name); + refChannel = NULL; +@@ -239,6 +248,9 @@ free(shortName); free(provider); free(portalName); @@ -86,7 +41,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c } cChannel& cChannel::operator= (const cChannel &Channel) -@@ -247,6 +257,9 @@ +@@ -247,6 +259,9 @@ shortName = strcpyrealloc(shortName, Channel.shortName); provider = strcpyrealloc(provider, Channel.provider); portalName = strcpyrealloc(portalName, Channel.portalName); @@ -96,7 +51,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c memcpy(&__BeginData__, &Channel.__BeginData__, (char *)&Channel.__EndData__ - (char *)&Channel.__BeginData__); return *this; } -@@ -306,6 +319,9 @@ +@@ -306,6 +321,9 @@ guard = Channel->guard; hierarchy = Channel->hierarchy; rollOff = Channel->rollOff; @@ -106,7 +61,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c } } -@@ -343,6 +359,24 @@ +@@ -343,6 +361,24 @@ return true; } @@ -131,7 +86,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c bool cChannel::SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH) { if (source != Source || frequency != Frequency || modulation != Modulation || srate != Srate || coderateH != CoderateH) { -@@ -413,6 +447,9 @@ +@@ -413,6 +449,9 @@ if (nn || ns || np) { if (Number()) { dsyslog("changing name of channel %d from '%s,%s;%s' to '%s,%s;%s'", Number(), name, shortName, provider, Name, ShortName, Provider); @@ -141,7 +96,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c modification |= CHANNELMOD_NAME; Channels.SetModified(); } -@@ -438,6 +475,20 @@ +@@ -438,6 +477,20 @@ } } @@ -162,7 +117,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c #define STRDIFF 0x01 #define VALDIFF 0x02 -@@ -549,6 +600,17 @@ +@@ -550,6 +603,17 @@ } } @@ -180,67 +135,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c void cChannel::SetCaIds(const int *CaIds) { if (caids[0] && caids[0] <= CA_USER_MAX) -@@ -604,7 +666,7 @@ - q += sprintf(q, "linking channel %d from", Number()); - if (linkChannels) { - for (cLinkChannel *lc = linkChannels->First(); lc; lc = linkChannels->Next(lc)) { -- lc->Channel()->SetRefChannel(NULL); -+ lc->Channel()->DelRefChannel(this); - q += sprintf(q, " %d", lc->Channel()->Number()); - } - delete linkChannels; -@@ -615,7 +677,7 @@ - linkChannels = LinkChannels; - if (linkChannels) { - for (cLinkChannel *lc = linkChannels->First(); lc; lc = linkChannels->Next(lc)) { -- lc->Channel()->SetRefChannel(this); -+ lc->Channel()->AddRefChannel(this); - q += sprintf(q, " %d", lc->Channel()->Number()); - //dsyslog("link %4d -> %4d: %s", Number(), lc->Channel()->Number(), lc->Channel()->Name()); - } -@@ -625,9 +687,39 @@ - dsyslog(buffer); - } - --void cChannel::SetRefChannel(cChannel *RefChannel) -+void cChannel::AddRefChannel(cChannel *RefChannel) -+{ -+ if (!refChannels) -+ refChannels = new cLinkChannels; -+ refChannels->Add(new cLinkChannel(RefChannel)); -+} -+ -+void cChannel::DelRefChannel(cChannel *RefChannel) -+{ -+ for (cLinkChannel *lc = refChannels->First(); lc; lc = refChannels->Next(lc)) { -+ if (lc->Channel() == RefChannel) { -+ refChannels->Del(lc); -+ if (refChannels->Count() <= 0) { -+ delete refChannels; -+ refChannels = NULL; -+ } -+ return; -+ } -+ } -+} -+ -+void cChannel::DelLinkChannel(cChannel *LinkChannel) - { -- refChannel = RefChannel; -+ for (cLinkChannel *lc = linkChannels->First(); lc; lc = linkChannels->Next(lc)) { -+ if (lc->Channel() == LinkChannel) { -+ linkChannels->Del(lc); -+ if (linkChannels->Count() <= 0) { -+ delete linkChannels; -+ linkChannels = NULL; -+ } -+ return; -+ } -+ } - } - - static int PrintParameter(char *p, char Name, int Value) -@@ -648,7 +740,11 @@ +@@ -651,7 +715,11 @@ if (isdigit(type)) type = 'S'; #define ST(s) if (strchr(s, type)) @@ -252,7 +147,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c char *q = buffer; *q = 0; ST(" S ") q += sprintf(q, "%c", polarization); -@@ -662,6 +758,9 @@ +@@ -665,6 +733,9 @@ ST(" S ") q += PrintParameter(q, 'S', MapToUser(system, SystemValues)); ST(" T") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues)); ST(" T") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues)); @@ -262,7 +157,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c return buffer; } -@@ -690,7 +789,11 @@ +@@ -693,7 +764,11 @@ bool cChannel::StringToParameters(const char *s) { @@ -274,7 +169,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c switch (toupper(*s)) { case 'A': s = SkipDigits(s); break; // for compatibility with the "multiproto" approach - may be removed in future versions case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break; -@@ -808,7 +911,11 @@ +@@ -811,7 +886,11 @@ dpids[0] = 0; ok = false; if (parambuf && sourcebuf && vpidbuf && apidbuf) { @@ -286,7 +181,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c char *p; if ((p = strchr(vpidbuf, '=')) != NULL) { -@@ -903,6 +1010,9 @@ +@@ -906,6 +985,9 @@ shortName = strcpyrealloc(shortName, p); } name = strcpyrealloc(name, namebuf); @@ -296,89 +191,7 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c free(parambuf); free(sourcebuf); -@@ -981,14 +1091,72 @@ - return false; - } - -+void cChannels::ClearChannelHashes(void) -+{ -+ channelsHashSid.Clear(); -+ channelsHashNidTid.Clear(); -+} -+ - void cChannels::HashChannel(cChannel *Channel) - { - channelsHashSid.Add(Channel, Channel->Sid()); -+ channelsHashNidTid.Add(Channel, HashKeyNidTid(Channel->Nid(), Channel->Tid())); - } - - void cChannels::UnhashChannel(cChannel *Channel) - { - channelsHashSid.Del(Channel, Channel->Sid()); -+ channelsHashNidTid.Del(Channel, HashKeyNidTid(Channel->Nid(), Channel->Tid())); -+} -+ -+unsigned int cChannels::HashKeyNidTid(unsigned short Nid, unsigned short Tid) -+{ -+ return Nid << 16 | Tid; -+} -+ -+cIterator cChannels::GetChannelsBySourceNidTid(int Source, unsigned short Nid, unsigned short Tid) -+{ -+ class cIteratorImplSourceNidTid : public cIteratorImpl { -+ private: -+ cList *hashList; -+ cHashObject *current; -+ int source; -+ unsigned short nid; -+ unsigned short tid; -+ cChannel *FindMatchingChannel(bool reverse, bool reset = false) { -+ if (!hashList || (!current && !reset)) -+ return NULL; -+ while (true) { -+ if (reset) { -+ reset = false; -+ current = reverse ? hashList->Last() : hashList->First(); -+ } -+ else -+ current = reverse ? hashList->Prev(current) : hashList->Next(current); -+ if (!current) -+ break; -+ cChannel *Channel = (cChannel *)current->Object(); -+ if (Channel->Source() == source && Channel->Nid() == nid && Channel->Tid() == tid) -+ return Channel; -+ } -+ return NULL; -+ } -+ public: -+ cIteratorImplSourceNidTid(cList *HashList, int Source, unsigned short Nid, unsigned short Tid) { -+ hashList = HashList; -+ source = Source; -+ nid = Nid; -+ tid = Tid; -+ current = NULL; -+ } -+ virtual void *First(void) { return FindMatchingChannel(false, true); } -+ virtual void *Last(void) { return FindMatchingChannel(true, true); } -+ virtual void *Prev(void) { return FindMatchingChannel(true); } -+ virtual void *Next(void) { return FindMatchingChannel(false); } -+ virtual void *Current(void) const { return current ? (cChannel *)current->Object() : NULL; } -+ }; -+ -+ return cIterator(new cIteratorImplSourceNidTid(channelsHashNidTid.GetList(HashKeyNidTid(Nid, Tid)), Source, Nid, Tid)); - } - - int cChannels::GetNextGroup(int Idx) -@@ -1025,7 +1193,7 @@ - - void cChannels::ReNumber(void) - { -- channelsHashSid.Clear(); -+ ClearChannelHashes(); - maxNumber = 0; - int Number = 1; - for (cChannel *channel = First(); channel; channel = Next(channel)) { -@@ -1148,6 +1316,9 @@ +@@ -1151,6 +1233,9 @@ NewChannel->SetName(Name, ShortName, Provider); Add(NewChannel); ReNumber(); @@ -388,9 +201,9 @@ diff -u --recursive vdr-1.7.9/channels.c vdr-1.7.9-extensions/channels.c return NewChannel; } return NULL; -diff -u --recursive vdr-1.7.9/channels.h vdr-1.7.9-extensions/channels.h ---- vdr-1.7.9/channels.h 2009-08-16 16:58:26.000000000 +0200 -+++ vdr-1.7.9-extensions/channels.h 2009-08-23 18:31:40.000000000 +0200 +diff -Naur vdr-1.7.10/channels.h vdr-1.7.10b/channels.h +--- vdr-1.7.10/channels.h 2009-08-30 13:05:54.000000000 +0200 ++++ vdr-1.7.10b/channels.h 2009-12-30 11:33:26.000000000 +0100 @@ -35,6 +35,9 @@ #define MAXDPIDS 16 // dolby (AC3 + DTS) #define MAXSPIDS 32 // subtitles @@ -422,22 +235,7 @@ diff -u --recursive vdr-1.7.9/channels.h vdr-1.7.9-extensions/channels.h int caids[MAXCAIDS + 1]; // list is zero-terminated int nid; int tid; -@@ -155,10 +165,13 @@ - int modification; - mutable const cSchedule *schedule; - cLinkChannels *linkChannels; -- cChannel *refChannel; -+ cLinkChannels *refChannels; - cString TransponderDataToString(void) const; - cString ParametersToString(void) const; - bool StringToParameters(const char *s); -+ void AddRefChannel(cChannel *RefChannel); -+ void DelRefChannel(cChannel *RefChannel); -+ void DelLinkChannel(cChannel *RefChannel); - public: - cChannel(void); - cChannel(const cChannel &Channel); -@@ -174,6 +187,9 @@ +@@ -174,6 +184,9 @@ int Frequency(void) const { return frequency; } ///< Returns the actual frequency, as given in 'channels.conf' int Transponder(void) const; ///< Returns the transponder frequency in MHz, plus the polarization in case of sat static int Transponder(int Frequency, char Polarization); ///< builds the transponder from the given Frequency and Polarization @@ -447,9 +245,9 @@ diff -u --recursive vdr-1.7.9/channels.h vdr-1.7.9-extensions/channels.h int Source(void) const { return source; } int Srate(void) const { return srate; } int Vpid(void) const { return vpid; } -@@ -192,6 +208,10 @@ - uint16_t CompositionPageId(int i) const { return (0 <= i && i < MAXSPIDS ? compositionPageIds[i] : 0); } - uint16_t AncillaryPageId(int i) const { return (0 <= i && i < MAXSPIDS ? ancillaryPageIds[i] : 0); } +@@ -192,6 +205,10 @@ + uint16_t CompositionPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? compositionPageIds[i] : 0; } + uint16_t AncillaryPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? ancillaryPageIds[i] : 0; } int Tpid(void) const { return tpid; } +#ifdef USE_TTXTSUBS + const char *Tlang(int i) const { return (0 <= i && i < MAXTPAGES) ? tlangs[i] : ""; } @@ -458,104 +256,42 @@ diff -u --recursive vdr-1.7.9/channels.h vdr-1.7.9-extensions/channels.h const int *Caids(void) const { return caids; } int Ca(int Index = 0) const { return Index < MAXCAIDS ? caids[Index] : 0; } int Nid(void) const { return nid; } -@@ -213,7 +233,11 @@ - int Hierarchy(void) const { return hierarchy; } +@@ -214,6 +231,9 @@ int RollOff(void) const { return rollOff; } const cLinkChannels* LinkChannels(void) const { return linkChannels; } -- const cChannel *RefChannel(void) const { return refChannel; } -+ const cChannel *RefChannel(void) const { return refChannels ? refChannels->Last()->Channel() : 0; } -+ const cLinkChannels* RefChannels(void) const { return refChannels; } + const cChannel *RefChannel(void) const { return refChannel; } +#ifdef USE_PLUGINPARAM + bool IsPlug(void) const { return cSource::IsPlug(source); } +#endif /* PLUGINPARAM */ bool IsCable(void) const { return cSource::IsCable(source); } bool IsSat(void) const { return cSource::IsSat(source); } bool IsTerr(void) const { return cSource::IsTerr(source); } -@@ -221,18 +245,60 @@ +@@ -221,13 +241,22 @@ bool HasTimer(void) const; int Modification(int Mask = CHANNELMOD_ALL); void CopyTransponderData(const cChannel *Channel); -+ #ifdef USE_PLUGINPARAM -+ bool SetPlugTransponderData(int Source, int Frequency, const char *PluginParam); -+ #endif /* PLUGINPARAM */ ++#ifdef USE_PLUGINPARAM ++ bool SetPlugTransponderData(int Source, int Frequency, const char *PluginParam); ++#endif /* PLUGINPARAM */ bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff); bool SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH); bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission); void SetId(int Nid, int Tid, int Sid, int Rid = 0); void SetName(const char *Name, const char *ShortName, const char *Provider); void SetPortalName(const char *PortalName); -+ #ifdef USE_PLUGINPARAM -+ void SetPluginParam(const char *PluginParam); -+ #endif /* PLUGINPARAM */ ++#ifdef USE_PLUGINPARAM ++ void SetPluginParam(const char *PluginParam); ++#endif /* PLUGINPARAM */ void SetPids(int Vpid, int Ppid, int Vtype, int *Apids, char ALangs[][MAXLANGCODE2], int *Dpids, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid); -+ #ifdef USE_TTXTSUBS -+ void SetTPidData(char TLangs[][MAXLANGCODE2], int TPages[]); -+ #endif /* TTXTSUBS */ ++#ifdef USE_TTXTSUBS ++ void SetTPidData(char TLangs[][MAXLANGCODE2], int TPages[]); ++#endif /* TTXTSUBS */ void SetCaIds(const int *CaIds); // list must be zero-terminated void SetCaDescriptors(int Level); void SetLinkChannels(cLinkChannels *LinkChannels); -- void SetRefChannel(cChannel *RefChannel); - void SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *CompositionPageIds, uint16_t *AncillaryPageIds); -+ }; -+ -+ class cIteratorImpl { -+ private: -+ int refCount; -+ cIteratorImpl(const cIteratorImpl &); -+ const cIteratorImpl &operator =(const cIteratorImpl &); -+ public: -+ cIteratorImpl(void) { refCount = 0; } -+ virtual ~cIteratorImpl() {} -+ virtual int AddRef(void) { return ++refCount; } -+ virtual int DelRef(void) { int RefCount = --refCount; if (RefCount <= 0) delete this; return RefCount; } -+ virtual void *First(void) = 0; -+ virtual void *Last(void) = 0; -+ virtual void *Prev(void) = 0; -+ virtual void *Next(void) = 0; -+ virtual void *Current(void) const = 0; -+ }; -+ -+ template class cIterator -+ { -+ private: -+ cIteratorImpl *impl; -+ public: -+ cIterator(cIteratorImpl *Impl) { impl = Impl; impl->AddRef(); } -+ cIterator(const cIterator &rhs) { impl = rhs.impl; impl->AddRef(); } -+ ~cIterator() { impl->DelRef(); } -+ const cIterator &operator =(const cIterator &rhs) { rhs.impl->AddRef(); impl->DelRef(); impl = rhs.impl; return *this; } -+ T *First(void) const { return (T *)impl->First(); } -+ T *Last(void) const { return (T *)impl->Last(); } -+ T *Prev(void) const { return (T *)impl->Prev(); } -+ T *Next(void) const { return (T *)impl->Next(); } -+ T *Current(void) const { return (T *)impl->Current(); } -+ - }; - - class cChannels : public cRwLock, public cConfig { -@@ -241,7 +307,10 @@ - int modified; - int beingEdited; - cHash channelsHashSid; -+ cHash channelsHashNidTid; - void DeleteDuplicateChannels(void); -+ void ClearChannelHashes(void); -+ static unsigned int HashKeyNidTid(unsigned short Nid, unsigned short Tid); - public: - cChannels(void); - bool Load(const char *FileName, bool AllowComments = false, bool MustExist = false); -@@ -256,6 +325,7 @@ - cChannel *GetByServiceID(int Source, int Transponder, unsigned short ServiceID); - cChannel *GetByChannelID(tChannelID ChannelID, bool TryWithoutRid = false, bool TryWithoutPolarization = false); - cChannel *GetByTransponderID(tChannelID ChannelID); -+ cIterator GetChannelsBySourceNidTid(int Source, unsigned short Nid, unsigned short Tid); - int BeingEdited(void) { return beingEdited; } - void IncBeingEdited(void) { beingEdited++; } - void DecBeingEdited(void) { beingEdited--; } -Nur in vdr-1.7.9-extensions: channels.h~. -diff -u --recursive vdr-1.7.9/config.c vdr-1.7.9-extensions/config.c ---- vdr-1.7.9/config.c 2009-06-13 12:25:05.000000000 +0200 -+++ vdr-1.7.9-extensions/config.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/config.c vdr-1.7.10b/config.c +--- vdr-1.7.10/config.c 2009-06-13 12:25:05.000000000 +0200 ++++ vdr-1.7.10b/config.c 2009-12-30 11:33:26.000000000 +0100 @@ -15,6 +15,9 @@ #include "interface.h" #include "plugin.h" @@ -1221,9 +957,9 @@ diff -u --recursive vdr-1.7.9/config.c vdr-1.7.9-extensions/config.c +} +#endif /* CMDRECCMDI18N */ + -diff -u --recursive vdr-1.7.9/config.h vdr-1.7.9-extensions/config.h ---- vdr-1.7.9/config.h 2009-06-21 12:02:49.000000000 +0200 -+++ vdr-1.7.9-extensions/config.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/config.h vdr-1.7.10b/config.h +--- vdr-1.7.10/config.h 2009-08-29 14:47:03.000000000 +0200 ++++ vdr-1.7.10b/config.h 2009-12-30 11:33:26.000000000 +0100 @@ -36,23 +36,74 @@ // plugins to work with newer versions of the core VDR as long as no // VDR header files have changed. @@ -1521,9 +1257,9 @@ diff -u --recursive vdr-1.7.9/config.h vdr-1.7.9-extensions/config.h +#endif /* CMDRECCMDI18N */ + #endif //__CONFIG_H -diff -u --recursive vdr-1.7.9/cutter.c vdr-1.7.9-extensions/cutter.c ---- vdr-1.7.9/cutter.c 2009-04-19 12:56:33.000000000 +0200 -+++ vdr-1.7.9-extensions/cutter.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/cutter.c vdr-1.7.10b/cutter.c +--- vdr-1.7.10/cutter.c 2009-04-19 12:56:33.000000000 +0200 ++++ vdr-1.7.10b/cutter.c 2009-12-30 11:33:26.000000000 +0100 @@ -15,6 +15,19 @@ // --- cCuttingThread -------------------------------------------------------- @@ -1931,9 +1667,9 @@ diff -u --recursive vdr-1.7.9/cutter.c vdr-1.7.9-extensions/cutter.c bool result = ended; ended = false; return result; -diff -u --recursive vdr-1.7.9/cutter.h vdr-1.7.9-extensions/cutter.h ---- vdr-1.7.9/cutter.h 2002-06-22 12:03:15.000000000 +0200 -+++ vdr-1.7.9-extensions/cutter.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/cutter.h vdr-1.7.10b/cutter.h +--- vdr-1.7.10/cutter.h 2002-06-22 12:03:15.000000000 +0200 ++++ vdr-1.7.10b/cutter.h 2009-12-30 11:33:26.000000000 +0100 @@ -11,6 +11,9 @@ #define __CUTTER_H @@ -1954,9 +1690,9 @@ diff -u --recursive vdr-1.7.9/cutter.h vdr-1.7.9-extensions/cutter.h public: static bool Start(const char *FileName); static void Stop(void); -diff -u --recursive vdr-1.7.9/device.c vdr-1.7.9-extensions/device.c ---- vdr-1.7.9/device.c 2009-08-16 12:54:36.000000000 +0200 -+++ vdr-1.7.9-extensions/device.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/device.c vdr-1.7.10b/device.c +--- vdr-1.7.10/device.c 2009-11-22 14:19:03.000000000 +0100 ++++ vdr-1.7.10b/device.c 2009-12-30 11:33:26.000000000 +0100 @@ -18,6 +18,17 @@ #include "receiver.h" #include "status.h" @@ -2368,9 +2104,9 @@ diff -u --recursive vdr-1.7.9/device.c vdr-1.7.9-extensions/device.c } } Played += TS_SIZE; -diff -u --recursive vdr-1.7.9/device.h vdr-1.7.9-extensions/device.h ---- vdr-1.7.9/device.h 2009-06-06 13:15:49.000000000 +0200 -+++ vdr-1.7.9-extensions/device.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/device.h vdr-1.7.10b/device.h +--- vdr-1.7.10/device.h 2009-11-22 14:21:00.000000000 +0100 ++++ vdr-1.7.10b/device.h 2009-12-30 11:33:26.000000000 +0100 @@ -24,13 +24,22 @@ #include "spu.h" #include "thread.h" @@ -2491,9 +2227,9 @@ diff -u --recursive vdr-1.7.9/device.h vdr-1.7.9-extensions/device.h bool isPlayingVideo; protected: virtual bool CanReplay(void) const; -diff -u --recursive vdr-1.7.9/dvbdevice.c vdr-1.7.9-extensions/dvbdevice.c ---- vdr-1.7.9/dvbdevice.c 2009-06-06 13:17:20.000000000 +0200 -+++ vdr-1.7.9-extensions/dvbdevice.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/dvbdevice.c vdr-1.7.10b/dvbdevice.c +--- vdr-1.7.10/dvbdevice.c 2009-06-06 13:17:20.000000000 +0200 ++++ vdr-1.7.10b/dvbdevice.c 2009-12-30 11:33:26.000000000 +0100 @@ -71,6 +71,9 @@ class cDvbTuner : public cThread { private: @@ -2711,9 +2447,9 @@ diff -u --recursive vdr-1.7.9/dvbdevice.c vdr-1.7.9-extensions/dvbdevice.c int cDvbDevice::GetAudioChannelDevice(void) { if (HasDecoder()) { -diff -u --recursive vdr-1.7.9/dvbdevice.h vdr-1.7.9-extensions/dvbdevice.h ---- vdr-1.7.9/dvbdevice.h 2009-06-06 13:16:47.000000000 +0200 -+++ vdr-1.7.9-extensions/dvbdevice.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/dvbdevice.h vdr-1.7.10b/dvbdevice.h +--- vdr-1.7.10/dvbdevice.h 2009-10-25 14:58:20.000000000 +0100 ++++ vdr-1.7.10b/dvbdevice.h 2009-12-30 11:33:26.000000000 +0100 @@ -75,6 +75,9 @@ virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView); public: @@ -2724,9 +2460,9 @@ diff -u --recursive vdr-1.7.9/dvbdevice.h vdr-1.7.9-extensions/dvbdevice.h // PID handle facilities -diff -u --recursive vdr-1.7.9/dvbosd.c vdr-1.7.9-extensions/dvbosd.c ---- vdr-1.7.9/dvbosd.c 2007-09-16 10:55:54.000000000 +0200 -+++ vdr-1.7.9-extensions/dvbosd.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/dvbosd.c vdr-1.7.10b/dvbosd.c +--- vdr-1.7.10/dvbosd.c 2007-09-16 10:55:54.000000000 +0200 ++++ vdr-1.7.10b/dvbosd.c 2009-12-30 11:33:26.000000000 +0100 @@ -20,12 +20,26 @@ #define MAXNUMWINDOWS 7 // OSD windows are counted 1...7 #define MAXOSDMEMORY 92000 // number of bytes available to the OSD (for unmodified DVB cards) @@ -2877,9 +2613,9 @@ diff -u --recursive vdr-1.7.9/dvbosd.c vdr-1.7.9-extensions/dvbosd.c shown = true; } } -diff -u --recursive vdr-1.7.9/dvbplayer.c vdr-1.7.9-extensions/dvbplayer.c ---- vdr-1.7.9/dvbplayer.c 2009-05-31 16:12:42.000000000 +0200 -+++ vdr-1.7.9-extensions/dvbplayer.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/dvbplayer.c vdr-1.7.10b/dvbplayer.c +--- vdr-1.7.10/dvbplayer.c 2009-05-31 16:12:42.000000000 +0200 ++++ vdr-1.7.10b/dvbplayer.c 2009-12-30 11:33:26.000000000 +0100 @@ -204,6 +204,9 @@ cNonBlockingFileReader *nonBlockingFileReader; cRingBufferFrame *ringBuffer; @@ -3034,9 +2770,9 @@ diff -u --recursive vdr-1.7.9/dvbplayer.c vdr-1.7.9-extensions/dvbplayer.c // Handle hitting begin/end of recording: -diff -u --recursive vdr-1.7.9/eit.c vdr-1.7.9-extensions/eit.c ---- vdr-1.7.9/eit.c 2009-06-21 15:46:20.000000000 +0200 -+++ vdr-1.7.9-extensions/eit.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/eit.c vdr-1.7.10b/eit.c +--- vdr-1.7.10/eit.c 2009-06-21 15:46:20.000000000 +0200 ++++ vdr-1.7.10b/eit.c 2009-12-30 11:33:26.000000000 +0100 @@ -19,13 +19,40 @@ #define VALID_TIME (31536000 * 2) // two years @@ -3317,9 +3053,9 @@ diff -u --recursive vdr-1.7.9/eit.c vdr-1.7.9-extensions/eit.c if (stime(&sattim) == 0) isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(sattim), sattim); else -diff -u --recursive vdr-1.7.9/eitscan.c vdr-1.7.9-extensions/eitscan.c ---- vdr-1.7.9/eitscan.c 2006-01-07 15:10:17.000000000 +0100 -+++ vdr-1.7.9-extensions/eitscan.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/eitscan.c vdr-1.7.10b/eitscan.c +--- vdr-1.7.10/eitscan.c 2006-01-07 15:10:17.000000000 +0100 ++++ vdr-1.7.10b/eitscan.c 2009-12-30 11:33:26.000000000 +0100 @@ -151,9 +151,17 @@ if (Device->ProvidesTransponder(Channel)) { if (!Device->Receiving()) { @@ -3338,9 +3074,9 @@ diff -u --recursive vdr-1.7.9/eitscan.c vdr-1.7.9-extensions/eitscan.c cDevice::PrimaryDevice()->StopReplay(); // stop transfer mode currentChannel = Device->CurrentChannel(); Skins.Message(mtInfo, tr("Starting EPG scan")); -diff -u --recursive vdr-1.7.9/epg.c vdr-1.7.9-extensions/epg.c ---- vdr-1.7.9/epg.c 2008-05-01 16:53:55.000000000 +0200 -+++ vdr-1.7.9-extensions/epg.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/epg.c vdr-1.7.10b/epg.c +--- vdr-1.7.10/epg.c 2008-05-01 16:53:55.000000000 +0200 ++++ vdr-1.7.10b/epg.c 2009-12-30 11:33:26.000000000 +0100 @@ -114,6 +114,11 @@ components = NULL; startTime = 0; @@ -3743,60 +3479,9 @@ diff -u --recursive vdr-1.7.9/epg.c vdr-1.7.9-extensions/epg.c void cSchedule::SetRunningStatus(cEvent *Event, int RunningStatus, cChannel *Channel) { hasRunning = false; -@@ -1048,6 +1422,7 @@ - if (!p) { - p = new cSchedule(ChannelID); - Add(p); -+ HashSchedule(p); - cChannel *channel = Channels.GetByChannelID(ChannelID); - if (channel) - channel->schedule = p; -@@ -1058,10 +1433,14 @@ - const cSchedule *cSchedules::GetSchedule(tChannelID ChannelID) const - { - ChannelID.ClrRid(); -- for (cSchedule *p = First(); p; p = Next(p)) { -- if (p->ChannelID() == ChannelID) -- return p; -- } -+ cList *list = schedulesHash.GetList(HashKey(ChannelID)); -+ if (list) { -+ for (cHashObject *hobj = list->First(); hobj; hobj = list->Next(hobj)) { -+ cSchedule *p = (cSchedule *)hobj->Object(); -+ if (p->ChannelID() == ChannelID) -+ return p; -+ } -+ } - return NULL; - } - -@@ -1077,7 +1456,23 @@ - if (Channel->schedule == &DummySchedule && AddIfMissing) { - cSchedule *Schedule = new cSchedule(Channel->GetChannelID()); - ((cSchedules *)this)->Add(Schedule); -+ ((cSchedules *)this)->HashSchedule(Schedule); - Channel->schedule = Schedule; - } - return Channel->schedule != &DummySchedule? Channel->schedule : NULL; - } -+ -+void cSchedules::HashSchedule(cSchedule *Schedule) -+{ -+ schedulesHash.Add(Schedule, HashKey(Schedule->ChannelID().ClrRid())); -+} -+ -+void cSchedules::UnhashSchedule(cSchedule *Schedule) -+{ -+ schedulesHash.Del(Schedule, HashKey(Schedule->ChannelID().ClrRid())); -+} -+ -+unsigned int cSchedules::HashKey(tChannelID ChannelID) -+{ -+ return (unsigned int)((ChannelID.Nid() << 16 | ChannelID.Source()) ^ (ChannelID.Tid() << 16 | ChannelID.Sid()) ^ ChannelID.Rid()); -+} -diff -u --recursive vdr-1.7.9/epg.h vdr-1.7.9-extensions/epg.h ---- vdr-1.7.9/epg.h 2006-10-07 15:47:19.000000000 +0200 -+++ vdr-1.7.9-extensions/epg.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/epg.h vdr-1.7.10b/epg.h +--- vdr-1.7.10/epg.h 2006-10-07 15:47:19.000000000 +0200 ++++ vdr-1.7.10b/epg.h 2009-12-30 11:33:26.000000000 +0100 @@ -50,6 +50,22 @@ typedef u_int32_t tEventID; @@ -3874,25 +3559,145 @@ diff -u --recursive vdr-1.7.9/epg.h vdr-1.7.9-extensions/epg.h cEvent *AddEvent(cEvent *Event); void DelEvent(cEvent *Event); void HashEvent(cEvent *Event); -@@ -164,11 +199,15 @@ - friend class cSchedulesLock; - private: - cRwLock rwlock; -+ cHash schedulesHash; - static cSchedules schedules; - static const char *epgDataFileName; - static time_t lastCleanup; - static time_t lastDump; - static time_t modified; -+ void HashSchedule(cSchedule *Schedule); -+ void UnhashSchedule(cSchedule *Schedule); -+ static unsigned int HashKey(tChannelID ChannelID); - public: - static void SetEpgDataFileName(const char *FileName); - static const cSchedules *Schedules(cSchedulesLock &SchedulesLock); -diff -u --recursive vdr-1.7.9/iconpatch.c vdr-1.7.9-extensions/iconpatch.c ---- vdr-1.7.9/iconpatch.c 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/iconpatch.c 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/HISTORY-liemikuutio vdr-1.7.10b/HISTORY-liemikuutio +--- vdr-1.7.10/HISTORY-liemikuutio 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/HISTORY-liemikuutio 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,132 @@ ++----------------------------------- ++Liemikuutio for Video Disc Recorder ++ ++Maintainer: Rolf Ahrenberg ++----------------------------------- ++ ++2006-01-08: Version 1.0 ++ ++- Based on enAIO with these original patches: ++ Simple recordings sorting by Walter@VDRPortal ++ Alternate rename recordings by Ralf M?ller ++ Menu selection by Peter Dittmann ++ Recording length by Tobias Faust ++ ++2006-01-15: Version 1.1 ++ ++- Removed patches already found in vdr-1.3.39. ++ ++2006-01-25: Version 1.2 ++ ++- Added "Main menu command position" feature. ++ ++2006-02-05: Version 1.3 ++ ++- Improved menu selection response. ++ ++2006-04-18: Version 1.4 ++ ++- Added Estonian translation (Thanks to Arthur Konovalov). ++ ++2006-04-30: Version 1.5 ++ ++- Added progress bar view into "What's on now?" menu. ++ ++2006-06-06: Version 1.6 ++ ++- Added French translation (Thanks to ECLiPSE). ++ ++2006-06-14: Version 1.7 ++ ++- Fixed RENR crash. ++ ++2006-07-14: Version 1.8 ++ ++- Fixed RENR/OSD bug. ++ ++2006-08-27: Version 1.9 ++ ++- Some modifications to the recording length and rename recordings ++ patches (Thanks to Firefly). ++- Added k1_k3_jumps_20s patch by Petri Hintukainen. ++ ++2006-08-29: Version 1.10 ++ ++- The cRecording:Title() method now defaults to original formatting. ++ ++2006-09-04: Version 1.11 ++ ++- Removed unused variable from cRecording::Title() method (Thanks to ++ C.Y.M.). ++- Some modifications to the rename recordings patch (Thanks to Firefly). ++ ++2006-09-13: Version 1.12 ++ ++- More modifications to the rename recordings patch (Thanks to Firefly). ++ ++2006-10-01: Version 1.13 ++ ++- Removed unnecessary syslog printing (Thanks to Firefly). ++ ++2007-08-14: Version 1.14 ++ ++- Updated for vdr-1.5.7. ++ ++2007-10-16: Version 1.15 ++ ++- Added recmenu play patch (Thanks to Ville Skytt?). ++- Updated French translation (Thanks to ECLiPSE). ++ ++2007-11-04: Version 1.16 ++ ++- Updated for vdr-1.5.11. ++ ++2007-12-08: Version 1.17 ++ ++- Added binary skip patch. ++- Removed k1_k3_jumps_20s patch. ++ ++2008-02-17: Version 1.18 ++ ++- Updated for vdr-1.5.15. ++ ++2008-03-02: Version 1.19 ++ ++- Modified binary skip to use kPrev and kNext keys and the skip is now ++ always shortened after a direction change (Thanks to Timo Eskola). ++- Readded k1_k3_jumps_20s patch. ++ ++2008-04-04: Version 1.20 ++ ++- Added bitrate information into rename menu. ++- Readded the path editing support of rename recordings patch (Thanks ++ to Firefly). ++ ++2008-05-08: Version 1.21 ++ ++- Fixed rename recordings (Thanks to Firefly). ++- Added a DVB subtitles hack for old recordings (Thanks to Anssi Hannula). ++ ++2009-01-08: Version 1.22 ++ ++- Updated for vdr-1.7.3. ++ ++2009-01-25: Version 1.23 ++ ++- Updated for vdr-1.7.4. ++ ++2009-02-27: Version 1.24 ++ ++- Fixed compilation under gcc-4.4. ++ ++2009-04-05: Version 1.25 ++ ++- Fixed the length detection of recordings (Thanks to Thomas G?nther). ++ ++2009-04-17: Version 1.26 ++ ++- Fixed the length detection of audio recordings (Thanks to Thomas G?nther). ++ ++2009-04-26: Version 1.27 ++ ++- Fixed the length detection of empty recordings (Thanks to Thomas G?nther). +diff -Naur vdr-1.7.10/iconpatch.c vdr-1.7.10b/iconpatch.c +--- vdr-1.7.10/iconpatch.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/iconpatch.c 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,31 @@ +#ifdef USE_WAREAGLEICON + @@ -3925,17 +3730,17 @@ diff -u --recursive vdr-1.7.9/iconpatch.c vdr-1.7.9-extensions/iconpatch.c +} + +#endif /* WAREAGLEICON */ -diff -u --recursive vdr-1.7.9/iconpatch.h vdr-1.7.9-extensions/iconpatch.h ---- vdr-1.7.9/iconpatch.h 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/iconpatch.h 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/iconpatch.h vdr-1.7.10b/iconpatch.h +--- vdr-1.7.10/iconpatch.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/iconpatch.h 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,73 @@ +#ifdef USE_WAREAGLEICON +/* + * iconpatch.h: Information of iconpatch + * -+ * Diese Datei ist die Übersichtsdatei für den Iconpatch. ++ * Diese Datei ist die ?bersichtsdatei f?r den Iconpatch. + * Hier werden kleine Infos abgelegt. -+ * Der Iconpatch ändert die Dateien: ++ * Der Iconpatch ?ndert die Dateien: + * iconpatch.h + * menu.c + * recording.c @@ -4002,9 +3807,9 @@ diff -u --recursive vdr-1.7.9/iconpatch.h vdr-1.7.9-extensions/iconpatch.h +bool IsLangUtf8(void); + +#endif /* WAREAGLEICON */ -diff -u --recursive vdr-1.7.9/keys.h vdr-1.7.9-extensions/keys.h ---- vdr-1.7.9/keys.h 2007-08-26 14:34:50.000000000 +0200 -+++ vdr-1.7.9-extensions/keys.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/keys.h vdr-1.7.10b/keys.h +--- vdr-1.7.10/keys.h 2007-08-26 14:34:50.000000000 +0200 ++++ vdr-1.7.10b/keys.h 2009-12-30 11:33:26.000000000 +0100 @@ -71,6 +71,10 @@ #define kEditCut k2 #define kEditTest k8 @@ -4016,257 +3821,69 @@ diff -u --recursive vdr-1.7.9/keys.h vdr-1.7.9-extensions/keys.h #define RAWKEY(k) (eKeys((k) & ~k_Flags)) #define ISRAWKEY(k) ((k) != kNone && ((k) & k_Flags) == 0) #define NORMALKEY(k) (eKeys((k) & ~k_Repeat)) -diff -u --recursive vdr-1.7.9/libsi/util.c vdr-1.7.9-extensions/libsi/util.c ---- vdr-1.7.9/libsi/util.c 2006-02-18 12:17:50.000000000 +0100 -+++ vdr-1.7.9-extensions/libsi/util.c 2009-08-23 18:20:09.000000000 +0200 -@@ -219,58 +219,73 @@ - - //taken and adapted from libdtv, (c) Rolf Hakenes - // CRC32 lookup table for polynomial 0x04c11db7 -+// swapped bytes to avoid one shift operation in CRC loop (c) Reinhard Nissl - u_int32_t CRC32::crc_table[256] = { -- 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, -- 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, -- 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, -- 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, -- 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, -- 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, -- 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, -- 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, -- 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, -- 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, -- 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, -- 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, -- 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, -- 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, -- 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, -- 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, -- 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, -- 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, -- 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, -- 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, -- 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, -- 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, -- 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, -- 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, -- 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, -- 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, -- 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, -- 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, -- 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, -- 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, -- 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, -- 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, -- 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, -- 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, -- 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, -- 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, -- 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, -- 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, -- 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, -- 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, -- 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, -- 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, -- 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4}; -+ 0x00000000, 0xb71dc104, 0x6e3b8209, 0xd926430d, 0xdc760413, 0x6b6bc517, -+ 0xb24d861a, 0x0550471e, 0xb8ed0826, 0x0ff0c922, 0xd6d68a2f, 0x61cb4b2b, -+ 0x649b0c35, 0xd386cd31, 0x0aa08e3c, 0xbdbd4f38, 0x70db114c, 0xc7c6d048, -+ 0x1ee09345, 0xa9fd5241, 0xacad155f, 0x1bb0d45b, 0xc2969756, 0x758b5652, -+ 0xc836196a, 0x7f2bd86e, 0xa60d9b63, 0x11105a67, 0x14401d79, 0xa35ddc7d, -+ 0x7a7b9f70, 0xcd665e74, 0xe0b62398, 0x57abe29c, 0x8e8da191, 0x39906095, -+ 0x3cc0278b, 0x8bdde68f, 0x52fba582, 0xe5e66486, 0x585b2bbe, 0xef46eaba, -+ 0x3660a9b7, 0x817d68b3, 0x842d2fad, 0x3330eea9, 0xea16ada4, 0x5d0b6ca0, -+ 0x906d32d4, 0x2770f3d0, 0xfe56b0dd, 0x494b71d9, 0x4c1b36c7, 0xfb06f7c3, -+ 0x2220b4ce, 0x953d75ca, 0x28803af2, 0x9f9dfbf6, 0x46bbb8fb, 0xf1a679ff, -+ 0xf4f63ee1, 0x43ebffe5, 0x9acdbce8, 0x2dd07dec, 0x77708634, 0xc06d4730, -+ 0x194b043d, 0xae56c539, 0xab068227, 0x1c1b4323, 0xc53d002e, 0x7220c12a, -+ 0xcf9d8e12, 0x78804f16, 0xa1a60c1b, 0x16bbcd1f, 0x13eb8a01, 0xa4f64b05, -+ 0x7dd00808, 0xcacdc90c, 0x07ab9778, 0xb0b6567c, 0x69901571, 0xde8dd475, -+ 0xdbdd936b, 0x6cc0526f, 0xb5e61162, 0x02fbd066, 0xbf469f5e, 0x085b5e5a, -+ 0xd17d1d57, 0x6660dc53, 0x63309b4d, 0xd42d5a49, 0x0d0b1944, 0xba16d840, -+ 0x97c6a5ac, 0x20db64a8, 0xf9fd27a5, 0x4ee0e6a1, 0x4bb0a1bf, 0xfcad60bb, -+ 0x258b23b6, 0x9296e2b2, 0x2f2bad8a, 0x98366c8e, 0x41102f83, 0xf60dee87, -+ 0xf35da999, 0x4440689d, 0x9d662b90, 0x2a7bea94, 0xe71db4e0, 0x500075e4, -+ 0x892636e9, 0x3e3bf7ed, 0x3b6bb0f3, 0x8c7671f7, 0x555032fa, 0xe24df3fe, -+ 0x5ff0bcc6, 0xe8ed7dc2, 0x31cb3ecf, 0x86d6ffcb, 0x8386b8d5, 0x349b79d1, -+ 0xedbd3adc, 0x5aa0fbd8, 0xeee00c69, 0x59fdcd6d, 0x80db8e60, 0x37c64f64, -+ 0x3296087a, 0x858bc97e, 0x5cad8a73, 0xebb04b77, 0x560d044f, 0xe110c54b, -+ 0x38368646, 0x8f2b4742, 0x8a7b005c, 0x3d66c158, 0xe4408255, 0x535d4351, -+ 0x9e3b1d25, 0x2926dc21, 0xf0009f2c, 0x471d5e28, 0x424d1936, 0xf550d832, -+ 0x2c769b3f, 0x9b6b5a3b, 0x26d61503, 0x91cbd407, 0x48ed970a, 0xfff0560e, -+ 0xfaa01110, 0x4dbdd014, 0x949b9319, 0x2386521d, 0x0e562ff1, 0xb94beef5, -+ 0x606dadf8, 0xd7706cfc, 0xd2202be2, 0x653deae6, 0xbc1ba9eb, 0x0b0668ef, -+ 0xb6bb27d7, 0x01a6e6d3, 0xd880a5de, 0x6f9d64da, 0x6acd23c4, 0xddd0e2c0, -+ 0x04f6a1cd, 0xb3eb60c9, 0x7e8d3ebd, 0xc990ffb9, 0x10b6bcb4, 0xa7ab7db0, -+ 0xa2fb3aae, 0x15e6fbaa, 0xccc0b8a7, 0x7bdd79a3, 0xc660369b, 0x717df79f, -+ 0xa85bb492, 0x1f467596, 0x1a163288, 0xad0bf38c, 0x742db081, 0xc3307185, -+ 0x99908a5d, 0x2e8d4b59, 0xf7ab0854, 0x40b6c950, 0x45e68e4e, 0xf2fb4f4a, -+ 0x2bdd0c47, 0x9cc0cd43, 0x217d827b, 0x9660437f, 0x4f460072, 0xf85bc176, -+ 0xfd0b8668, 0x4a16476c, 0x93300461, 0x242dc565, 0xe94b9b11, 0x5e565a15, -+ 0x87701918, 0x306dd81c, 0x353d9f02, 0x82205e06, 0x5b061d0b, 0xec1bdc0f, -+ 0x51a69337, 0xe6bb5233, 0x3f9d113e, 0x8880d03a, 0x8dd09724, 0x3acd5620, -+ 0xe3eb152d, 0x54f6d429, 0x7926a9c5, 0xce3b68c1, 0x171d2bcc, 0xa000eac8, -+ 0xa550add6, 0x124d6cd2, 0xcb6b2fdf, 0x7c76eedb, 0xc1cba1e3, 0x76d660e7, -+ 0xaff023ea, 0x18ede2ee, 0x1dbda5f0, 0xaaa064f4, 0x738627f9, 0xc49be6fd, -+ 0x09fdb889, 0xbee0798d, 0x67c63a80, 0xd0dbfb84, 0xd58bbc9a, 0x62967d9e, -+ 0xbbb03e93, 0x0cadff97, 0xb110b0af, 0x060d71ab, 0xdf2b32a6, 0x6836f3a2, -+ 0x6d66b4bc, 0xda7b75b8, 0x035d36b5, 0xb440f7b1}; -+ -+inline void swap_bytes(u_int32_t &crc) -+{ -+ unsigned char a = crc >> 24; -+ unsigned char b = crc >> 16; -+ unsigned char c = crc >> 8; -+ unsigned char d = crc; -+ -+ crc = ((d << 8 | c) << 8 | b) << 8 | a; -+} - - u_int32_t CRC32::crc32 (const char *d, int len, u_int32_t crc) - { - register int i; - const unsigned char *u=(unsigned char*)d; // Saves '& 0xff' - -+ swap_bytes(crc); -+ - for (i=0; i> 24) ^ *u++)]; -+ crc = (crc >> 8) ^ crc_table[(unsigned char)crc ^ *u++]; -+ -+ swap_bytes(crc); - - return crc; - } -diff -u --recursive vdr-1.7.9/lirc.c vdr-1.7.9-extensions/lirc.c ---- vdr-1.7.9/lirc.c 2006-05-28 10:48:13.000000000 +0200 -+++ vdr-1.7.9-extensions/lirc.c 2009-08-23 18:20:09.000000000 +0200 -@@ -12,11 +12,28 @@ +diff -Naur vdr-1.7.10/lirc.c vdr-1.7.10b/lirc.c +--- vdr-1.7.10/lirc.c 2006-05-28 10:48:13.000000000 +0200 ++++ vdr-1.7.10b/lirc.c 2009-12-30 11:33:26.000000000 +0100 +@@ -12,6 +12,9 @@ #include "lirc.h" #include #include -- --#define REPEATDELAY 350 // ms --#define REPEATFREQ 100 // ms --#define REPEATTIMEOUT 500 // ms --#define RECONNECTDELAY 3000 // ms +#ifdef USE_LIRCSETTINGS +#include "config.h" +#endif /* LIRCSETTINGS */ -+ -+#ifndef LIRC_PUSHFREQ -+#define LIRC_PUSHFREQ 3 // 1/s -+#endif -+#ifndef LIRC_REPEATDELAY -+#define LIRC_REPEATDELAY 350 // ms -+#endif -+#ifndef LIRC_REPEATFREQ -+#define LIRC_REPEATFREQ 10 // 1/s -+#endif -+#ifndef LIRC_REPEATTIMEOUT -+#define LIRC_REPEATTIMEOUT 500 // ms -+#endif -+#ifndef LIRC_RECONNECTDELAY -+#define LIRC_RECONNECTDELAY 3000 // ms -+#endif -+#ifndef LIRC_PRIORITYBOOST -+#define LIRC_PRIORITYBOOST 0 -+#endif - cLircRemote::cLircRemote(const char *DeviceName) - :cRemote("LIRC") -@@ -68,17 +85,33 @@ - bool repeat = false; - int timeout = -1; - -+ if (LIRC_PRIORITYBOOST) -+ SetPriority(GetPriority() - LIRC_PRIORITYBOOST); - while (Running() && f >= 0) { -- - bool ready = cFile::FileReady(f, timeout); -- int ret = ready ? safe_read(f, buf, sizeof(buf)) : -1; -+ int ret = -1; -+ if (ready) { -+ // read one line of the line oriented lirc protocol -+ for (ret = 0; ret < (int)sizeof(buf); ret++) { -+ int ch = readchar(f); -+ if (ch < 0) { -+ ret = -1; -+ break; -+ } -+ if (ch == '\n') { -+ buf[ret++] = '\0'; -+ break; -+ } -+ buf[ret] = ch; -+ } -+ } - - if (ready && ret <= 0 ) { -- esyslog("ERROR: lircd connection broken, trying to reconnect every %.1f seconds", float(RECONNECTDELAY) / 1000); -+ esyslog("ERROR: lircd connection broken, trying to reconnect every %.1f seconds", float(LIRC_RECONNECTDELAY) / 1000); - close(f); - f = -1; - while (Running() && f < 0) { -- cCondWait::SleepMs(RECONNECTDELAY); -+ cCondWait::SleepMs(LIRC_RECONNECTDELAY); - if (Connect()) { - isyslog("reconnected to lircd"); - break; -@@ -94,7 +127,11 @@ + #define REPEATDELAY 350 // ms + #define REPEATFREQ 100 // ms +@@ -94,7 +97,11 @@ continue; } if (count == 0) { -- if (strcmp(KeyName, LastKeyName) == 0 && FirstTime.Elapsed() < REPEATDELAY) +#ifdef USE_LIRCSETTINGS + if (strcmp(KeyName, LastKeyName) == 0 && FirstTime.Elapsed() < (unsigned int)Setup.LircRepeatDelay) +#else -+ if (strcmp(KeyName, LastKeyName) == 0 && FirstTime.Elapsed() < (1000 / LIRC_PUSHFREQ)) + if (strcmp(KeyName, LastKeyName) == 0 && FirstTime.Elapsed() < REPEATDELAY) +#endif /* LIRCSETTINGS */ continue; // skip keys coming in too fast if (repeat) Put(LastKeyName, false, true); -@@ -104,18 +141,34 @@ +@@ -104,18 +111,34 @@ timeout = -1; } else { -- if (LastTime.Elapsed() < REPEATFREQ) +#ifdef USE_LIRCSETTINGS + if (LastTime.Elapsed() < (unsigned int)Setup.LircRepeatFreq) +#else -+ if (LastTime.Elapsed() < (1000 / LIRC_REPEATFREQ)) + if (LastTime.Elapsed() < REPEATFREQ) +#endif /* LIRCSETTINGS */ continue; // repeat function kicks in after a short delay (after last key instead of first key) -- if (FirstTime.Elapsed() < REPEATDELAY) +#ifdef USE_LIRCSETTINGS + if (FirstTime.Elapsed() < (unsigned int)Setup.LircRepeatDelay) +#else -+ if (FirstTime.Elapsed() < LIRC_REPEATDELAY) + if (FirstTime.Elapsed() < REPEATDELAY) +#endif /* LIRCSETTINGS */ continue; // skip keys coming in too fast (for count != 0 as well) repeat = true; -- timeout = REPEATDELAY; +#ifdef USE_LIRCSETTINGS + timeout = Setup.LircRepeatDelay; +#else -+ timeout = LIRC_REPEATDELAY; + timeout = REPEATDELAY; +#endif /* LIRCSETTINGS */ } LastTime.Set(); Put(KeyName, repeat); } else if (repeat) { // the last one was a repeat, so let's generate a release -- if (LastTime.Elapsed() >= REPEATTIMEOUT) { +#ifdef USE_LIRCSETTINGS + if (LastTime.Elapsed() >= (unsigned int)Setup.LircRepeatTimeout) { +#else -+ if (LastTime.Elapsed() >= LIRC_REPEATTIMEOUT) { + if (LastTime.Elapsed() >= REPEATTIMEOUT) { +#endif /* LIRCSETTINGS */ Put(LastKeyName, false, true); repeat = false; *LastKeyName = 0; -diff -u --recursive vdr-1.7.9/mainmenuitemsprovider.h vdr-1.7.9-extensions/mainmenuitemsprovider.h ---- vdr-1.7.5/mainmenuitemsprovider.h 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.5-extensions/mainmenuitemsprovider.h 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/mainmenuitemsprovider.h vdr-1.7.10b/mainmenuitemsprovider.h +--- vdr-1.7.10/mainmenuitemsprovider.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/mainmenuitemsprovider.h 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,62 @@ +#ifdef USE_MENUORG +/* @@ -4330,9 +3947,9 @@ diff -u --recursive vdr-1.7.9/mainmenuitemsprovider.h vdr-1.7.9-extensions/mainm + +#endif //__MAINMENUITEMSPROVIDER_H +#endif /* MENUORG */ -diff -u --recursive vdr-1.7.9/Make.config.template vdr-1.7.9-extensions/Make.config.template ---- vdr-1.7.9/Make.config.template 2009-01-18 11:46:13.000000000 +0100 -+++ vdr-1.7.9-extensions/Make.config.template 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/Make.config.template vdr-1.7.10b/Make.config.template +--- vdr-1.7.10/Make.config.template 2009-01-18 11:46:13.000000000 +0100 ++++ vdr-1.7.10b/Make.config.template 2009-12-30 11:33:26.000000000 +0100 @@ -42,8 +42,247 @@ ## Define if you want vdr to not run as root #VDR_USER = vdr @@ -4581,9 +4198,9 @@ diff -u --recursive vdr-1.7.9/Make.config.template vdr-1.7.9-extensions/Make.con +ifdef YAEPG +DEFINES += -DUSE_YAEPG +endif -diff -u --recursive vdr-1.7.9/Makefile vdr-1.7.9-extensions/Makefile ---- vdr-1.7.9/Makefile 2008-12-24 16:21:09.000000000 +0100 -+++ vdr-1.7.9-extensions/Makefile 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/Makefile vdr-1.7.10b/Makefile +--- vdr-1.7.10/Makefile 2009-10-18 15:59:25.000000000 +0200 ++++ vdr-1.7.10b/Makefile 2009-12-30 11:33:26.000000000 +0100 @@ -43,6 +43,18 @@ skinclassic.o skins.o skinsttng.o sources.o spu.o status.o svdrp.o themes.o thread.o\ timers.o tools.o transfer.o vdr.o videodir.o @@ -4603,33 +4220,7 @@ diff -u --recursive vdr-1.7.9/Makefile vdr-1.7.9-extensions/Makefile ifndef NO_KBD DEFINES += -DREMOTE_KBD endif -@@ -58,6 +70,25 @@ - - DEFINES += -DLIRC_DEVICE=\"$(LIRC_DEVICE)\" -DRCU_DEVICE=\"$(RCU_DEVICE)\" - -+ifdef LIRC_PUSHFREQ -+DEFINES += -DLIRC_PUSHFREQ=$(LIRC_PUSHFREQ) -+endif -+ifdef LIRC_REPEATDELAY -+DEFINES += -DLIRCD_REPEATDELAY=$(LIRC_REPEATDELAY) -+endif -+ifdef LIRC_REPEATFREQ -+DEFINES += -DLIRC_REPEATFREQ=$(LIRC_REPEATFREQ) -+endif -+ifdef LIRC_REPEATTIMEOUT -+DEFINES += -DLIRC_REPEATTIMEOUT=$(LIRC_REPEATTIMEOUT) -+endif -+ifdef LIRC_RECONNECTDELAY -+DEFINES += -DLIRC_RECONNECTDELAY=$(LIRC_RECONNECTDELAY) -+endif -+ifdef LIRC_PRIORITYBOOST -+DEFINES += -DLIRC_PRIORITYBOOST=$(LIRC_PRIORITYBOOST) -+endif -+ - DEFINES += -D_GNU_SOURCE - - DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -@@ -72,6 +103,14 @@ +@@ -72,6 +84,14 @@ VDRVERSION = $(shell sed -ne '/define VDRVERSION/s/^.*"\(.*\)".*$$/\1/p' config.h) APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' config.h) @@ -4644,7 +4235,7 @@ diff -u --recursive vdr-1.7.9/Makefile vdr-1.7.9-extensions/Makefile all: vdr i18n # Implicit rules: -@@ -137,6 +176,26 @@ +@@ -137,6 +157,26 @@ # Plugins: @@ -4671,7 +4262,7 @@ diff -u --recursive vdr-1.7.9/Makefile vdr-1.7.9-extensions/Makefile plugins: include-dir @failed="";\ noapiv="";\ -@@ -151,6 +210,7 @@ +@@ -151,6 +191,7 @@ done;\ if [ -n "$$noapiv" ] ; then echo; echo "*** plugins without APIVERSION:$$noapiv"; echo; fi;\ if [ -n "$$failed" ] ; then echo; echo "*** failed plugins:$$failed"; echo; exit 1; fi @@ -4679,12 +4270,12 @@ diff -u --recursive vdr-1.7.9/Makefile vdr-1.7.9-extensions/Makefile clean-plugins: @for i in `ls $(PLUGINDIR)/src | grep -v '[^a-z0-9]'`; do $(MAKE) -C "$(PLUGINDIR)/src/$$i" clean; done -diff -u --recursive vdr-1.7.9/MANUAL vdr-1.7.9-extensions/MANUAL ---- vdr-1.7.9/MANUAL 2009-05-21 13:28:41.000000000 +0200 -+++ vdr-1.7.9-extensions/MANUAL 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/MANUAL vdr-1.7.10b/MANUAL +--- vdr-1.7.10/MANUAL 2009-11-22 15:28:15.000000000 +0100 ++++ vdr-1.7.10b/MANUAL 2009-12-30 11:33:26.000000000 +0100 @@ -822,6 +822,30 @@ - 0 resulting in a file named 'resume.vdr', and any other - value resulting in 'resume.n.vdr'. + 0 resulting in a file named 'resume', and any other + value resulting in 'resume.n'. + Jump&Play = no Turns playing on or off after jumping forward to the + next editing mark with the '9' key. @@ -4713,9 +4304,9 @@ diff -u --recursive vdr-1.7.9/MANUAL vdr-1.7.9-extensions/MANUAL Miscellaneous: Min. event timeout = 30 -diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c ---- vdr-1.7.9/menu.c 2009-06-21 11:56:06.000000000 +0200 -+++ vdr-1.7.9-extensions/menu.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/menu.c vdr-1.7.10b/menu.c +--- vdr-1.7.10/menu.c 2009-06-21 11:56:06.000000000 +0200 ++++ vdr-1.7.10b/menu.c 2009-12-30 11:33:26.000000000 +0100 @@ -8,12 +8,18 @@ */ @@ -5025,7 +4616,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c timer->Channel()->Number(), *name, *name && **name ? " " : "", -@@ -762,7 +929,63 @@ +@@ -762,8 +929,64 @@ timer->Stop() / 100, timer->Stop() % 100, timer->File())); @@ -5078,17 +4669,18 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c + if (dur < 0) + dur += 24 * 60; + return dur; -+} -+ + } + +void cTimerEntry::SetDiskStatus(char DiskStatus) +{ + if (item) + item->SetDiskStatus(DiskStatus); - } ++} +#endif /* TIMERINFO */ - ++ // --- cMenuTimers ----------------------------------------------------------- + class cMenuTimers : public cOsdMenu { @@ -776,14 +999,31 @@ eOSState Info(void); cTimer *CurrentTimer(void); @@ -5233,7 +4825,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c + char status = ' '; + if (entry->active()) { + freeMinutes -= entry->duration(); -+ status = freeMinutes > runshortMinutes ? '+' : freeMinutes > 0 ? '~' /* ± 177 +/- */ : '-'; ++ status = freeMinutes > runshortMinutes ? '+' : freeMinutes > 0 ? '~' /* ? 177 +/- */ : '-'; + } + entry->SetDiskStatus(status); +#ifdef DEBUG_TIMER_INFO @@ -5648,8 +5240,8 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c +#endif /* WAREAGLEICON */ SetText(cString::sprintf("%d\t%d\t%s", totalEntries, newEntries, name)); +#endif /* LIEMIEXT */ - } - ++} ++ +#ifdef USE_LIEMIEXT +// --- cMenuRenameRecording -------------------------------------------------- + @@ -5773,9 +5365,9 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c + return osContinue; + } + return state; -+} + } +#endif /* LIEMIEXT */ -+ + // --- cMenuRecordings ------------------------------------------------------- cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus) @@ -6177,80 +5769,80 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c }; cMenuSetupCAM::cMenuSetupCAM(void) -@@ -2675,12 +3589,72 @@ +@@ -2674,13 +3588,72 @@ + class cMenuSetupRecord : public cMenuSetupBase { private: - const char *pauseKeyHandlingTexts[3]; +#ifdef USE_SORTRECORDS + const char *RecordingsSortModeTexts[MAXSORTMODES]; +#endif /* SORTRECORDS */ +#ifdef USE_DELTIMESHIFTREC + const char *DelTimeshiftRecValues[3]; +#endif /* DELTIMESHIFTREC */ + const char *pauseKeyHandlingTexts[3]; public: cMenuSetupRecord(void); +#ifdef USE_DVLVIDPREFER + eOSState ProcessKey(eKeys key); + +private: -+ void Set(void); ++ void Set(void); + -+ int tmpNVidPrefer, -+ tmpUseVidPrefer; ++ int tmpNVidPrefer, ++ tmpUseVidPrefer; +#endif /* DVLVIDPREFER */ }; +#ifdef USE_DVLVIDPREFER cMenuSetupRecord::cMenuSetupRecord(void) { -+ Set(); ++ Set(); +} + -+ eOSState cMenuSetupRecord::ProcessKey(eKeys key) ++eOSState cMenuSetupRecord::ProcessKey(eKeys key) +{ -+ eOSState s = cMenuSetupBase::ProcessKey(key);; ++ eOSState s = cMenuSetupBase::ProcessKey(key);; + -+ if (key != kNone) { -+ if (tmpNVidPrefer != data.nVidPrefer || tmpUseVidPrefer != data.UseVidPrefer) { -+ int cur = Current(); ++ if (key != kNone) { ++ if (tmpNVidPrefer != data.nVidPrefer || tmpUseVidPrefer != data.UseVidPrefer) { ++ int cur = Current(); + -+ tmpNVidPrefer = data.nVidPrefer; -+ tmpUseVidPrefer = data.UseVidPrefer; ++ tmpNVidPrefer = data.nVidPrefer; ++ tmpUseVidPrefer = data.UseVidPrefer; + -+ Clear(); -+ Set(); -+ SetCurrent(Get(cur)); -+ Display(); -+ cMenuSetupBase::ProcessKey(kNone); -+ return osContinue; -+ } -+ } -+ return s; ++ Clear(); ++ Set(); ++ SetCurrent(Get(cur)); ++ Display(); ++ cMenuSetupBase::ProcessKey(kNone); ++ return osContinue; ++ } ++ } ++ return s; +} + +#else -+ cMenuSetupRecord::cMenuSetupRecord(void) ++cMenuSetupRecord::cMenuSetupRecord(void) +#endif /* DVLVIDPREFER */ +#ifdef USE_DVLVIDPREFER -+ void cMenuSetupRecord::Set(void) ++void cMenuSetupRecord::Set(void) +#endif /* DVLVIDPREFER */ -+ { ++{ +#ifdef USE_SORTRECORDS -+ RecordingsSortModeTexts[0] = tr("main dir alphabetically, subdirs flexible"); -+ RecordingsSortModeTexts[1] = tr("main dir by date, subdirs flexible"); -+ RecordingsSortModeTexts[2] = tr("all alphabetically"); -+ RecordingsSortModeTexts[3] = tr("all by date"); ++ RecordingsSortModeTexts[0] = tr("main dir alphabetically, subdirs flexible"); ++ RecordingsSortModeTexts[1] = tr("main dir by date, subdirs flexible"); ++ RecordingsSortModeTexts[2] = tr("all alphabetically"); ++ RecordingsSortModeTexts[3] = tr("all by date"); +#endif /* SORTRECORDS */ +#ifdef USE_DELTIMESHIFTREC -+ DelTimeshiftRecValues[0] = tr("request"); -+ DelTimeshiftRecValues[1] = tr("no"); -+ DelTimeshiftRecValues[2] = tr("yes"); -+#endif /* DELTIMESHIFTREC */ -+ ++ DelTimeshiftRecValues[0] = tr("request"); ++ DelTimeshiftRecValues[1] = tr("no"); ++ DelTimeshiftRecValues[2] = tr("yes"); ++#endif /* DELTIMESHIFTREC */ pauseKeyHandlingTexts[0] = tr("do not pause live video"); pauseKeyHandlingTexts[1] = tr("confirm pause live video"); pauseKeyHandlingTexts[2] = tr("pause live video"); -@@ -2693,14 +3667,61 @@ +@@ -2693,14 +3666,61 @@ Add(new cMenuEditStraItem(tr("Setup.Recording$Pause key handling"), &data.PauseKeyHandling, 3, pauseKeyHandlingTexts)); Add(new cMenuEditIntItem( tr("Setup.Recording$Pause priority"), &data.PausePriority, 0, MAXPRIORITY)); Add(new cMenuEditIntItem( tr("Setup.Recording$Pause lifetime (d)"), &data.PauseLifetime, 0, MAXLIFETIME)); @@ -6312,7 +5904,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c } // --- cMenuSetupReplay ------------------------------------------------------ -@@ -2718,6 +3739,31 @@ +@@ -2718,6 +3738,31 @@ Add(new cMenuEditBoolItem(tr("Setup.Replay$Multi speed mode"), &data.MultiSpeedMode)); Add(new cMenuEditBoolItem(tr("Setup.Replay$Show replay mode"), &data.ShowReplayMode)); Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99)); @@ -6344,7 +5936,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c } void cMenuSetupReplay::Store(void) -@@ -2730,13 +3776,48 @@ +@@ -2730,13 +3775,48 @@ // --- cMenuSetupMisc -------------------------------------------------------- class cMenuSetupMisc : public cMenuSetupBase { @@ -6393,7 +5985,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$Min. event timeout (min)"), &data.MinEventTimeout)); Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$Min. user inactivity (min)"), &data.MinUserInactivity)); Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$SVDRP timeout (s)"), &data.SVDRPTimeout)); -@@ -2744,7 +3825,21 @@ +@@ -2744,7 +3824,21 @@ Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$Channel entry timeout (ms)"), &data.ChannelEntryTimeout, 0)); Add(new cMenuEditChanItem(tr("Setup.Miscellaneous$Initial channel"), &data.InitialChannel, tr("Setup.Miscellaneous$as before"))); Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$Initial volume"), &data.InitialVolume, -1, 255, tr("Setup.Miscellaneous$as before"))); @@ -6415,7 +6007,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c } // --- cMenuSetupPluginItem -------------------------------------------------- -@@ -2769,6 +3864,9 @@ +@@ -2769,6 +3863,9 @@ public: cMenuSetupPlugins(void); virtual eOSState ProcessKey(eKeys Key); @@ -6425,7 +6017,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c }; cMenuSetupPlugins::cMenuSetupPlugins(void) -@@ -2818,6 +3916,9 @@ +@@ -2818,6 +3915,9 @@ public: cMenuSetup(void); virtual eOSState ProcessKey(eKeys Key); @@ -6435,7 +6027,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c }; cMenuSetup::cMenuSetup(void) -@@ -2907,24 +4008,90 @@ +@@ -2907,24 +4007,90 @@ cMenuMain::cMenuMain(eOSState State) :cOsdMenu("") { @@ -6526,7 +6118,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c } cOsdObject *cMenuMain::PluginOsdObject(void) -@@ -2934,38 +4101,159 @@ +@@ -2934,38 +4100,159 @@ return o; } @@ -6686,7 +6278,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c Update(true); Display(); -@@ -2974,13 +4262,40 @@ +@@ -2974,13 +4261,40 @@ bool cMenuMain::Update(bool Force) { bool result = false; @@ -6728,7 +6320,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c bool NewReplaying = cControl::Control() != NULL; if (Force || NewReplaying != replaying) { -@@ -2988,6 +4303,9 @@ +@@ -2988,6 +4302,9 @@ // Replay control: if (replaying && !stopReplayItem) // TRANSLATORS: note the leading blank! @@ -6738,7 +6330,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c Add(stopReplayItem = new cOsdItem(tr(" Stop replaying"), osStopReplay)); else if (stopReplayItem && !replaying) { Del(stopReplayItem->Index()); -@@ -3002,6 +4320,9 @@ +@@ -3002,6 +4319,9 @@ bool CutterActive = cCutter::Active(); if (CutterActive && !cancelEditingItem) { // TRANSLATORS: note the leading blank! @@ -6748,7 +6340,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c Add(cancelEditingItem = new cOsdItem(tr(" Cancel editing"), osCancelEdit)); result = true; } -@@ -3022,6 +4343,9 @@ +@@ -3022,6 +4342,9 @@ while ((s = cRecordControls::GetInstantId(s)) != NULL) { cOsdItem *item = new cOsdItem(osStopRecord); item->SetText(cString::sprintf("%s%s", tr(STOP_RECORDING), s)); @@ -6758,7 +6350,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c Add(item); if (!stopRecordingItem) stopRecordingItem = item; -@@ -3029,6 +4353,12 @@ +@@ -3029,6 +4352,12 @@ result = true; } @@ -6771,7 +6363,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c return result; } -@@ -3039,13 +4369,69 @@ +@@ -3039,13 +4368,69 @@ eOSState state = cOsdMenu::ProcessKey(Key); HadSubMenu |= HasSubMenu(); @@ -6841,7 +6433,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c case osStopRecord: if (Interface->Confirm(tr("Stop recording?"))) { cOsdItem *item = Get(Current()); if (item) { -@@ -3064,6 +4450,9 @@ +@@ -3064,6 +4449,9 @@ if (item) { cPlugin *p = cPluginManager::GetPlugin(item->PluginIndex()); if (p) { @@ -6851,7 +6443,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c cOsdObject *menu = p->MainMenuAction(); if (menu) { if (menu->IsMenu()) -@@ -3075,9 +4464,60 @@ +@@ -3075,9 +4463,60 @@ } } } @@ -6912,7 +6504,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c default: switch (Key) { case kRecord: case kRed: if (!HadSubMenu) -@@ -3094,9 +4534,67 @@ +@@ -3094,9 +4533,67 @@ case kBlue: if (!HadSubMenu) state = replaying ? osStopReplay : cReplayControl::LastReplayed() ? osReplay : osContinue; break; @@ -6980,7 +6572,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c if (!HasSubMenu() && Update(HadSubMenu)) Display(); if (Key != kNone) { -@@ -3242,7 +4740,14 @@ +@@ -3242,7 +4739,14 @@ if (Direction) { while (Channel) { Channel = Direction > 0 ? Channels.Next(Channel) : Channels.Prev(Channel); @@ -6995,7 +6587,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c return Channel; } } -@@ -3300,6 +4805,13 @@ +@@ -3300,6 +4804,13 @@ case kLeft: case kRight|k_Repeat: case kRight: @@ -7009,7 +6601,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c case kNext|k_Repeat: case kNext: case kPrev|k_Repeat: -@@ -3459,6 +4971,17 @@ +@@ -3459,6 +4970,17 @@ eOSState cDisplayVolume::ProcessKey(eKeys Key) { switch (Key) { @@ -7027,7 +6619,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c case kVolUp|k_Repeat: case kVolUp: case kVolDn|k_Repeat: -@@ -3708,6 +5231,10 @@ +@@ -3708,6 +5230,10 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause) { @@ -7038,7 +6630,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c // We're going to manipulate an event here, so we need to prevent // others from modifying any EPG data: cSchedulesLock SchedulesLock; -@@ -3752,11 +5279,26 @@ +@@ -3752,11 +5278,26 @@ return; } @@ -7065,7 +6657,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c if (device->AttachReceiver(recorder)) { Recording.WriteInfo(); cStatus::MsgRecording(device, Recording.Name(), Recording.FileName(), true); -@@ -3814,11 +5356,25 @@ +@@ -3814,11 +5355,25 @@ void cRecordControl::Stop(void) { if (timer) { @@ -7091,7 +6683,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c } } -@@ -3865,6 +5421,19 @@ +@@ -3865,6 +5420,19 @@ int Priority = Timer ? Timer->Priority() : Pause ? Setup.PausePriority : Setup.DefaultPriority; cDevice *device = cDevice::GetDevice(channel, Priority, false); if (device) { @@ -7111,7 +6703,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c dsyslog("switching device %d to channel %d", device->DeviceNumber() + 1, channel->Number()); if (!device->SwitchChannel(channel, false)) { ShutdownHandler.RequestEmergencyExit(); -@@ -3874,6 +5443,9 @@ +@@ -3874,6 +5442,9 @@ for (int i = 0; i < MAXRECORDCONTROLS; i++) { if (!RecordControls[i]) { RecordControls[i] = new cRecordControl(device, Timer, Pause); @@ -7121,7 +6713,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c return RecordControls[i]->Process(time(NULL)); } } -@@ -4004,12 +5576,22 @@ +@@ -4004,12 +5575,22 @@ // --- cReplayControl -------------------------------------------------------- @@ -7144,7 +6736,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c { currentReplayControl = this; displayReplay = NULL; -@@ -4017,23 +5599,96 @@ +@@ -4017,23 +5598,96 @@ lastCurrent = lastTotal = -1; lastPlay = lastForward = false; lastSpeed = -2; // an invalid value @@ -7241,7 +6833,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c void cReplayControl::SetRecording(const char *FileName, const char *Title) { free(fileName); -@@ -4128,6 +5783,9 @@ +@@ -4128,6 +5782,9 @@ if (Initial) { if (title) displayReplay->SetTitle(title); @@ -7251,7 +6843,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c lastCurrent = lastTotal = -1; } if (Total != lastTotal) { -@@ -4249,8 +5907,15 @@ +@@ -4249,8 +5906,15 @@ ShowTimed(2); bool Play, Forward; int Speed; @@ -7267,7 +6859,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c } marks.Save(); } -@@ -4263,8 +5928,22 @@ +@@ -4263,8 +5927,22 @@ if (GetIndex(Current, Total)) { cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current); if (m) { @@ -7290,7 +6882,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c } } } -@@ -4293,11 +5972,43 @@ +@@ -4293,11 +5971,43 @@ } } @@ -7334,7 +6926,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c if (!marks.Count()) Skins.Message(mtError, tr("No editing marks defined!")); else if (!cCutter::Start(fileName)) -@@ -4319,7 +6030,11 @@ +@@ -4319,7 +6029,11 @@ if (!m) m = marks.GetNext(Current); if (m) { @@ -7346,7 +6938,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c m = marks.Next(m); if (m) { Goto(m->position - SecondsToFrames(3, FramesPerSecond())); -@@ -4341,6 +6056,9 @@ +@@ -4341,6 +6055,9 @@ { if (!Active()) return osEnd; @@ -7356,7 +6948,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c if (visible) { if (timeoutShow && time(NULL) > timeoutShow) { Hide(); -@@ -4358,7 +6076,32 @@ +@@ -4358,7 +6075,32 @@ TimeSearchProcess(Key); return osContinue; } @@ -7389,7 +6981,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c switch (Key) { // Positioning: case kPlay: -@@ -4376,25 +6119,82 @@ +@@ -4376,25 +6118,82 @@ case kFastFwd: case kRight: Forward(); break; case kRed: TimeSearch(); break; @@ -7472,7 +7064,7 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c case kMarkJumpForward|k_Repeat: case kMarkJumpForward: MarkJump(true); break; case kMarkMoveBack|k_Repeat: -@@ -4414,7 +6214,16 @@ +@@ -4414,7 +6213,16 @@ else Show(); break; @@ -7489,10 +7081,9 @@ diff -u --recursive vdr-1.7.9/menu.c vdr-1.7.9-extensions/menu.c default: return osUnknown; } } -Nur in vdr-1.7.9-extensions: menu.c.orig. -diff -u --recursive vdr-1.7.9/menu.h vdr-1.7.9-extensions/menu.h ---- vdr-1.7.9/menu.h 2008-02-10 17:01:53.000000000 +0100 -+++ vdr-1.7.9-extensions/menu.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/menu.h vdr-1.7.10b/menu.h +--- vdr-1.7.10/menu.h 2008-02-10 17:01:53.000000000 +0100 ++++ vdr-1.7.10b/menu.h 2009-12-30 11:33:26.000000000 +0100 @@ -18,6 +18,9 @@ #include "menuitems.h" #include "recorder.h" @@ -7630,9 +7221,9 @@ diff -u --recursive vdr-1.7.9/menu.h vdr-1.7.9-extensions/menu.h virtual cOsdObject *GetInfo(void); virtual eOSState ProcessKey(eKeys Key); virtual void Show(void); -diff -u --recursive vdr-1.7.9/menuitems.c vdr-1.7.9-extensions/menuitems.c ---- vdr-1.7.9/menuitems.c 2009-05-03 15:37:55.000000000 +0200 -+++ vdr-1.7.9-extensions/menuitems.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/menuitems.c vdr-1.7.10b/menuitems.c +--- vdr-1.7.10/menuitems.c 2009-05-03 15:37:55.000000000 +0200 ++++ vdr-1.7.10b/menuitems.c 2009-12-30 11:33:26.000000000 +0100 @@ -33,9 +33,20 @@ free(name); } @@ -7849,9 +7440,9 @@ diff -u --recursive vdr-1.7.9/menuitems.c vdr-1.7.9-extensions/menuitems.c } // --- cMenuEditChanItem ----------------------------------------------------- -diff -u --recursive vdr-1.7.9/menuitems.h vdr-1.7.9-extensions/menuitems.h ---- vdr-1.7.9/menuitems.h 2009-05-03 14:50:34.000000000 +0200 -+++ vdr-1.7.9-extensions/menuitems.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/menuitems.h vdr-1.7.10b/menuitems.h +--- vdr-1.7.10/menuitems.h 2009-05-03 14:50:34.000000000 +0200 ++++ vdr-1.7.10b/menuitems.h 2009-12-30 11:33:26.000000000 +0100 @@ -21,7 +21,11 @@ public: cMenuEditItem(const char *Name); @@ -7943,9 +7534,9 @@ diff -u --recursive vdr-1.7.9/menuitems.h vdr-1.7.9-extensions/menuitems.h }; #endif //__MENUITEMS_H -diff -u --recursive vdr-1.7.9/menuorgpatch.h vdr-1.7.9-extensions/menuorgpatch.h ---- vdr-1.7.9/menuorgpatch.h 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/menuorgpatch.h 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/menuorgpatch.h vdr-1.7.10b/menuorgpatch.h +--- vdr-1.7.10/menuorgpatch.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/menuorgpatch.h 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,102 @@ +#ifdef USE_MENUORG +/* @@ -8049,123 +7640,9 @@ diff -u --recursive vdr-1.7.9/menuorgpatch.h vdr-1.7.9-extensions/menuorgpatch.h + +#endif //__MENUORGPATCH_H +#endif /* MENUORG */ -diff -u --recursive vdr-1.7.9/nit.c vdr-1.7.9-extensions/nit.c ---- vdr-1.7.9/nit.c 2008-12-20 11:57:50.000000000 +0100 -+++ vdr-1.7.9-extensions/nit.c 2009-08-23 18:20:09.000000000 +0200 -@@ -147,21 +147,20 @@ - } - if (Setup.UpdateChannels >= 5) { - bool found = false; -- for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { -- if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { -- int transponder = Channel->Transponder(); -- found = true; -- if (!ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), transponder)) { -- for (int n = 0; n < NumFrequencies; n++) { -- if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], Polarization), transponder)) { -- Frequency = Frequencies[n]; -- break; -- } -+ cIterator ChannelIterator = Channels.GetChannelsBySourceNidTid(Source, ts.getOriginalNetworkId(), ts.getTransportStreamId()); -+ for (cChannel *Channel = ChannelIterator.First(); Channel; Channel = ChannelIterator.Next()) { -+ int transponder = Channel->Transponder(); -+ found = true; -+ if (!ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), transponder)) { -+ for (int n = 0; n < NumFrequencies; n++) { -+ if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], Polarization), transponder)) { -+ Frequency = Frequencies[n]; -+ break; - } -- } -- if (ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), Transponder())) // only modify channels if we're actually receiving this transponder -- Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate, Modulation, System, RollOff); -+ } - } -+ if (ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), Transponder())) // only modify channels if we're actually receiving this transponder -+ Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate, Modulation, System, RollOff); - } - if (!found) { - for (int n = 0; n < NumFrequencies; n++) { -@@ -198,21 +197,20 @@ - } - if (Setup.UpdateChannels >= 5) { - bool found = false; -- for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { -- if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { -- int transponder = Channel->Transponder(); -- found = true; -- if (!ISTRANSPONDER(Frequency / 1000, transponder)) { -- for (int n = 0; n < NumFrequencies; n++) { -- if (ISTRANSPONDER(Frequencies[n] / 1000, transponder)) { -- Frequency = Frequencies[n]; -- break; -- } -+ cIterator ChannelIterator = Channels.GetChannelsBySourceNidTid(Source, ts.getOriginalNetworkId(), ts.getTransportStreamId()); -+ for (cChannel *Channel = ChannelIterator.First(); Channel; Channel = ChannelIterator.Next()) { -+ int transponder = Channel->Transponder(); -+ found = true; -+ if (!ISTRANSPONDER(Frequency / 1000, transponder)) { -+ for (int n = 0; n < NumFrequencies; n++) { -+ if (ISTRANSPONDER(Frequencies[n] / 1000, transponder)) { -+ Frequency = Frequencies[n]; -+ break; - } -- } -- if (ISTRANSPONDER(Frequency / 1000, Transponder())) // only modify channels if we're actually receiving this transponder -- Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate); -+ } - } -+ if (ISTRANSPONDER(Frequency / 1000, Transponder())) // only modify channels if we're actually receiving this transponder -+ Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate); - } - if (!found) { - for (int n = 0; n < NumFrequencies; n++) { -@@ -256,21 +254,20 @@ - } - if (Setup.UpdateChannels >= 5) { - bool found = false; -- for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) { -- if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) { -- int transponder = Channel->Transponder(); -- found = true; -- if (!ISTRANSPONDER(Frequency / 1000000, transponder)) { -- for (int n = 0; n < NumFrequencies; n++) { -- if (ISTRANSPONDER(Frequencies[n] / 1000000, transponder)) { -- Frequency = Frequencies[n]; -- break; -- } -+ cIterator ChannelIterator = Channels.GetChannelsBySourceNidTid(Source, ts.getOriginalNetworkId(), ts.getTransportStreamId()); -+ for (cChannel *Channel = ChannelIterator.First(); Channel; Channel = ChannelIterator.Next()) { -+ int transponder = Channel->Transponder(); -+ found = true; -+ if (!ISTRANSPONDER(Frequency / 1000000, transponder)) { -+ for (int n = 0; n < NumFrequencies; n++) { -+ if (ISTRANSPONDER(Frequencies[n] / 1000000, transponder)) { -+ Frequency = Frequencies[n]; -+ break; - } -- } -- if (ISTRANSPONDER(Frequency / 1000000, Transponder())) // only modify channels if we're actually receiving this transponder -- Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode); -+ } - } -+ if (ISTRANSPONDER(Frequency / 1000000, Transponder())) // only modify channels if we're actually receiving this transponder -+ Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode); - } - if (!found) { - for (int n = 0; n < NumFrequencies; n++) { -@@ -281,7 +278,7 @@ - else - delete Channel; - } -- } -+ } - } - } - break; -diff -u --recursive vdr-1.7.9/osdbase.c vdr-1.7.9-extensions/osdbase.c ---- vdr-1.7.9/osdbase.c 2009-06-01 13:54:50.000000000 +0200 -+++ vdr-1.7.9-extensions/osdbase.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/osdbase.c vdr-1.7.10b/osdbase.c +--- vdr-1.7.10/osdbase.c 2009-06-01 13:54:50.000000000 +0200 ++++ vdr-1.7.10b/osdbase.c 2009-12-30 11:33:26.000000000 +0100 @@ -22,6 +22,9 @@ state = State; selectable = true; @@ -8375,9 +7852,9 @@ diff -u --recursive vdr-1.7.9/osdbase.c vdr-1.7.9-extensions/osdbase.c case kUp|k_Repeat: case kUp: CursorUp(); break; case kDown|k_Repeat: -diff -u --recursive vdr-1.7.9/osdbase.h vdr-1.7.9-extensions/osdbase.h ---- vdr-1.7.9/osdbase.h 2007-11-03 15:50:52.000000000 +0100 -+++ vdr-1.7.9-extensions/osdbase.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/osdbase.h vdr-1.7.10b/osdbase.h +--- vdr-1.7.10/osdbase.h 2007-11-03 15:50:52.000000000 +0100 ++++ vdr-1.7.10b/osdbase.h 2009-12-30 11:33:26.000000000 +0100 @@ -15,6 +15,10 @@ #include "skins.h" #include "tools.h" @@ -8437,317 +7914,10 @@ diff -u --recursive vdr-1.7.9/osdbase.h vdr-1.7.9-extensions/osdbase.h }; #endif //__OSDBASE_H -diff -u --recursive vdr-1.7.9/osd.c vdr-1.7.9-extensions/osd.c ---- vdr-1.7.9/osd.c 2009-05-09 12:42:35.000000000 +0200 -+++ vdr-1.7.9-extensions/osd.c 2009-08-23 18:20:09.000000000 +0200 -@@ -222,6 +222,8 @@ - - bool cBitmap::Covers(int x1, int y1, int x2, int y2) const - { -+ if (x1 > x2 || y1 > y2) // sanity check -+ return false; - x1 -= x0; - y1 -= y0; - x2 -= x0; -@@ -231,6 +233,8 @@ - - bool cBitmap::Intersects(int x1, int y1, int x2, int y2) const - { -+ if (x1 > x2 || y1 > y2) // sanity check -+ return false; - x1 -= x0; - y1 -= y0; - x2 -= x0; -@@ -399,15 +403,20 @@ - void cBitmap::SetIndex(int x, int y, tIndex Index) - { - if (bitmap) { -- if (0 <= x && x < width && 0 <= y && y < height) { -- if (bitmap[width * y + x] != Index) { -- bitmap[width * y + x] = Index; -- if (dirtyX1 > x) dirtyX1 = x; -- if (dirtyY1 > y) dirtyY1 = y; -- if (dirtyX2 < x) dirtyX2 = x; -- if (dirtyY2 < y) dirtyY2 = y; -- } -- } -+ if (0 <= x && x < width && 0 <= y && y < height) -+ SetIndexInternal(x, y, Index); -+ } -+} -+ -+void cBitmap::SetIndexInternal(int x, int y, tIndex Index) -+{ -+ // this function relies on existing bitmap and valid coordinates -+ if (bitmap[width * y + x] != Index) { -+ bitmap[width * y + x] = Index; -+ if (dirtyX1 > x) dirtyX1 = x; -+ if (dirtyY1 > y) dirtyY1 = y; -+ if (dirtyX2 < x) dirtyX2 = x; -+ if (dirtyY2 < y) dirtyY2 = y; - } - } - -@@ -415,37 +424,147 @@ - { - x -= x0; - y -= y0; -- if (0 <= x && x < width && 0 <= y && y < height) -- SetIndex(x, y, Index(Color)); -+ if (bitmap && 0 <= x && x < width && 0 <= y && y < height) -+ SetIndexInternal(x, y, Index(Color)); - } - - void cBitmap::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, tColor ColorBg, bool ReplacePalette, bool Overlay) - { - if (bitmap && Bitmap.bitmap && Intersects(x, y, x + Bitmap.Width() - 1, y + Bitmap.Height() - 1)) { -- if (Covers(x, y, x + Bitmap.Width() - 1, y + Bitmap.Height() - 1)) -+ bool Covered = Covers(x, y, x + Bitmap.Width() - 1, y + Bitmap.Height() - 1); -+ if (Covered) - Reset(); - x -= x0; - y -= y0; -- if (ReplacePalette && Covers(x + x0, y + y0, x + x0 + Bitmap.Width() - 1, y + y0 + Bitmap.Height() - 1)) { -+ // determine valid destination area [x1,x2]x[y1,y2] to avoid range checks inside the loops -+ int x1 = max(0, x), x2 = min(0 + width , x + Bitmap.width) - 1; -+ int y1 = max(0, y), y2 = min(0 + height, y + Bitmap.height) - 1; -+ -+#define FOR_Y_LOOP0 \ -+ tIndex *pRowSrc = &Bitmap.bitmap[Bitmap.width * (y1 - y) + (x1 - x)]; \ -+ tIndex *pRowDst = &bitmap[width * y1 + x1]; \ -+ for (int &yy = y1, ye = min(y2, dirtyY1 - 1); yy <= ye; yy++, pRowDst += width, pRowSrc += Bitmap.width) -+ -+#define FOR_Y_LOOP1 \ -+ tIndex *pRowSrc = &Bitmap.bitmap[Bitmap.width * (y2 - y) + (x1 - x)]; \ -+ tIndex *pRowDst = &bitmap[width * y2 + x1]; \ -+ for (int &yy = y2, ye = max(y1, dirtyY2 + 1); yy >= ye; yy--, pRowDst -= width, pRowSrc -= Bitmap.width) -+ -+#define DETECT_DIRTY_AREA_Y(Reverse, TransferCondition, TransferOperation) \ -+ do { \ -+ FOR_Y_LOOP##Reverse { \ -+ tIndex *pSrc = pRowSrc; \ -+ tIndex *pDst = pRowDst; \ -+ bool GotDirty = false; \ -+ for (int xx = x1; xx <= x2; xx++) { \ -+ if (TransferCondition) { \ -+ if (*pDst != TransferOperation) { \ -+ GotDirty = true; \ -+ if (dirtyX1 > xx) dirtyX1 = xx; \ -+ if (dirtyX2 < xx) dirtyX2 = xx; \ -+ } \ -+ } \ -+ pSrc++; \ -+ pDst++; \ -+ } \ -+ if (GotDirty) { \ -+ if (dirtyY1 > yy) dirtyY1 = yy; \ -+ if (dirtyY2 < yy) dirtyY2 = yy; \ -+ break; \ -+ } \ -+ } \ -+ } \ -+ while (false) -+ -+#define FOR_X_LOOP0 \ -+ tIndex *pColSrc = &Bitmap.bitmap[Bitmap.width * (y1 - y) + (x1 - x)]; \ -+ tIndex *pColDst = &bitmap[width * y1 + x1]; \ -+ for (int &xx = x1, xe = min(x2, dirtyX1 - 1); xx <= xe; xx++, pColDst++, pColSrc++) -+ -+#define FOR_X_LOOP1 \ -+ tIndex *pColSrc = &Bitmap.bitmap[Bitmap.width * (y1 - y) + (x2 - x)]; \ -+ tIndex *pColDst = &bitmap[width * y1 + x2]; \ -+ for (int &xx = x2, xe = max(x1, dirtyX2 + 1); xx >= xe; xx--, pColDst--, pColSrc--) -+ -+#define DETECT_DIRTY_AREA_X(Reverse, TransferCondition, TransferOperation) \ -+ do { \ -+ FOR_X_LOOP##Reverse { \ -+ tIndex *pSrc = pColSrc; \ -+ tIndex *pDst = pColDst; \ -+ bool GotDirty = false; \ -+ for (int yy = y1; yy <= y2; yy++) { \ -+ if (TransferCondition) { \ -+ if (*pDst != TransferOperation) { \ -+ GotDirty = true; \ -+ if (dirtyX1 > xx) dirtyX1 = xx; \ -+ if (dirtyX2 < xx) dirtyX2 = xx; \ -+ break; \ -+ } \ -+ } \ -+ pSrc += Bitmap.width; \ -+ pDst += width; \ -+ } \ -+ if (GotDirty) \ -+ break; \ -+ } \ -+ } \ -+ while (false) -+ -+#define DRAW_BITMAP(TransferCondition, TransferOperation, CanUseMemCpy) \ -+ do { \ -+ DETECT_DIRTY_AREA_Y(0, TransferCondition, TransferOperation); /* above */ \ -+ DETECT_DIRTY_AREA_Y(1, TransferCondition, TransferOperation); /* below */ \ -+ if (y2 < y1) /* nothing dirty */ \ -+ return; \ -+ DETECT_DIRTY_AREA_X(0, TransferCondition, TransferOperation); /* left */ \ -+ DETECT_DIRTY_AREA_X(1, TransferCondition, TransferOperation); /* right */ \ -+ /* process dirty area now */ \ -+ tIndex *pRowSrc = &Bitmap.bitmap[Bitmap.width * (y1 - y) + (x1 - x)]; \ -+ tIndex *pRowDst = &bitmap[width * y1 + x1]; \ -+ int n = sizeof(tIndex) * (x2 - x1 + 1); \ -+ for (int yy = y1; yy <= y2; yy++) { \ -+ tIndex *pSrc = pRowSrc; \ -+ tIndex *pDst = pRowDst; \ -+ if (CanUseMemCpy) \ -+ memcpy(pDst, pSrc, n); \ -+ else { \ -+ for (int xx = x1; xx <= x2; xx++) { \ -+ if (TransferCondition) \ -+ *pDst = TransferOperation; \ -+ pSrc++; \ -+ pDst++; \ -+ } \ -+ } \ -+ pRowSrc += Bitmap.width; \ -+ pRowDst += width; \ -+ } \ -+ } \ -+ while (false) -+ -+ if (ReplacePalette && Covered) { - Replace(Bitmap); -- for (int ix = 0; ix < Bitmap.width; ix++) { -- for (int iy = 0; iy < Bitmap.height; iy++) { -- if (!Overlay || Bitmap.bitmap[Bitmap.width * iy + ix] != 0) -- SetIndex(x + ix, y + iy, Bitmap.bitmap[Bitmap.width * iy + ix]); -- } -- } -+ if (Overlay) -+ DRAW_BITMAP(*pSrc != 0, *pSrc, false); -+ else -+ DRAW_BITMAP(true, *pSrc, true); - } - else { - tIndexes Indexes; - Take(Bitmap, &Indexes, ColorFg, ColorBg); -- for (int ix = 0; ix < Bitmap.width; ix++) { -- for (int iy = 0; iy < Bitmap.height; iy++) { -- if (!Overlay || Bitmap.bitmap[Bitmap.width * iy + ix] != 0) -- SetIndex(x + ix, y + iy, Indexes[int(Bitmap.bitmap[Bitmap.width * iy + ix])]); -- } -- } -+ if (Overlay) -+ DRAW_BITMAP(*pSrc != 0, Indexes[(int)*pSrc], false); -+ else -+ DRAW_BITMAP(true, Indexes[(int)*pSrc], false); - } - } -+ -+#undef DRAW_BITMAP -+#undef DETECT_DIRTY_AREA_Y -+#undef FOR_Y_LOOP0 -+#undef FOR_Y_LOOP1 -+#undef DETECT_DIRTY_AREA_X -+#undef FOR_X_LOOP0 -+#undef FOR_X_LOOP1 - } - - void cBitmap::DrawText(int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width, int Height, int Alignment) -@@ -507,10 +626,91 @@ - x2 = min(x2, width - 1); - y2 = min(y2, height - 1); - tIndex c = Index(Color); -- for (int y = y1; y <= y2; y++) -- for (int x = x1; x <= x2; x++) -- SetIndex(x, y, c); -+ -+#define FOR_Y_LOOP0 \ -+ tIndex *pRowDst = &bitmap[width * y1 + x1]; \ -+ for (int &yy = y1, ye = min(y2, dirtyY1 - 1); yy <= ye; yy++, pRowDst += width) -+ -+#define FOR_Y_LOOP1 \ -+ tIndex *pRowDst = &bitmap[width * y2 + x1]; \ -+ for (int &yy = y2, ye = max(y1, dirtyY2 + 1); yy >= ye; yy--, pRowDst -= width) -+ -+#define DETECT_DIRTY_AREA_Y(Reverse) \ -+ do { \ -+ FOR_Y_LOOP##Reverse { \ -+ tIndex *pDst = pRowDst; \ -+ bool GotDirty = false; \ -+ for (int xx = x1; xx <= x2; xx++) { \ -+ if (*pDst != c) { \ -+ GotDirty = true; \ -+ if (dirtyX1 > xx) dirtyX1 = xx; \ -+ if (dirtyX2 < xx) dirtyX2 = xx; \ -+ } \ -+ pDst++; \ -+ } \ -+ if (GotDirty) { \ -+ if (dirtyY1 > yy) dirtyY1 = yy; \ -+ if (dirtyY2 < yy) dirtyY2 = yy; \ -+ break; \ -+ } \ -+ } \ -+ } \ -+ while (false) -+ -+#define FOR_X_LOOP0 \ -+ tIndex *pColDst = &bitmap[width * y1 + x1]; \ -+ for (int &xx = x1, xe = min(x2, dirtyX1 - 1); xx <= xe; xx++, pColDst++) -+ -+#define FOR_X_LOOP1 \ -+ tIndex *pColDst = &bitmap[width * y1 + x2]; \ -+ for (int &xx = x2, xe = max(x1, dirtyX2 + 1); xx >= xe; xx--, pColDst--) -+ -+#define DETECT_DIRTY_AREA_X(Reverse) \ -+ do { \ -+ FOR_X_LOOP##Reverse { \ -+ tIndex *pDst = pColDst; \ -+ bool GotDirty = false; \ -+ for (int yy = y1; yy <= y2; yy++) { \ -+ if (*pDst != c) { \ -+ GotDirty = true; \ -+ if (dirtyX1 > xx) dirtyX1 = xx; \ -+ if (dirtyX2 < xx) dirtyX2 = xx; \ -+ break; \ -+ } \ -+ pDst += width; \ -+ } \ -+ if (GotDirty) \ -+ break; \ -+ } \ -+ } \ -+ while (false) -+ -+ DETECT_DIRTY_AREA_Y(0); /* above */ -+ DETECT_DIRTY_AREA_Y(1); /* below */ -+ if (y2 < y1) /* nothing dirty */ -+ return; -+ DETECT_DIRTY_AREA_X(0); /* left */ -+ DETECT_DIRTY_AREA_X(1); /* right */ -+ // now fill only dirty area of rectangle -+ tIndex *pRowDst = &bitmap[width * y1 + x1]; -+ tIndex *pDst = pRowDst; -+ for (int x = x1; x <= x2; x++) -+ *pDst++ = c; -+ // copy the single line above to all other lines -+ tIndex *pRowSrc = pRowDst; -+ int n = sizeof(tIndex) * (x2 - x1 + 1); -+ for (int y = y1 + 1; y <= y2; y++) { -+ pRowDst += width; -+ memcpy(pRowDst, pRowSrc, n); -+ } - } -+ -+#undef DETECT_DIRTY_AREA_Y -+#undef FOR_Y_LOOP0 -+#undef FOR_Y_LOOP1 -+#undef DETECT_DIRTY_AREA_X -+#undef FOR_X_LOOP0 -+#undef FOR_X_LOOP1 - } - - void cBitmap::DrawEllipse(int x1, int y1, int x2, int y2, tColor Color, int Quadrants) -@@ -725,6 +925,9 @@ +diff -Naur vdr-1.7.10/osd.c vdr-1.7.10b/osd.c +--- vdr-1.7.10/osd.c 2009-05-09 12:42:35.000000000 +0200 ++++ vdr-1.7.10b/osd.c 2009-12-30 11:33:26.000000000 +0100 +@@ -725,6 +725,9 @@ int cOsd::osdWidth = 0; int cOsd::osdHeight = 0; cVector cOsd::Osds; @@ -8757,7 +7927,7 @@ diff -u --recursive vdr-1.7.9/osd.c vdr-1.7.9-extensions/osd.c cOsd::cOsd(int Left, int Top, uint Level) { -@@ -735,6 +938,9 @@ +@@ -735,6 +738,9 @@ width = height = 0; level = Level; active = false; @@ -8767,18 +7937,10 @@ diff -u --recursive vdr-1.7.9/osd.c vdr-1.7.9-extensions/osd.c for (int i = 0; i < Osds.Size(); i++) { if (Osds[i]->level > level) { Osds.Insert(this, i); -diff -u --recursive vdr-1.7.9/osd.h vdr-1.7.9-extensions/osd.h ---- vdr-1.7.9/osd.h 2009-05-08 15:41:03.000000000 +0200 -+++ vdr-1.7.9-extensions/osd.h 2009-08-23 18:20:09.000000000 +0200 -@@ -136,6 +136,7 @@ - int x0, y0; - int width, height; - int dirtyX1, dirtyY1, dirtyX2, dirtyY2; -+ void SetIndexInternal(int x, int y, tIndex Index); - public: - cBitmap(int Width, int Height, int Bpp, int X0 = 0, int Y0 = 0); - ///< Creates a bitmap with the given Width, Height and color depth (Bpp). -@@ -401,6 +402,12 @@ +diff -Naur vdr-1.7.10/osd.h vdr-1.7.10b/osd.h +--- vdr-1.7.10/osd.h 2009-05-08 15:41:03.000000000 +0200 ++++ vdr-1.7.10b/osd.h 2009-12-30 11:33:26.000000000 +0100 +@@ -401,6 +401,12 @@ ///< 7: vertical, falling, upper virtual void Flush(void); ///< Actually commits all data to the OSD hardware. @@ -8791,9 +7953,9 @@ diff -u --recursive vdr-1.7.9/osd.h vdr-1.7.9-extensions/osd.h }; class cOsdProvider { -diff -u --recursive vdr-1.7.9/pat.c vdr-1.7.9-extensions/pat.c ---- vdr-1.7.9/pat.c 2009-08-16 17:01:03.000000000 +0200 -+++ vdr-1.7.9-extensions/pat.c 2009-08-23 18:39:52.000000000 +0200 +diff -Naur vdr-1.7.10/pat.c vdr-1.7.10b/pat.c +--- vdr-1.7.10/pat.c 2009-08-16 17:01:03.000000000 +0200 ++++ vdr-1.7.10b/pat.c 2009-12-30 11:33:26.000000000 +0100 @@ -13,6 +13,9 @@ #include "libsi/section.h" #include "libsi/descriptor.h" @@ -8820,24 +7982,24 @@ diff -u --recursive vdr-1.7.9/pat.c vdr-1.7.9-extensions/pat.c NumSpids++; } break; -+ #ifdef USE_TTXTSUBS -+ case SI::TeletextDescriptorTag: { -+ Tpid = stream.getPid(); -+ SI::TeletextDescriptor *sd = (SI::TeletextDescriptor *)d; -+ SI::TeletextDescriptor::Teletext ttxt; -+ for (SI::Loop::Iterator it; sd->teletextLoop.getNext(ttxt, it); ) { -+ if ((NumTPages < MAXTPAGES) && ttxt.languageCode[0] && ((ttxt.getTeletextType() == 0x02) || (ttxt.getTeletextType() == 0x05))) { -+ char *s = TLangs[NumTPages]; -+ strn0cpy(s, I18nNormalizeLanguageCode(ttxt.languageCode), MAXLANGCODE1); -+ TPages[NumTPages] = (ttxt.getTeletextPageNumber() & 0xff) | ((ttxt.getTeletextMagazineNumber() & 0xff) << 8) | ((ttxt.getTeletextType() & 0xff) << 16); -+ NumTPages++; -+ } -+ } -+ } -+ #else ++#ifdef USE_TTXTSUBS ++ case SI::TeletextDescriptorTag: { ++ Tpid = esPid; ++ SI::TeletextDescriptor *sd = (SI::TeletextDescriptor *)d; ++ SI::TeletextDescriptor::Teletext ttxt; ++ for (SI::Loop::Iterator it; sd->teletextLoop.getNext(ttxt, it); ) { ++ if ((NumTPages < MAXTPAGES) && ttxt.languageCode[0] && ((ttxt.getTeletextType() == 0x02) || (ttxt.getTeletextType() == 0x05))) { ++ char *s = TLangs[NumTPages]; ++ strn0cpy(s, I18nNormalizeLanguageCode(ttxt.languageCode), MAXLANGCODE1); ++ TPages[NumTPages] = (ttxt.getTeletextPageNumber() & 0xff) | ((ttxt.getTeletextMagazineNumber() & 0xff) << 8) | ((ttxt.getTeletextType() & 0xff) << 16); ++ NumTPages++; ++ } ++ } ++ } ++#else case SI::TeletextDescriptorTag: Tpid = esPid; -+ #endif /* TTXTSUBS */ ++#endif /* TTXTSUBS */ break; case SI::ISO639LanguageDescriptorTag: { SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d; @@ -8860,10 +8022,9 @@ diff -u --recursive vdr-1.7.9/pat.c vdr-1.7.9-extensions/pat.c Channel->SetCaIds(CaDescriptors->CaIds()); Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds); } -Nur in vdr-1.7.9-extensions: pat.c~. -diff -u --recursive vdr-1.7.9/plugin.c vdr-1.7.9-extensions/plugin.c ---- vdr-1.7.9/plugin.c 2009-04-05 12:16:48.000000000 +0200 -+++ vdr-1.7.9-extensions/plugin.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/plugin.c vdr-1.7.10b/plugin.c +--- vdr-1.7.10/plugin.c 2009-04-05 12:16:48.000000000 +0200 ++++ vdr-1.7.10b/plugin.c 2009-12-30 11:33:26.000000000 +0100 @@ -317,6 +317,14 @@ char *p = strchr(s, ' '); if (p) @@ -8891,15 +8052,15 @@ diff -u --recursive vdr-1.7.9/plugin.c vdr-1.7.9-extensions/plugin.c } return true; } -diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po ---- vdr-1.7.9/po/de_DE.po 2009-08-23 14:55:37.000000000 +0200 -+++ vdr-1.7.9-extensions/po/de_DE.po 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/po/de_DE.po vdr-1.7.10b/po/de_DE.po +--- vdr-1.7.10/po/de_DE.po 2009-11-22 12:30:27.000000000 +0100 ++++ vdr-1.7.10b/po/de_DE.po 2009-12-30 11:33:26.000000000 +0100 @@ -806,6 +806,30 @@ msgid "Setup.Miscellaneous$Emergency exit" msgstr "Notausstieg" +msgid "Setup.Miscellaneous$Volume ctrl with left/right" -+msgstr "Lautstärke mit Rechts/Links regeln" ++msgstr "Lautst?rke mit Rechts/Links regeln" + +msgid "Setup.Miscellaneous$Channelgroups with left/right" +msgstr "Kanalgruppen mit Rechts/Links" @@ -8908,24 +8069,24 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "nur in Kanalinfo" + +msgid "Setup.Miscellaneous$Search fwd/back with left/right" -+msgstr "Vor-/Rücklauf mit Rechts/Links" ++msgstr "Vor-/R?cklauf mit Rechts/Links" + +msgid "Setup.Miscellaneous$only in progress display" +msgstr "nur in Fortschrittsanzeige" + +msgid "Setup.Miscellaneous$Lirc repeat delay" -+msgstr "Lirc Verzögerung" ++msgstr "Lirc Verz?gerung" + +msgid "Setup.Miscellaneous$Lirc repeat freq" +msgstr "Lirc Frequenz" + +msgid "Setup.Miscellaneous$Lirc repeat timeout" -+msgstr "Lirc Zeitbeschränkung" ++msgstr "Lirc Zeitbeschr?nkung" + msgid "Plugins" msgstr "Plugins" -@@ -1022,3 +1046,306 @@ +@@ -1028,3 +1052,306 @@ #, c-format msgid "VDR will shut down in %s minutes" msgstr "VDR wird in %s Minuten ausschalten" @@ -8943,7 +8104,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Pfad" + +msgid "Timer commands" -+msgstr "Befehle für Aufzeichnungen" ++msgstr "Befehle f?r Aufzeichnungen" + +msgid "Rename recording" +msgstr "Aufzeichnung umbenennen" @@ -8952,25 +8113,25 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Datum" + +msgid "Length" -+msgstr "Länge" ++msgstr "L?nge" + +msgid "Size" -+msgstr "Größe" ++msgstr "Gr??e" + +msgid "Delete marks information?" -+msgstr "Marks löschen?" ++msgstr "Marks l?schen?" + +msgid "Delete resume information?" -+msgstr "Resume löschen?" ++msgstr "Resume l?schen?" + +msgid "DVD plugin is not installed!" +msgstr "Das DVD-Plugin ist nicht installiert!" + +msgid "main dir alphabetically, subdirs flexible" -+msgstr "Alphabet für Haupt-, flexibel für Unterverzeichnisse" ++msgstr "Alphabet f?r Haupt-, flexibel f?r Unterverzeichnisse" + +msgid "main dir by date, subdirs flexible" -+msgstr "Datum für Haupt-, flexibel für Unterverzeichnisse" ++msgstr "Datum f?r Haupt-, flexibel f?r Unterverzeichnisse" + +msgid "all alphabetically" +msgstr "Alles alphabetisch" @@ -8985,7 +8146,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "WarEagle icons verwenden" + +msgid "Setup.OSD$Main menu title" -+msgstr "Hauptmenü Titel" ++msgstr "Hauptmen? Titel" + +msgid "Setup.OSD$- Text" +msgstr "- Text" @@ -9003,16 +8164,16 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "VDR - Version" + +msgid "Setup.OSD$Main menu command position" -+msgstr "Befehle Position im Hauptmenü" ++msgstr "Befehle Position im Hauptmen?" + +msgid "Setup.OSD$Show valid input" -+msgstr "Zeige gültige Eingabe" ++msgstr "Zeige g?ltige Eingabe" + +msgid "Setup.EPG$Show progress bar" +msgstr "Zeitbalken anzeigen" + +msgid "Setup.EPG$Period for double EPG search(min)" -+msgstr "Zeitspanne für dop. EPG-Suche (min)" ++msgstr "Zeitspanne f?r dop. EPG-Suche (min)" + +msgid "Setup.EPG$Extern double Epg entry" +msgstr "Doppelten externen EPG-Eintrag" @@ -9024,7 +8185,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "anwenden" + +msgid "delete" -+msgstr "löschen" ++msgstr "l?schen" + +msgid "Setup.EPG$Mix intern and extern EPG" +msgstr "Internes und externes EPG mischen" @@ -9036,7 +8197,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "AC3-Transfer Fix benutzen" + +msgid "Setup.DVB$Channel Blocker" -+msgstr "Sperre Kanäle" ++msgstr "Sperre Kan?le" + +msgid "Setup.DVB$Channel Blocker Filter Mode" +msgstr "Kanal Sperren Filter" @@ -9063,13 +8224,13 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "mit Decoder" + +msgid "is primary" -+msgstr "ist primär" ++msgstr "ist prim?r" + +msgid "has decoder + is primary" -+msgstr "mit Decoder und primär" ++msgstr "mit Decoder und prim?r" + +msgid "Setup.LNB$DVB device %d uses LNB No." -+msgstr "DVB-Empfänger %d nutzt LNB Nr." ++msgstr "DVB-Empf?nger %d nutzt LNB Nr." + +msgid "Setup.LNB$Log LNB usage" +msgstr "LNB-Nutzung protokollieren" @@ -9084,7 +8245,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Anzahl der Videoverzeichnisse" + +msgid "Setup.Recording$Video %d priority" -+msgstr "Video %d Priorität" ++msgstr "Video %d Priorit?t" + +msgid "Setup.Recording$Video %d min. free MB" +msgstr "Video %d min. MB frei" @@ -9093,13 +8254,13 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Freundliche Dateinamen" + +msgid "Setup.Recording$Max. recording size (GB)" -+msgstr "Max. Aufnahmengröße (GB)" ++msgstr "Max. Aufnahmengr??e (GB)" + +msgid "Setup.Recording$Hard Link Cutter" +msgstr "Hard Link Cutter" + +msgid "Setup.Recording$Delete timeshift recording" -+msgstr "Zeitversetzte Aufnahme löschen" ++msgstr "Zeitversetzte Aufnahme l?schen" + +msgid "request" +msgstr "abfragen" @@ -9111,10 +8272,10 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Aufnahmezeit anzeigen" + +msgid "Setup.Recording$Show length" -+msgstr "Länge der Aufnahme anzeigen" ++msgstr "L?nge der Aufnahme anzeigen" + +msgid "Setup.Recording$Show end of timer" -+msgstr "Ende für Timer anzeigen" ++msgstr "Ende f?r Timer anzeigen" + +msgid "Setup.Recording$Sort recordings by" +msgstr "Aufnahmen sortieren nach" @@ -9123,7 +8284,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Verzeichnisse vor Aufnahmen einsortieren" + +msgid "Setup.Recording$Cutter auto delete" -+msgstr "Aufnahmen nach dem Schneiden löschen" ++msgstr "Aufnahmen nach dem Schneiden l?schen" + +msgid "Setup.Recording$Cutter adjust starttime" +msgstr "Startzeit beim Schneiden anpassen" @@ -9147,10 +8308,10 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Sprungweite in Sekunden Langsam" + +msgid "Setup.Replay$Length" -+msgstr "Länge" ++msgstr "L?nge" + +msgid "Setup.Replay$Length / Number" -+msgstr "Länge / Nummer" ++msgstr "L?nge / Nummer" + +msgid "Setup.Replay$Number" +msgstr "Nummer" @@ -9159,7 +8320,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "DVD Anzeige" + +msgid "Setup.Replay$DVD display leading zeros" -+msgstr "DVD führende Nullen anzeigen" ++msgstr "DVD f?hrende Nullen anzeigen" + +msgid "Setup.Replay$never" +msgstr "nie" @@ -9174,7 +8335,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "am Anfang und Ende" + +msgid "Setup.Replay$Tray open" -+msgstr "DVD-Schublade öffnen" ++msgstr "DVD-Schublade ?ffnen" + +msgid "Setup.Replay$Limit DVD to speed" +msgstr "DVD drosseln auf" @@ -9189,7 +8350,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Sprung -60s" + +msgid "Cutter already running - Add to cutting queue?" -+msgstr "Schnitt bereits aktiv - zur Schnitt-Liste hinzufügen?" ++msgstr "Schnitt bereits aktiv - zur Schnitt-Liste hinzuf?gen?" + +msgid "Format" +msgstr "Format" @@ -9201,7 +8362,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "TS" + +msgid "Rename$Up" -+msgstr "Höher" ++msgstr "H?her" + +msgid "Rename$Down" +msgstr "Tiefer" @@ -9210,7 +8371,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Vorheriger" + +msgid "Rename$Next" -+msgstr "Nächster" ++msgstr "N?chster" + +msgid "Please mount %s" +msgstr "Bitte %s einlegen!" @@ -9222,7 +8383,7 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po +msgstr "Bitte DVD %d einlegen!" + +msgid "Please wait. Checking DVD..." -+msgstr "Bitte warten. Überprüfe DVD..." ++msgstr "Bitte warten. ?berpr?fe DVD..." + +msgid "No index-file found. Creating may take minutes. Create one?" +msgstr "Keine Index-Datei gefunden. Erstellung kann Minuten dauern. Erstellen?" @@ -9232,10 +8393,10 @@ diff -u --recursive vdr-1.7.9/po/de_DE.po vdr-1.7.9-extensions/po/de_DE.po + +msgid "Wrong DVD!" +msgstr "Falsche DVD!" -diff -u --recursive vdr-1.7.9/po/et_EE.po vdr-1.7.9-extensions/po/et_EE.po ---- vdr-1.7.9/po/et_EE.po 2009-08-23 14:55:37.000000000 +0200 -+++ vdr-1.7.9-extensions/po/et_EE.po 2009-08-23 18:20:09.000000000 +0200 -@@ -1022,3 +1022,33 @@ +diff -Naur vdr-1.7.10/po/et_EE.po vdr-1.7.10b/po/et_EE.po +--- vdr-1.7.10/po/et_EE.po 2009-11-22 12:28:38.000000000 +0100 ++++ vdr-1.7.10b/po/et_EE.po 2009-12-30 11:34:37.000000000 +0100 +@@ -1028,3 +1028,33 @@ #, c-format msgid "VDR will shut down in %s minutes" msgstr "VDR lülitub välja %s minuti pärast" @@ -9269,9 +8430,9 @@ diff -u --recursive vdr-1.7.9/po/et_EE.po vdr-1.7.9-extensions/po/et_EE.po + +msgid "Rename$Next" +msgstr "Järgmine" -diff -u --recursive vdr-1.7.9/po/fi_FI.po vdr-1.7.9-extensions/po/fi_FI.po ---- vdr-1.7.9/po/fi_FI.po 2009-08-23 14:55:37.000000000 +0200 -+++ vdr-1.7.9-extensions/po/fi_FI.po 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/po/fi_FI.po vdr-1.7.10b/po/fi_FI.po +--- vdr-1.7.10/po/fi_FI.po 2009-11-22 12:28:39.000000000 +0100 ++++ vdr-1.7.10b/po/fi_FI.po 2009-12-30 11:34:37.000000000 +0100 @@ -42,6 +42,253 @@ msgid "Starting EPG scan" msgstr "Ohjelmaoppaan päivitys aloitettu" @@ -9526,7 +8687,7 @@ diff -u --recursive vdr-1.7.9/po/fi_FI.po vdr-1.7.9-extensions/po/fi_FI.po msgid "No title" msgstr "Ei esitystä" -@@ -1025,3 +1272,252 @@ +@@ -1031,3 +1278,252 @@ #, c-format msgid "VDR will shut down in %s minutes" msgstr "VDR sammuu %s minuutin kuluttua" @@ -9779,9 +8940,9 @@ diff -u --recursive vdr-1.7.9/po/fi_FI.po vdr-1.7.9-extensions/po/fi_FI.po + +msgid "Parameters" +msgstr "Parametrit" -diff -u --recursive vdr-1.7.9/po/fr_FR.po vdr-1.7.9-extensions/po/fr_FR.po ---- vdr-1.7.9/po/fr_FR.po 2009-08-23 14:55:37.000000000 +0200 -+++ vdr-1.7.9-extensions/po/fr_FR.po 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/po/fr_FR.po vdr-1.7.10b/po/fr_FR.po +--- vdr-1.7.10/po/fr_FR.po 2009-11-22 12:28:39.000000000 +0100 ++++ vdr-1.7.10b/po/fr_FR.po 2009-12-30 11:34:37.000000000 +0100 @@ -8,6 +8,7 @@ # Pierre Briec , 2006 # Bruno Roussel , 2007 @@ -9790,7 +8951,7 @@ diff -u --recursive vdr-1.7.9/po/fr_FR.po vdr-1.7.9-extensions/po/fr_FR.po # msgid "" msgstr "" -@@ -1028,3 +1029,249 @@ +@@ -1034,3 +1035,249 @@ #, c-format msgid "VDR will shut down in %s minutes" msgstr "VDR s'arrêtera dans %s minutes" @@ -10040,9 +9201,9 @@ diff -u --recursive vdr-1.7.9/po/fr_FR.po vdr-1.7.9-extensions/po/fr_FR.po + +msgid "Wrong DVD!" +msgstr "Mauvais DVD!" -diff -u --recursive vdr-1.7.9/po/it_IT.po vdr-1.7.9-extensions/po/it_IT.po ---- vdr-1.7.9/po/it_IT.po 2009-08-23 14:55:37.000000000 +0200 -+++ vdr-1.7.9-extensions/po/it_IT.po 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/po/it_IT.po vdr-1.7.10b/po/it_IT.po +--- vdr-1.7.10/po/it_IT.po 2009-11-22 12:28:39.000000000 +0100 ++++ vdr-1.7.10b/po/it_IT.po 2009-12-30 11:38:20.000000000 +0100 @@ -37,6 +37,9 @@ msgid "*** Invalid Channel ***" msgstr "*** Canale NON valido ***" @@ -10554,7 +9715,7 @@ diff -u --recursive vdr-1.7.9/po/it_IT.po vdr-1.7.9-extensions/po/it_IT.po @@ -720,6 +1112,9 @@ msgid "pause live video" - msgstr "" + msgstr "pausa video dal vivo" +msgid "request" +msgstr "chiedi" @@ -10766,9 +9927,9 @@ diff -u --recursive vdr-1.7.9/po/it_IT.po vdr-1.7.9-extensions/po/it_IT.po msgid "Plugin" msgstr "Plugin" -@@ -931,6 +1475,30 @@ - msgid "Low disk space!" - msgstr "Poco spazio su disco!" +@@ -937,6 +1481,30 @@ + msgid "Index file regeneration complete" + msgstr "" +#, c-format +msgid "Please mount %s" @@ -10797,10 +9958,10 @@ diff -u --recursive vdr-1.7.9/po/it_IT.po vdr-1.7.9-extensions/po/it_IT.po msgid "Can't shutdown - option '-s' not given!" msgstr "Impossibile spegnere - parametro '-s' non assegnato!" -diff -u --recursive vdr-1.7.9/po/nl_NL.po vdr-1.7.9-extensions/po/nl_NL.po ---- vdr-1.7.9/po/nl_NL.po 2009-08-23 14:55:37.000000000 +0200 -+++ vdr-1.7.9-extensions/po/nl_NL.po 2009-08-23 18:20:09.000000000 +0200 -@@ -1026,3 +1026,240 @@ +diff -Naur vdr-1.7.10/po/nl_NL.po vdr-1.7.10b/po/nl_NL.po +--- vdr-1.7.10/po/nl_NL.po 2009-11-22 12:28:39.000000000 +0100 ++++ vdr-1.7.10b/po/nl_NL.po 2009-12-30 11:33:26.000000000 +0100 +@@ -1032,3 +1032,240 @@ #, c-format msgid "VDR will shut down in %s minutes" msgstr "VDR zal na %s minuten uitschakelen" @@ -10836,7 +9997,7 @@ diff -u --recursive vdr-1.7.9/po/nl_NL.po vdr-1.7.9-extensions/po/nl_NL.po +msgstr "Verwijder hervattingsmarkeringen?" + +msgid "DVD plugin is not installed!" -+msgstr "DVd plugin is niet geÃnstalleerd!" ++msgstr "DVd plugin is niet ge?nstalleerd!" + +msgid "main dir alphabetically, subdirs flexible" +msgstr "hoofdmap alfabetisch, submappen flexibel" @@ -10941,7 +10102,7 @@ diff -u --recursive vdr-1.7.9/po/nl_NL.po vdr-1.7.9-extensions/po/nl_NL.po +msgstr "Sorteer opnames op" + +msgid "Setup.Recording$Sort directories before recordings" -+msgstr "Sorteer mappen vÃÃr opnames" ++msgstr "Sorteer mappen v??r opnames" + +msgid "Setup.Recording$Cutter auto delete" +msgstr "Bestandsbewerker automatisch wissen" @@ -11041,10 +10202,10 @@ diff -u --recursive vdr-1.7.9/po/nl_NL.po vdr-1.7.9-extensions/po/nl_NL.po + +msgid "Wrong DVD!" +msgstr "Verkeerde DVD!" -diff -u --recursive vdr-1.7.9/po/ru_RU.po vdr-1.7.9-extensions/po/ru_RU.po ---- vdr-1.7.9/po/ru_RU.po 2009-08-23 14:55:38.000000000 +0200 -+++ vdr-1.7.9-extensions/po/ru_RU.po 2009-08-23 18:20:09.000000000 +0200 -@@ -1023,3 +1023,249 @@ +diff -Naur vdr-1.7.10/po/ru_RU.po vdr-1.7.10b/po/ru_RU.po +--- vdr-1.7.10/po/ru_RU.po 2009-11-22 12:28:39.000000000 +0100 ++++ vdr-1.7.10b/po/ru_RU.po 2009-12-30 11:34:37.000000000 +0100 +@@ -1029,3 +1029,249 @@ #, c-format msgid "VDR will shut down in %s minutes" msgstr "VDR ÒëÚÛîçØâáï çÕàÕ× %s ÜØÝãâ" @@ -11294,9 +10455,452 @@ diff -u --recursive vdr-1.7.9/po/ru_RU.po vdr-1.7.9-extensions/po/ru_RU.po + +msgid "Wrong DVD!" +msgstr "¾èØÑÚÐ DVD!" -diff -u --recursive vdr-1.7.9/receiver.c vdr-1.7.9-extensions/receiver.c ---- vdr-1.7.9/receiver.c 2007-08-12 13:52:59.000000000 +0200 -+++ vdr-1.7.9-extensions/receiver.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/README.cmdsubmenu vdr-1.7.10b/README.cmdsubmenu +--- vdr-1.7.10/README.cmdsubmenu 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/README.cmdsubmenu 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,54 @@ ++CmdSubmenu patch for VDR ++------------------------ ++ ++With this patch the commands and recording commands menus can be organised ++hierarchically. To create a submenu entry, prefix the name by one ore more "-". ++ ++ ++Standard: ++ ++description_1 : cmd_1 ++description_2 : cmd_2 ++ ++ ++A submenu with two entries: ++ ++Submenu title ... : echo "submenu" ++-description_1 : cmd_1 ++-description_2 : cmd_2 ++ ++The dummy command in the title row is necessary. ++ ++ ++* History ++ ++ 2003-10-08: Version 0.1 - Albu at vdrportal.de ++ http://vdrportal.de/board/thread.php?threadid=6319 ++ ++ 2003-10-09: Version 0.2 - Tobias Grimm ++ - Added Define CMD_SUBMENUS in Makefile ++ ++ 2004-05-28: Version 0.3 - Thomas G?nther ++ - Fixed compilation with gcc-3.3.3 ++ - Added new virtual method AddConfig in cConfig ++ - Redefining of method Add in cListBase to virtual no longer necessary ++ - Improved code in menu.c ++ http://toms-cafe.de/vdr/download/vdr-cmdsubmenu-0.3.diff ++ ++ 2004-12-20: Version 0.4 - Thomas G?nther ++ - Solved conflict with jumpplay patch 0.6 ++ http://toms-cafe.de/vdr/download/vdr-cmdsubmenu-0.4.diff ++ ++ 2006-04-22: Version 0.5 - Thomas G?nther ++ - Added version define CMDSUBMENUVERSNUM ++ - Reformated to VDR style indentions ++ - Added description in README.cmdsubmenu ++ http://toms-cafe.de/vdr/download/vdr-cmdsubmenu-0.5-1.3.47.diff ++ ++ 2006-04-23: Version 0.6 - Thomas G?nther ++ - Fixed menus with more than one level ++ http://toms-cafe.de/vdr/download/vdr-cmdsubmenu-0.6-1.3.47.diff ++ ++ 2006-05-15: Version 0.7 - Thomas G?nther ++ - Fixed build with G++ 4.1 (extra qualification) ++ http://toms-cafe.de/vdr/download/vdr-cmdsubmenu-0.7-1.4.0.diff +diff -Naur vdr-1.7.10/README-HLCUTTER vdr-1.7.10b/README-HLCUTTER +--- vdr-1.7.10/README-HLCUTTER 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/README-HLCUTTER 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,117 @@ ++ ++ VDR-HLCUTTER README ++ ++ ++Written by: Udo Richter ++Available at: http://www.udo-richter.de/vdr/patches.html#hlcutter ++ http://www.udo-richter.de/vdr/patches.en.html#hlcutter ++Contact: udo_richter@gmx.de ++ ++ ++ ++About ++----- ++ ++The hard link cutter patch changes the recording editing algorithms of VDR to ++use filesystem hard links to 'copy' recording files whenever possible to speed ++up editing recordings noticeably. ++ ++The patch has matured to be quite stable, at least I'm using it without issues. ++Nevertheless the patch is still in development and should be used with caution. ++The patch is EXPERIMENTAL for multiple /videoxx folders. The safety checks ++should prevent data loss, but you should always carefully check the results. ++ ++While editing a recording, the patch searches for any 00x.vdr files that dont ++contain editing marks and would normally be copied 1:1 unmodified to the edited ++recording. In this case the current target 00x.vdr file will be aborted, and ++the cutter process attempts to duplicate the source file as a hard link, so ++that both files share the same disk space. If this succeeds, the editing ++process fast-forwards through the duplicated file and continues normally ++beginning with the next source file. If hard linking fails, the cutter process ++continues with plain old copying. (but does not take up the aborted last file.) ++ ++After editing, the un-edited recording can be deleted as usual, the hard linked ++copies will continue to exist as the only remaining copy. ++ ++To be effective, the default 'Max. video file size (MB)' should be lowered. ++The patch lowers the smallest possible file size to 1mb. Since VDR only ++supports up to 255 files, this would limit the recording size to 255Mb or ++10 minutes, in other words: This setting is insane! ++ ++To make sure that the 255 file limit will not be reached, the patch also ++introduces "Max. recording size (GB)" with a default of 100Gb (66 hours), and ++increases the file size to 2000Mb early enough, so that 100Gb-recordings will ++fit into the 255 files. ++ ++Picking the right parameters can be tricky. The smaller the file size, the ++faster the editing process works. However, with a small file size, long ++recordings will fall back to 2000Mb files soon, that are slow on editing again. ++ ++Here are some examples: ++ ++Max file size: 100Gb 100Gb 100Gb 100Gb 100Gb 100Gb 100Gb ++Max recording size: 1Mb 10Mb 20Mb 30Mb 40Mb 50Mb 100Mb ++ ++Small files: 1-203 1-204 1-205 1-206 1-207 1-209 1-214 ++ GBytes: 0.2 2.0 4.0 6.0 8.1 10.2 20.9 ++ Hours: 0.13 1.3 2.65 4 5.4 6.8 13.9 ++ ++Big (2000mb) files: 204-255 204-255 206-255 207-255 208-255 210-255 215-255 ++ GBytes: 101.5 99.6 97.7 95.7 93.8 89.8 80.1 ++ Hours: 67 66 65 63 62 60 53 ++ ++A recording limit of 100Gb keeps plenty of reserve without blocking too much ++file numbers. And with a file size of 30-40Mb, recordings of 4-5 hours fit into ++small files completely. (depends on bit rate of course) ++ ++ ++ ++The patch must be enabled in Setup-> Recordings-> Hard Link Cutter. When ++disabled, the cutter process behaves identical to VDR's default cutter. ++ ++There's a //#define HARDLINK_TEST_ONLY in the videodir.c file that enables a ++test-mode that hard-links 00x.vdr_ files only, and continues the classic ++editing. The resulting 00x.vdr and 00x.vdr_ files should be identical. If you ++delete the un-edited recording, dont forget to delete the *.vdr_ files too, ++they will now eat real disk space. ++ ++Note: 'du' displays the disk space of hard links only on first appearance, and ++usually you will see a noticeably smaller size on the edited recording. ++ ++ ++History ++------- ++Version 0.2.0 ++ ++ New: Support for multiple /videoXX recording folders, using advanced searching ++ for matching file systems where a hard link can be created. ++ Also supports deep mounted file systems. ++ Fix: Do not fail if last mark is a cut-in. (Again.) ++ ++Version 0.1.4 ++ New: Dynamic increase of file size before running out of xxx.vdr files ++ Fix: Last edit mark is not a cut-out ++ Fix: Write error if link-copied file is smaller than allowed file size ++ Fix: Broken index/marks if cut-in is at the start of a new file ++ Fix: Clear dangeling pointer to free'd cUnbufferedFile, ++ thx to Matthias Schwarzott ++ ++Version 0.1.0 ++ Initial release ++ ++ ++ ++ ++Future plans ++------------ ++ ++Since original and edited copy share disk space, free space is wrong if one of ++them is moved to *.del. Free space should only count files with hard link ++count = 1. This still goes wrong if all copies get deleted. ++ ++ ++For more safety, the hard-linked files may be made read-only, as modifications ++to one copy will affect the other copy too. (except deleting, of course) ++ ++ ++SetBrokenLink may get lost on rare cases, this needs some more thoughts.Index: vdr-1.5.9/README.jumpplay +diff -Naur vdr-1.7.10/README.jumpplay vdr-1.7.10b/README.jumpplay +--- vdr-1.7.10/README.jumpplay 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/README.jumpplay 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,92 @@ ++JumpPlay patch for VDR ++---------------------- ++ ++This patch changes the replay behaviour for recordings that contain editing ++marks. It allows to immediately continue the replay after jumping forward to ++the next mark, and to automatically jump over the commercial break to the next ++"start" mark, if an "end" mark is reached. ++ ++The features of this patch can be turned on or off with parameters in the replay ++setup. See MANUAL for description of this parameters: "Jump&Play", "Play&Jump", ++"Pause at last mark" and "Reload marks". ++ ++ ++* History ++ ++ 2003-07-04: jumpandrun.diff - the Noad ++ Jump&Play ++ ++ 2003-12-06: Version 0.0 - Torsten Kunkel ++ Play&Jump (only if progressbar is visible) ++ Setup parameters Jump&Play and Play&Jump in the replay setup ++ ++ 2004-01-20: Version 0.1 - Thomas G?nther ++ Jump&Play: ++ - fixed speed after jump ++ - fixed removing of marks ++ Play&Jump: ++ - jump only on "end" marks ++ ++ 2004-01-27: Version 0.2 - Thomas G?nther ++ Jump&Play: ++ - fixed double jump ++ Play&Jump: ++ - fixed mark detection: fuzzy detection (until 3 seconds after mark) ++ - jump without progressbar ++ - mode "progressbar only" for old behaviour ++ ++ 2004-01-31: Version 0.3 - Thomas G?nther ++ Jump&Play: ++ - fixed display frames ++ Play&Jump: ++ - fixed end of playing at last mark ++ ++ 2004-07-11: Version 0.4 - Thomas G?nther ++ Jump&Play: ++ - don't play after jump to end ++ Play&Jump: ++ - don't prevent jumping after hide or show ++ Less conflicts with other patches (Elchi/AutoPID) ++ ++ 2004-08-21: Version 0.5 - Thomas G?nther ++ Play&Jump: ++ - exact jumps, replay like edited recording (no fuzzy mark detection) ++ - jump to first mark if replay starts at the beginning ++ - check jump marks with '8' key ++ - mode "progressbar only" removed ++ Description in README.jumpplay ++ ++ 2004-12-28: Version 0.6 - Thomas G?nther ++ Adapted noad extensions (from the Noad ) to ++ jumpplay-0.5: ++ - cyclic reloading of marks found by noad online-scan ++ - don't stop after the last mark in case of live-recordings ++ New setup parameter "Load marks interval (s)" ++ Updated description in README.jumpplay ++ ++ 2006-04-14: Version 0.7 - Thomas G?nther ++ Fixed jump to first mark (crashed with plugin extrecmenu-0.9) ++ Added version define JUMPPLAYVERSNUM ++ Added placeholders for Czech language texts ++ Cleaned up i18n entries (support only VDR >= 1.3.29) ++ Improved description of i18n placeholders - hoping for real language texts ++ ++ 2006-05-12: Version 0.8 - Thomas G?nther ++ Fixed segfault in dvbplayer thread while the replaycontrol thread is ++ reloading the marks (thanks to horchi at vdrportal.de for reporting this - ++ see http://vdrportal.de/board/thread.php?postid=450463#post450463): ++ New class cMarksReload checks the timestamp of marks.vdr in 10 seconds ++ intervals, so the marks in the threads dvbplayer and replaycontrol can be ++ reloaded independently ++ Changed setup parameter "Load marks interval (s)" to "Reload marks" ++ Updated description in README.jumpplay ++ ++ 2006-05-28: Version 0.9 - Thomas G?nther ++ New setup parameter "Pause at last mark" ++ Updated description in README.jumpplay ++ Moved parameters description to MANUAL ++ ++ 2009-03-31: Version 1.0 - Thomas G?nther ++ Play&Jump: ++ - set resume position to 0 if replay stops at the first mark ++ Added French language texts (thanks to Micha?l Nival) +diff -Naur vdr-1.7.10/README.MainMenuHooks vdr-1.7.10b/README.MainMenuHooks +--- vdr-1.7.10/README.MainMenuHooks 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/README.MainMenuHooks 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,55 @@ ++This is a "patch" for the Video Disk Recorder (VDR). ++ ++* Authors: ++Tobias Grimm ++Martin Prochnow ++Frank Schmirler ++Christian Wieninger ++ ++* Description: ++This patch allows plugins to replace the VDR mainmenus "Schedule", ++"Channels", "Timers" and "Recordings" by a different implementation. ++ ++The patch is based on a suggestion of Christian Wieninger back in 2006 ++(http://www.linuxtv.org/pipermail/vdr/2006-March/008234.html). It is ++meant to be an interim solution for VDR 1.4 until (maybe) VDR 1.5 ++introduces an official API for this purpose. ++ ++* Installation ++Change into the VDR source directory, then issue ++ patch -p1 < path/to/MainMenuHooks-v1_0.patch ++and recompile. ++ ++* Notes for plugin authors ++The following code sample shows the required plugin code for replacing ++the original Schedule menu: ++ ++bool cMyPlugin::Service(const char *Id, void *Data) ++{ ++ cOsdMenu **menu = (cOsdMenu**) Data; ++ if (MySetup.replaceSchedule && ++ strcmp(Id, "MainMenuHooksPatch-v1.0::osSchedule") == 0) { ++ if (menu) ++ *menu = (cOsdMenu*) MainMenuAction(); ++ return true; ++ } ++ return false; ++} ++ ++A plugin can replace more than one menu at a time. Simply replace the ++call to MainMenuAction() in the sample above by appropriate code. ++ ++Note that a plugin *should* offer a setup option which allows the user ++to enable or disable the replacement. "Disabled" would be a reasonable ++default setting. By testing for define MAINMENUHOOKSVERSNUM, a plugin ++can leave the setup option out at compiletime. ++ ++In case there is an internal problem when trying to open the replacement ++menu, it is safe to return true even though Data is NULL. However an ++OSD message should indicate the problem to the user. ++ ++Feel free to ship this patch along with your plugin. However if you ++think you need to modify the patch, we'd encourage you to contact the ++authors first or at least use a service id which differs in more than ++just the version number. ++ +diff -Naur vdr-1.7.10/README.sortrec vdr-1.7.10b/README.sortrec +--- vdr-1.7.10/README.sortrec 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/README.sortrec 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,48 @@ ++Sort Recordings patch for VDR ++----------------------------- ++Copyright (C) 2005 Frank99 @vdr-portal.de ++Copyright (C) 2006-2008 Christoph Haubrich ++ ++Released under the same license as VDR itself, for details see vdr.c or ++http://firefly.vdr-developer.org/patches ++ ++This patch changes the sort behaviour of the recordings menu. It is based ++on the patch available here: http://www.vdr-portal.de/board/thread.php?threadid=36031 ++Required for this patch is the liemikuutio-patch for VDR which can be found here: ++http://www.saunalahti.fi/%7Erahrenbe/vdr/patches/ ++ ++There are four sorting modes available after this patch is applied: ++ ++mode behaviour for behaviour for ++ main directory sub directories ++-------------------------------------------------------------------------- ++ 0 alphabetically if special character(*) is found alphabetically, ++ else by date ++ 1 by date if special character(*) is found alphabetically, ++ else by date ++ 2 alphabetically alphabetically ++ 3 by date by date ++ ++(*) if the name of a subdirectory ends with one of ".-$" (dot, hyphen, dollar sign) ++ it is sorted alphabetically in sort mode 0 and 1 ++ ++Sort mode 0 with none of the special characters at the end of any subdir ++corresponds to the default sorting mode of the original VDR. ++ ++The sorting mode can be switched through in the recording menu with the '0' key ++(0->1->2->3->0->...), a default for startup can be set in the setup->recordings menu. ++ ++Additionally the sort order (ascending/descending) can be toggled by the '9' key ++(which is always set to ascending after a restart) ++ ++If you like the to see subdirectories before recordings you can select to put ++directories first in the setup->recordings menu. ++ ++If you would like the sorting to ignore a leading '%' (as normally displayed before ++cutted recordings) you can achive this by setting the environment variable LC_COLLATE ++properly (eg. LC_COLLATE=de_DE@euo in runvdr for germany). ++ ++History: ++2006-08-13 v3, sortrec release for VDR 1.4.1 and liemikuutio 1.8 ++2007-01-28 v3a, moved #ifdef from optimized-rename-patch to sortrec ++2008-03-29 v3b, removed ASCII-170 and ASCII-183 to make sortrec Utf8-ready +diff -Naur vdr-1.7.10/README.timer-info vdr-1.7.10b/README.timer-info +--- vdr-1.7.10/README.timer-info 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/README.timer-info 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,53 @@ +++------------------------------------------------------------------------------+ ++| Info about the timer-info-patch by Brougs78 | ++| brougs78@gmx.net / home.pages.at/brougs78 | +++------------------------------------------------------------------------------+ ++ ++ ++README timer-info: ++------------------ ++ ++Features: ++ - Shows info, if it is possible to record an event in the timer menu of vdr. ++ For calculations the free space incl. the deleted recordings is used, ++ considering an average consumtion of 25.75 MB/min (also used by vdr itself). ++ The first column in the timer-list shows: ++ ( + ) recording will be most probably possible (enough space) ++ (+/-) recording may be possible ++ ( - ) recording will most probably fail (to less space) ++ The calculations also consider repeating timers. ++ - It is possible to deactivate the patch in the OSD-menu of VDR. ++ ++ ++HISTORY timer-info: ++------------------- ++ ++25.11.2004: v0.1 ++ - Initial release ++ ++11.01.2005: v0.1b ++ - Bugfixes for vdr-1.3.18 ++ - In the menu the free recording-time no longer includes the space of the ++ deleted recordings, because this slowed the vdr down to much. ++ ++08.07.2005: v0.1c ++ - Made the patch configurable ++ ++29.01.2006: v0.2 - Thomas G?nther ++ - Rewritten great parts for vdr-1.3.38+ ++ http://toms-cafe.de/vdr/download/vdr-timer-info-0.2-1.3.38+.diff ++ ++05.02.2006: v0.3 - Thomas G?nther ++ - Fixed refresh of timer menu in cMenuTimers::OnOff ++ - Fixed check of repeating timers ++ - Syslog debug messages can be enabled with Define DEBUG_TIMER_INFO ++ http://toms-cafe.de/vdr/download/vdr-timer-info-0.3-1.3.38+.diff ++ ++03.03.2006: v0.4 - Thomas G?nther ++ - Adapted to vdr-1.3.44 ++ - Removed setup parameter "Show timer-info" ++ http://toms-cafe.de/vdr/download/vdr-timer-info-0.4-1.3.44.diff ++ ++03.03.2006: v0.5 - Tobias Grimm ++ - Adapted to vdr-1.3.45 ++ http://toms-cafe.de/vdr/download/vdr-timer-info-0.4-1.3.45.diff +diff -Naur vdr-1.7.10/receiver.c vdr-1.7.10b/receiver.c +--- vdr-1.7.10/receiver.c 2007-08-12 13:52:59.000000000 +0200 ++++ vdr-1.7.10b/receiver.c 2009-12-30 11:33:26.000000000 +0100 @@ -12,7 +12,11 @@ #include #include "tools.h" @@ -11322,9 +10926,9 @@ diff -u --recursive vdr-1.7.9/receiver.c vdr-1.7.9-extensions/receiver.c if (numPids >= MAXRECEIVEPIDS) dsyslog("too many PIDs in cReceiver"); } -diff -u --recursive vdr-1.7.9/receiver.h vdr-1.7.9-extensions/receiver.h ---- vdr-1.7.9/receiver.h 2007-01-05 12:00:36.000000000 +0100 -+++ vdr-1.7.9-extensions/receiver.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/receiver.h vdr-1.7.10b/receiver.h +--- vdr-1.7.10/receiver.h 2007-01-05 12:00:36.000000000 +0100 ++++ vdr-1.7.10b/receiver.h 2009-12-30 11:33:26.000000000 +0100 @@ -38,10 +38,15 @@ ///< will be delivered only ONCE, so the cReceiver must make sure that ///< it will be able to buffer the data if necessary. @@ -11341,9 +10945,9 @@ diff -u --recursive vdr-1.7.9/receiver.h vdr-1.7.9-extensions/receiver.h ///< If any of these PIDs are 0, they will be silently ignored. ///< The total number of non-zero PIDs must not exceed MAXRECEIVEPIDS. ///< Priority may be any value in the range -99..99. Negative values indicate -diff -u --recursive vdr-1.7.9/recorder.c vdr-1.7.9-extensions/recorder.c ---- vdr-1.7.9/recorder.c 2009-05-23 14:18:25.000000000 +0200 -+++ vdr-1.7.9-extensions/recorder.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/recorder.c vdr-1.7.10b/recorder.c +--- vdr-1.7.10/recorder.c 2009-11-21 16:58:12.000000000 +0100 ++++ vdr-1.7.10b/recorder.c 2009-12-30 11:33:26.000000000 +0100 @@ -21,8 +21,21 @@ // --- cRecorder ------------------------------------------------------------- @@ -11378,9 +10982,9 @@ diff -u --recursive vdr-1.7.9/recorder.c vdr-1.7.9-extensions/recorder.c recordFile = fileName->NextFile(); fileSize = 0; } -diff -u --recursive vdr-1.7.9/recorder.h vdr-1.7.9-extensions/recorder.h ---- vdr-1.7.9/recorder.h 2009-01-06 11:44:58.000000000 +0100 -+++ vdr-1.7.9-extensions/recorder.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/recorder.h vdr-1.7.10b/recorder.h +--- vdr-1.7.10/recorder.h 2009-01-06 11:44:58.000000000 +0100 ++++ vdr-1.7.10b/recorder.h 2009-12-30 11:33:26.000000000 +0100 @@ -34,7 +34,11 @@ virtual void Receive(uchar *Data, int Length); virtual void Action(void); @@ -11393,9 +10997,9 @@ diff -u --recursive vdr-1.7.9/recorder.h vdr-1.7.9-extensions/recorder.h // Creates a new recorder for the channel with the given ChannelID and // the given Priority that will record the given PIDs into the file FileName. virtual ~cRecorder(); -diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c ---- vdr-1.7.9/recording.c 2009-08-16 12:39:43.000000000 +0200 -+++ vdr-1.7.9-extensions/recording.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/recording.c vdr-1.7.10b/recording.c +--- vdr-1.7.10/recording.c 2009-11-22 12:20:53.000000000 +0100 ++++ vdr-1.7.10b/recording.c 2009-12-30 11:33:26.000000000 +0100 @@ -8,6 +8,9 @@ */ @@ -11406,7 +11010,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c #include #include #include -@@ -24,6 +27,17 @@ +@@ -25,6 +28,17 @@ #include "skins.h" #include "tools.h" #include "videodir.h" @@ -11424,7 +11028,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c #define SUMMARYFALLBACK -@@ -49,6 +63,9 @@ +@@ -50,6 +64,9 @@ #endif #define INFOFILESUFFIX "/info" #define MARKSFILESUFFIX "/marks" @@ -11434,7 +11038,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c #define MINDISKSPACE 1024 // MB -@@ -66,6 +83,13 @@ +@@ -67,6 +84,13 @@ bool VfatFileSystem = false; int InstanceId = 0; @@ -11448,7 +11052,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c cRecordings DeletedRecordings(true); -@@ -601,9 +625,24 @@ +@@ -602,9 +626,24 @@ { resume = RESUME_NOT_INITIALIZED; titleBuffer = NULL; @@ -11473,7 +11077,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c fileSizeMB = -1; // unknown channel = Timer->Channel()->Number(); instanceId = InstanceId; -@@ -638,6 +677,11 @@ +@@ -639,6 +678,11 @@ break; } if (Timer->IsSingleEvent()) { @@ -11485,7 +11089,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c Timer->SetFile(name); // this was an instant recording, so let's set the actual data Timers.SetModified(); } -@@ -648,6 +692,10 @@ +@@ -649,6 +693,10 @@ name = strdup(cString::sprintf("%s~%s", Timer->File(), Subtitle)); // substitute characters that would cause problems in file names: strreplace(name, '\n', ' '); @@ -11496,15 +11100,15 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c start = Timer->StartTime(); priority = Timer->Priority(); lifetime = Timer->Lifetime(); -@@ -670,12 +718,27 @@ +@@ -671,12 +719,27 @@ framesPerSecond = DEFAULTFRAMESPERSECOND; deleted = 0; titleBuffer = NULL; +#ifdef USE_SORTRECORDS + for (int i = 0; i < MAXSORTMODES; i++) { -+ sortBuffer[i] = NULL; -+ lastDirsFirst[i] = -1; -+ } ++ sortBuffer[i] = NULL; ++ lastDirsFirst[i] = -1; ++ } +#else sortBuffer = NULL; +#endif /* SORTRECORDS */ @@ -11524,7 +11128,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c info = new cRecordingInfo; if (p) { time_t now = time(NULL); -@@ -764,15 +827,34 @@ +@@ -765,15 +828,34 @@ LOG_ERROR_STR(*SummaryFileName); } #endif @@ -11559,7 +11163,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c delete info; } -@@ -792,21 +874,46 @@ +@@ -793,21 +875,46 @@ t++; } if (s1 && s2) @@ -11567,7 +11171,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c + if (Setup.RecordingsSortDirsFirst) + *s1 = 'b'; + -+ if ((Setup.RecordingsSortMode <= 1 && s1 != s && !strchr(".-$ª·", *(s1 - 1))) || ++ if ((Setup.RecordingsSortMode <= 1 && s1 != s && !strchr(".-$??", *(s1 - 1))) || + (Setup.RecordingsSortMode == 1 && s1 == s) || + (Setup.RecordingsSortMode == 3)) +#endif /* SORTRECORDS */ @@ -11606,7 +11210,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c } int cRecording::GetResume(void) const -@@ -821,7 +928,15 @@ +@@ -822,7 +929,15 @@ int cRecording::Compare(const cListObject &ListObject) const { cRecording *r = (cRecording *)&ListObject; @@ -11622,7 +11226,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c } const char *cRecording::FileName(void) const -@@ -839,9 +954,359 @@ +@@ -840,9 +955,359 @@ return fileName; } @@ -11982,7 +11586,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c free(titleBuffer); titleBuffer = NULL; if (Level < 0 || Level == HierarchyLevels()) { -@@ -852,7 +1317,14 @@ +@@ -853,7 +1318,14 @@ s++; else s = name; @@ -11997,7 +11601,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c t->tm_mday, t->tm_mon + 1, t->tm_year % 100, -@@ -862,6 +1334,80 @@ +@@ -863,6 +1335,80 @@ New, Delimiter, s)); @@ -12078,7 +11682,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c // let's not display a trailing '~': if (!NewIndicator) stripspace(titleBuffer); -@@ -890,6 +1436,17 @@ +@@ -891,6 +1437,17 @@ return titleBuffer; } @@ -12096,7 +11700,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c const char *cRecording::PrefixFileName(char Prefix) { cString p = PrefixVideoFileName(FileName(), Prefix); -@@ -943,10 +1500,20 @@ +@@ -944,10 +1501,20 @@ // the new name already exists, so let's remove that one first: isyslog("removing recording '%s'", NewName); RemoveVideoFile(NewName); @@ -12117,7 +11721,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c else { isyslog("recording '%s' vanished", FileName()); result = true; // well, we were going to delete it, anyway -@@ -964,7 +1531,13 @@ +@@ -965,7 +1532,13 @@ return false; } isyslog("removing recording %s", FileName()); @@ -12131,7 +11735,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c } bool cRecording::Undelete(void) -@@ -981,8 +1554,15 @@ +@@ -982,8 +1555,15 @@ } else { isyslog("undeleting recording '%s'", FileName()); @@ -12147,7 +11751,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c else { isyslog("deleted recording '%s' vanished", FileName()); result = false; -@@ -998,6 +1578,54 @@ +@@ -999,6 +1579,54 @@ resume = RESUME_NOT_INITIALIZED; } @@ -12202,7 +11806,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c // --- cRecordings ----------------------------------------------------------- cRecordings Recordings; -@@ -1010,6 +1638,9 @@ +@@ -1011,6 +1639,9 @@ deleted = Deleted; lastUpdate = 0; state = 0; @@ -12212,7 +11816,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c } cRecordings::~cRecordings() -@@ -1296,14 +1927,72 @@ +@@ -1297,14 +1928,72 @@ return NULL; } @@ -12285,8 +11889,21 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c isyslog("executing '%s'", *cmd); SystemExec(cmd); } -@@ -1598,6 +2287,17 @@ - return f >= 0; +@@ -1412,8 +2101,11 @@ + // Read data: + else if (ReplayFile) { + int Result = Buffer.Read(ReplayFile, BufferChunks); +- if (Result == 0) // EOF ++ if (Result == 0) { // EOF + ReplayFile = FileName.NextFile(); ++ FileSize = 0; ++ FrameOffset = -1; ++ } + } + // Recording has been processed: + else { +@@ -1746,6 +2438,17 @@ + } } +#ifdef USE_LIEMIEXT @@ -12303,7 +11920,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c // --- cFileName ------------------------------------------------------------- #define MAXFILESPERRECORDINGPES 255 -@@ -1627,6 +2327,48 @@ +@@ -1775,6 +2478,48 @@ cFileName::~cFileName() { Close(); @@ -12352,7 +11969,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c free(fileName); } -@@ -1756,6 +2498,22 @@ +@@ -1904,6 +2649,22 @@ return NULL; } @@ -12375,7 +11992,7 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c cUnbufferedFile *cFileName::NextFile(void) { return SetOffset(fileNumber + 1); -@@ -1807,3 +2565,113 @@ +@@ -1955,3 +2716,113 @@ LOG_ERROR; return r; } @@ -12394,49 +12011,49 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c + + while (*x != 0) { + switch (*x) { -+ case 'Ä': ++ case '?': + *y = 'A'; + y++; + *y = 'e'; + y++; x++; + break; + -+ case 'ä': ++ case '?': + *y = 'a'; + y++; + *y = 'e'; + y++; x++; + break; + -+ case 'Ö': ++ case '?': + *y = 'O'; + y++; + *y = 'e'; + y++; x++; + break; + -+ case 'ö': ++ case '?': + *y = 'o'; + y++; + *y = 'e'; + y++; x++; + break; + -+ case 'Ü': ++ case '?': + *y = 'U'; + y++; + *y = 'e'; + y++; x++; + break; + -+ case 'ü': ++ case '?': + *y = 'u'; + y++; + *y = 'e'; + y++; x++; + break; + -+ case 'ß': ++ case '?': + *y = 's'; + y++; + *y = 's'; @@ -12489,9 +12106,9 @@ diff -u --recursive vdr-1.7.9/recording.c vdr-1.7.9-extensions/recording.c + return(*buf); +} +#endif /* DVLFRIENDLYFNAMES */ -diff -u --recursive vdr-1.7.9/recording.h vdr-1.7.9-extensions/recording.h ---- vdr-1.7.9/recording.h 2009-08-16 17:35:30.000000000 +0200 -+++ vdr-1.7.9-extensions/recording.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/recording.h vdr-1.7.10b/recording.h +--- vdr-1.7.10/recording.h 2009-11-21 17:12:55.000000000 +0100 ++++ vdr-1.7.10b/recording.h 2009-12-30 11:33:26.000000000 +0100 @@ -20,6 +20,9 @@ extern bool VfatFileSystem; @@ -12681,42 +12298,46 @@ diff -u --recursive vdr-1.7.9/recording.h vdr-1.7.9-extensions/recording.h +#endif /* HARDLINKCUTTER */ + struct tIndexTs; + class cIndexFileGenerator; - class cIndexFile { -@@ -233,6 +334,9 @@ +@@ -235,6 +336,10 @@ void ConvertFromPes(tIndexTs *IndexTs, int Count); void ConvertToPes(tIndexTs *IndexTs, int Count); bool CatchUp(int Index = -1); +#ifdef USE_DVDARCHIVE + bool isOnDVD; +#endif /* DVDARCHIVE */ ++ public: cIndexFile(const char *FileName, bool Record, bool IsPesRecording = false); ~cIndexFile(); -@@ -245,6 +349,10 @@ - int GetResume(void) { return resumeFile.Read(); } +@@ -248,6 +353,10 @@ bool StoreResume(int Index) { return resumeFile.Save(Index); } bool IsStillRecording(void); -+#ifdef USE_LIEMIEXT -+ static int Length(const char *FileName, bool IsPesRecording = false); -+ ///< Calculates the recording length without reading the index. -+#endif /* LIEMIEXT */ + void Delete(void); ++ #ifdef USE_LIEMIEXT ++ static int Length(const char *FileName, bool IsPesRecording = false); ++ ///< Calculates the recording length without reading the index. ++ #endif /* LIEMIEXT */ }; class cFileName { -@@ -264,6 +372,9 @@ +@@ -267,6 +376,12 @@ cUnbufferedFile *Open(void); void Close(void); cUnbufferedFile *SetOffset(int Number, off_t Offset = 0); +#ifdef USE_HARDLINKCUTTER + off_t MaxFileSize(); // Dynamic file size for this file +#endif /* HARDLINKCUTTER */ ++ ++ ++ cUnbufferedFile *NextFile(void); }; -diff -u --recursive vdr-1.7.9/remux.c vdr-1.7.9-extensions/remux.c ---- vdr-1.7.9/remux.c 2009-08-16 17:13:42.000000000 +0200 -+++ vdr-1.7.9-extensions/remux.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/remux.c vdr-1.7.10b/remux.c +--- vdr-1.7.10/remux.c 2009-11-22 12:23:27.000000000 +0100 ++++ vdr-1.7.10b/remux.c 2009-12-30 11:33:26.000000000 +0100 @@ -215,6 +215,32 @@ return i; } @@ -12754,13 +12375,13 @@ diff -u --recursive vdr-1.7.9/remux.c vdr-1.7.9-extensions/remux.c numPmtPackets = 0; if (Channel) { int Vpid = Channel->Vpid(); -+#ifdef USE_TTXTSUBS ++ #ifdef USE_TTXTSUBS + int Tpid = Channel->Tpid(); -+#endif /* TTXTSUBS */ ++ #endif /* TTXTSUBS */ + int Ppid = Channel->Ppid(); uchar *p = buf; int i = 0; - p[i++] = 0x02; // table id -@@ -329,6 +358,12 @@ +@@ -330,6 +359,12 @@ i += MakeStream(buf + i, 0x06, Channel->Spid(n)); i += MakeSubtitlingDescriptor(buf + i, Channel->Slang(n), Channel->SubtitlingType(n), Channel->CompositionPageId(n), Channel->AncillaryPageId(n)); } @@ -12773,7 +12394,7 @@ diff -u --recursive vdr-1.7.9/remux.c vdr-1.7.9-extensions/remux.c int sl = i - SectionLength - 2 + 4; // -2 = SectionLength storage, +4 = length of CRC buf[SectionLength] |= (sl >> 8) & 0x0F; -@@ -401,6 +436,9 @@ +@@ -402,6 +437,9 @@ patVersion = pmtVersion = -1; pmtPid = -1; vpid = vtype = 0; @@ -12783,7 +12404,7 @@ diff -u --recursive vdr-1.7.9/remux.c vdr-1.7.9-extensions/remux.c } void cPatPmtParser::ParsePat(const uchar *Data, int Length) -@@ -485,6 +523,9 @@ +@@ -486,6 +524,9 @@ int NumDpids = 0; int NumSpids = 0; vpid = vtype = 0; @@ -12793,7 +12414,7 @@ diff -u --recursive vdr-1.7.9/remux.c vdr-1.7.9-extensions/remux.c SI::PMT::Stream stream; for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) { dbgpatpmt(" stream type = %02X, pid = %d", stream.getStreamType(), stream.getPid()); -@@ -565,6 +606,12 @@ +@@ -566,6 +607,12 @@ NumSpids++; } break; @@ -12806,43 +12427,42 @@ diff -u --recursive vdr-1.7.9/remux.c vdr-1.7.9-extensions/remux.c case SI::ISO639LanguageDescriptorTag: { SI::ISO639LanguageDescriptor *ld = (SI::ISO639LanguageDescriptor *)d; dbgpatpmt(" '%s'", ld->languageCode); -diff -u --recursive vdr-1.7.9/remux.h vdr-1.7.9-extensions/remux.h ---- vdr-1.7.9/remux.h 2009-08-16 17:15:33.000000000 +0200 -+++ vdr-1.7.9-extensions/remux.h 2009-08-23 18:43:36.000000000 +0200 -@@ -169,6 +169,9 @@ +diff -Naur vdr-1.7.10/remux.h vdr-1.7.10b/remux.h +--- vdr-1.7.10/remux.h 2009-11-21 16:55:34.000000000 +0100 ++++ vdr-1.7.10b/remux.h 2009-12-30 11:33:26.000000000 +0100 +@@ -170,6 +170,9 @@ int MakeStream(uchar *Target, uchar Type, int Pid); int MakeAC3Descriptor(uchar *Target); int MakeSubtitlingDescriptor(uchar *Target, const char *Language, uchar SubtitlingType, uint16_t CompositionPageId, uint16_t AncillaryPageId); -+ #ifdef USE_TTXTSUBS -+ int MakeTeletextDescriptor(uchar *Target, cChannel *Channel); -+ #endif /* TTXTSUBS */ ++#ifdef USE_TTXTSUBS ++ int MakeTeletextDescriptor(uchar *Target, cChannel *Channel); ++#endif /* TTXTSUBS */ int MakeLanguageDescriptor(uchar *Target, const char *Language); int MakeCRC(uchar *Target, const uchar *Data, int Length); void GeneratePmtPid(cChannel *Channel); -@@ -213,6 +216,9 @@ - int pmtPid; +@@ -215,6 +218,9 @@ int vpid; int vtype; + bool updatePrimaryDevice; +#ifdef USE_TTXTSUBS + int tpid; +#endif /* TTXTSUBS */ - bool updatePrimaryDevice; protected: int SectionLength(const uchar *Data, int Length) { return (Length >= 3) ? ((int(Data[1]) & 0x0F) << 8)| Data[2] : 0; } -@@ -240,6 +246,9 @@ - int Vpid(void) { return vpid; } - ///< Returns the video pid as defined by the current PMT. + public: +@@ -242,6 +248,9 @@ + ///< Returns the video pid as defined by the current PMT, or 0 if no video + ///< pid has been detected, yet. int Vtype(void) { return vtype; } -+#ifdef USE_TTXTSUBS ++ #ifdef USE_TTXTSUBS + int Tpid(void) { return tpid; } -+#endif /* TTXTSUBS */ ++ #endif /* TTXTSUBS */ + ///< Returns the video stream type as defined by the current PMT, or 0 if no video + ///< stream type has been detected, yet. }; - - // TS to PES converter: -Nur in vdr-1.7.9-extensions: remux.h~. -diff -u --recursive vdr-1.7.9/skinclassic.c vdr-1.7.9-extensions/skinclassic.c ---- vdr-1.7.9/skinclassic.c 2008-02-23 11:31:58.000000000 +0100 -+++ vdr-1.7.9-extensions/skinclassic.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/skinclassic.c vdr-1.7.10b/skinclassic.c +--- vdr-1.7.10/skinclassic.c 2008-02-23 11:31:58.000000000 +0100 ++++ vdr-1.7.10b/skinclassic.c 2009-12-30 11:33:26.000000000 +0100 @@ -314,8 +314,52 @@ for (int i = 0; i < MaxTabs; i++) { const char *s = GetTabbedText(Text, i); @@ -12896,9 +12516,9 @@ diff -u --recursive vdr-1.7.9/skinclassic.c vdr-1.7.9-extensions/skinclassic.c } if (!Tab(i + 1)) break; -diff -u --recursive vdr-1.7.9/skinsttng.c vdr-1.7.9-extensions/skinsttng.c ---- vdr-1.7.9/skinsttng.c 2008-02-23 11:23:44.000000000 +0100 -+++ vdr-1.7.9-extensions/skinsttng.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/skinsttng.c vdr-1.7.10b/skinsttng.c +--- vdr-1.7.10/skinsttng.c 2008-02-23 11:23:44.000000000 +0100 ++++ vdr-1.7.10b/skinsttng.c 2009-12-30 11:33:26.000000000 +0100 @@ -558,8 +558,52 @@ for (int i = 0; i < MaxTabs; i++) { const char *s = GetTabbedText(Text, i); @@ -12974,9 +12594,9 @@ diff -u --recursive vdr-1.7.9/skinsttng.c vdr-1.7.9-extensions/skinsttng.c if (!isempty(Event->Description())) { int yt = y; int yb = y4 - Roundness; -diff -u --recursive vdr-1.7.9/sources.c vdr-1.7.9-extensions/sources.c ---- vdr-1.7.9/sources.c 2008-02-10 15:07:26.000000000 +0100 -+++ vdr-1.7.9-extensions/sources.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/sources.c vdr-1.7.10b/sources.c +--- vdr-1.7.10/sources.c 2008-02-10 15:07:26.000000000 +0100 ++++ vdr-1.7.10b/sources.c 2009-12-30 11:33:26.000000000 +0100 @@ -37,6 +37,9 @@ char buffer[16]; char *q = buffer; @@ -13009,9 +12629,9 @@ diff -u --recursive vdr-1.7.9/sources.c vdr-1.7.9-extensions/sources.c switch (toupper(*s)) { case '0' ... '9': pos *= 10; pos += *s - '0'; -diff -u --recursive vdr-1.7.9/sources.conf vdr-1.7.9-extensions/sources.conf ---- vdr-1.7.9/sources.conf 2008-08-16 12:02:27.000000000 +0200 -+++ vdr-1.7.9-extensions/sources.conf 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/sources.conf vdr-1.7.10b/sources.conf +--- vdr-1.7.10/sources.conf 2009-10-18 16:08:53.000000000 +0200 ++++ vdr-1.7.10b/sources.conf 2009-12-30 11:33:26.000000000 +0100 @@ -194,3 +194,7 @@ # Terrestrial @@ -13020,9 +12640,9 @@ diff -u --recursive vdr-1.7.9/sources.conf vdr-1.7.9-extensions/sources.conf +# Plugin PLUGINPARAM + +#P Plugin -diff -u --recursive vdr-1.7.9/sources.h vdr-1.7.9-extensions/sources.h ---- vdr-1.7.9/sources.h 2005-05-14 11:30:41.000000000 +0200 -+++ vdr-1.7.9-extensions/sources.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/sources.h vdr-1.7.10b/sources.h +--- vdr-1.7.10/sources.h 2005-05-14 11:30:41.000000000 +0200 ++++ vdr-1.7.10b/sources.h 2009-12-30 11:33:26.000000000 +0100 @@ -16,10 +16,17 @@ public: enum eSourceType { @@ -13051,9 +12671,9 @@ diff -u --recursive vdr-1.7.9/sources.h vdr-1.7.9-extensions/sources.h static bool IsCable(int Code) { return (Code & st_Mask) == stCable; } static bool IsSat(int Code) { return (Code & st_Mask) == stSat; } static bool IsTerr(int Code) { return (Code & st_Mask) == stTerr; } -diff -u --recursive vdr-1.7.9/status.c vdr-1.7.9-extensions/status.c ---- vdr-1.7.9/status.c 2008-02-16 15:46:31.000000000 +0100 -+++ vdr-1.7.9-extensions/status.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/status.c vdr-1.7.10b/status.c +--- vdr-1.7.10/status.c 2008-02-16 15:46:31.000000000 +0100 ++++ vdr-1.7.10b/status.c 2009-12-30 11:33:26.000000000 +0100 @@ -29,6 +29,20 @@ sm->TimerChange(Timer, Change); } @@ -13164,9 +12784,9 @@ diff -u --recursive vdr-1.7.9/status.c vdr-1.7.9-extensions/status.c +} +#endif /* GRAPHTFT */ + -diff -u --recursive vdr-1.7.9/status.h vdr-1.7.9-extensions/status.h ---- vdr-1.7.9/status.h 2008-02-16 16:00:33.000000000 +0100 -+++ vdr-1.7.9-extensions/status.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/status.h vdr-1.7.10b/status.h +--- vdr-1.7.10/status.h 2008-02-16 16:00:33.000000000 +0100 ++++ vdr-1.7.10b/status.h 2009-12-30 11:33:26.000000000 +0100 @@ -14,8 +14,14 @@ #include "device.h" #include "player.h" @@ -13269,10 +12889,10 @@ diff -u --recursive vdr-1.7.9/status.h vdr-1.7.9-extensions/status.h }; #endif //__STATUS_H -diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c ---- vdr-1.7.9/submenu.c 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/submenu.c 2009-04-12 13:37:59.000000000 +0200 -@@ -0,0 +1,952 @@ +diff -Naur vdr-1.7.10/submenu.c vdr-1.7.10b/submenu.c +--- vdr-1.7.10/submenu.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/submenu.c 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,949 @@ +#ifdef USE_SETUP +/**************************************************************************** + * DESCRIPTION: @@ -13290,6 +12910,9 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +#ifndef SUBMENU_H +#include "submenu.h" +#include "plugin.h" ++#ifdef USE_WAREAGLEICON ++#include "iconpatch.h" ++#endif /* WAREAGLEICON */ + +static const char* TAG_SYSTEM = "system"; +static const char* TAG_PLUGIN = "plugin"; @@ -13304,7 +12927,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +//# SubMenuNode +//################################################################################ + -+cSubMenuNode::cSubMenuNode(TiXmlElement * xml, int level, cSubMenuNodes *currentMenu, cSubMenuNodes *parentMenu) ++cSubMenuNode::cSubMenuNode(TiXmlElement *xml, int level, cSubMenuNodes *currentMenu, cSubMenuNodes *parentMenu) +{ + init(); + _parentMenu = parentMenu; @@ -13319,7 +12942,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + SetName(xml->Attribute("name")); + if ((_type == COMMAND) || (_type == THREAD)) { + SetCommand(xml->Attribute("execute")); -+ const char * confirmStr = xml->Attribute("confirm"); ++ const char *confirmStr = xml->Attribute("confirm"); + if (confirmStr != NULL && strcmp(confirmStr, TRUE_STR) == 0) + _commandConfirm = true; + } @@ -13409,7 +13032,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +} + + -+bool cSubMenuNode::SaveXml(TiXmlElement * root) ++bool cSubMenuNode::SaveXml(TiXmlElement *root) +{ + bool ok = true; + @@ -13479,7 +13102,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + return(type); +} + -+void cSubMenuNode::SetType(const char * name) ++void cSubMenuNode::SetType(const char *name) +{ + _type = IsType(name); +} @@ -13495,7 +13118,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + return(_type); +} + -+const char * cSubMenuNode::GetTypeAsString() ++const char *cSubMenuNode::GetTypeAsString() +{ + const char *str=NULL; + switch(_type) { @@ -13523,7 +13146,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + return(str); +} + -+void cSubMenuNode::SetCommand(const char * command) ++void cSubMenuNode::SetCommand(const char *command) +{ + if (_command != NULL) + free((void*)_command); @@ -13534,7 +13157,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + _command = NULL; +} + -+const char * cSubMenuNode::GetCommand() ++const char *cSubMenuNode::GetCommand() +{ + return(_command); +} @@ -13552,7 +13175,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + _commandConfirm = false; +} + -+void cSubMenuNode::SetCustomTitle(const char * title) ++void cSubMenuNode::SetCustomTitle(const char *title) +{ + if (_title != NULL) + free((void*)_title); @@ -13563,12 +13186,12 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + _title = NULL; +} + -+const char * cSubMenuNode::GetCustomTitle() ++const char *cSubMenuNode::GetCustomTitle() +{ + return(_title); +} + -+void cSubMenuNode::SetName(const char * name) ++void cSubMenuNode::SetName(const char *name) +{ + if (_name) + free ((void*)_name); @@ -13579,7 +13202,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + _name = NULL; +} + -+const char * cSubMenuNode::GetName() ++const char *cSubMenuNode::GetName() +{ + return(_name); +} @@ -13608,7 +13231,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + _pluginIndex = index; +} + -+void cSubMenuNode::SetPluginMainMenuEntry(const char * mainMenuEntry) ++void cSubMenuNode::SetPluginMainMenuEntry(const char *mainMenuEntry) +{ + if (_pluginMainMenuEntry != NULL) + free((void*)_pluginMainMenuEntry); @@ -13621,35 +13244,34 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + _pluginMainMenuEntry = NULL; +} + -+const char * cSubMenuNode::GetPluginMainMenuEntry() ++const char *cSubMenuNode::GetPluginMainMenuEntry() +{ + return(_pluginMainMenuEntry); +} + + -+ -+cSubMenuNodes * cSubMenuNode::GetParentMenu() ++cSubMenuNodes *cSubMenuNode::GetParentMenu() +{ + return(_parentMenu); +} + -+void cSubMenuNode::SetParentMenu(cSubMenuNodes * parent) ++void cSubMenuNode::SetParentMenu(cSubMenuNodes *parent) +{ + _parentMenu = parent; +} + -+cSubMenuNodes * cSubMenuNode::GetCurrentMenu() ++cSubMenuNodes *cSubMenuNode::GetCurrentMenu() +{ + return(_currentMenu); +} + -+void cSubMenuNode::SetCurrentMenu(cSubMenuNodes * current) ++void cSubMenuNode::SetCurrentMenu(cSubMenuNodes *current) +{ + _currentMenu = current; +} + + -+cSubMenuNodes * cSubMenuNode::GetSubMenus() ++cSubMenuNodes *cSubMenuNode::GetSubMenus() +{ + return(&_subMenus); +} @@ -13685,8 +13307,6 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +//################################################################################ +cSubMenu::cSubMenu() +{ -+ _menuSuffix = NULL; -+ _fname = NULL; + _commandResult = NULL; + _currentMenuTree = &_menuTree; + _currentParentMenuTree = NULL; @@ -13700,10 +13320,6 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + +cSubMenu::~cSubMenu() +{ -+ if (_menuSuffix) -+ free(_menuSuffix); -+ if (_fname) -+ free(_fname); + if (_commandResult) + free(_commandResult); + if (_nodeArray) @@ -13712,26 +13328,28 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +} + + -+bool cSubMenu::LoadXml(char *fname) ++bool cSubMenu::LoadXml(cString fname) +{ + TiXmlDocument xmlDoc = TiXmlDocument(fname); + TiXmlElement *root = NULL; + cSubMenuNode *node = NULL; + + bool ok = true; -+ //Clear previously loaded Menu -+ if (_fname != NULL) -+ free(_fname); ++ // Clear previously loaded Menu + _menuTree.Clear(); -+ _fname = strdup(fname); ++ _fname = fname; + + if ((ok = xmlDoc.LoadFile())) { + if ((root = xmlDoc.FirstChildElement("menus")) != NULL) { -+ char *tmp = NULL; -+ if ((tmp = (char*)root->Attribute("suffix")) == NULL) -+ asprintf(&_menuSuffix, " "); // set default menuSuffix // asprintf(&_menuSuffix, " ..."); ++ cString tmp = root->Attribute("suffix"); ++#ifdef USE_WAREAGLEICON ++ if (strcmp(tmp, "ICON_FOLDER") == 0) tmp = cString::sprintf(" %s", IsLangUtf8() ? ICON_FOLDER_UTF8 : ICON_FOLDER); ++ else if (strcmp(tmp, "ICON_MOVE_FOLDER") == 0) tmp = cString::sprintf(" %s", IsLangUtf8() ? ICON_MOVE_FOLDER_UTF8 : ICON_MOVE_FOLDER); ++#endif /* WAREAGLEICON */ ++ if (*tmp) ++ _menuSuffix = tmp; + else -+ asprintf(&_menuSuffix, tmp); ++ _menuSuffix = cString::sprintf(" "); + + if ((root = root->FirstChildElement()) != NULL) { + do { @@ -13749,13 +13367,13 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + } + } + else { -+ esyslog("ERROR: in %s, missing Tag \n", fname); ++ esyslog("ERROR: in %s, missing Tag \n", *fname); + ok = false; + } + } + else { + esyslog("ERROR: in %s : %s Col=%d Row=%d\n", -+ fname, ++ *fname, + xmlDoc.ErrorDesc(), + xmlDoc.ErrorCol(), + xmlDoc.ErrorRow()); @@ -13772,11 +13390,11 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +} + + -+bool cSubMenu::SaveXml(char *fname) ++bool cSubMenu::SaveXml(cString fname) +{ + bool ok = true; + -+ if (_fname != NULL) { ++ if (*_fname) { + TiXmlDocument xml = TiXmlDocument(fname); + TiXmlComment comment; + comment.SetValue("\n\ @@ -13824,8 +13442,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +} + + -+ -+cSubMenuNodes * cSubMenu::GetMenuTree() ++cSubMenuNodes *cSubMenu::GetMenuTree() +{ + return(_currentMenuTree); +} @@ -13857,7 +13474,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + * @param index position in the current menu + * @return node or null if not found + */ -+cSubMenuNode * cSubMenu::GetNode(int index) ++cSubMenuNode *cSubMenu::GetNode(int index) +{ + cSubMenuNode *node = NULL; + if (_currentMenuTree == NULL || (node=_currentMenuTree->Get(index)) == NULL) @@ -13872,7 +13489,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + * @param index specfies the absolut indes in the list of all nodes + * @return node or NULL if not found + */ -+cSubMenuNode * cSubMenu::GetAbsNode(int index) ++cSubMenuNode *cSubMenu::GetAbsNode(int index) +{ + cSubMenuNode *node = NULL; + GetNrOfNodes(); @@ -13951,7 +13568,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + return(ok); +} + -+const char * cSubMenu::ExecuteCommand(const char * cmd) ++const char *cSubMenu::ExecuteCommand(const char *cmd) +{ + free(_commandResult); + _commandResult = NULL; @@ -14027,7 +13644,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + * @param index index of destination + * @param menuTitle Titel of new Menu entry + */ -+void cSubMenu::CreateMenu(int index, const char * menuTitle) ++void cSubMenu::CreateMenu(int index, const char *menuTitle) +{ + if (index >= 0 && index < _nrNodes) { + cSubMenuNode *srcNode = GetAbsNode(index); @@ -14061,7 +13678,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + +// Private Methods + -+int cSubMenu::countNodes(cSubMenuNodes * tree) ++int cSubMenu::countNodes(cSubMenuNodes *tree) +{ + int count = 0; + if (tree != NULL) { @@ -14075,7 +13692,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +} + + -+void cSubMenu::tree2Array(cSubMenuNodes * tree, int &index) ++void cSubMenu::tree2Array(cSubMenuNodes *tree, int &index) +{ + if (tree != NULL) { + for (cSubMenuNode *node = tree->First(); node; node = tree->Next(node)) { @@ -14087,7 +13704,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + +} + -+bool cSubMenu::IsPluginInMenu(const char * name) ++bool cSubMenu::IsPluginInMenu(const char *name) +{ + bool found = false; + for (int i = 0; i < _nrNodes && found == false; i++) { @@ -14102,7 +13719,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + * Adds the given plugin to the Menu-Tree if not allready in List + * @param name specifies the name of the plugin + */ -+void cSubMenu::AddPlugin(const char * name) ++void cSubMenu::AddPlugin(const char *name) +{ + if (! IsPluginInMenu(name)) { + cSubMenuNode *node = new cSubMenuNode(&_menuTree, NULL); @@ -14130,7 +13747,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + * Adds the given command to the Menu-Tree + * @param name specifies the name of the command + */ -+void cSubMenu::CreateCommand(int index, const char * name, const char * execute, int confirm) ++void cSubMenu::CreateCommand(int index, const char *name, const char *execute, int confirm) +{ + if (index >= 0 && index < _nrNodes) { + cSubMenuNode *srcNode = GetAbsNode(index); @@ -14150,7 +13767,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + } +} + -+void cSubMenu::CreateThread(int index, const char * name, const char * execute, int confirm) ++void cSubMenu::CreateThread(int index, const char *name, const char *execute, int confirm) +{ + if (index >= 0 && index < _nrNodes) { + cSubMenuNode *srcNode = GetAbsNode(index); @@ -14208,7 +13825,7 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c +*/ +const char *cSubMenu::GetParentMenuTitel() +{ -+ const char * result = ""; ++ const char *result = ""; + + if (_currentMenuTree != NULL && _currentParentMenuTree != NULL) { + cSubMenuNode *node = NULL; @@ -14225,10 +13842,10 @@ diff -u --recursive vdr-1.7.9/submenu.c vdr-1.7.9-extensions/submenu.c + +#endif +#endif /* SETUP */ -diff -u --recursive vdr-1.7.9/submenu.h vdr-1.7.9-extensions/submenu.h ---- vdr-1.7.9/submenu.h 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/submenu.h 2009-04-12 13:37:59.000000000 +0200 -@@ -0,0 +1,160 @@ +diff -Naur vdr-1.7.10/submenu.h vdr-1.7.10b/submenu.h +--- vdr-1.7.10/submenu.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/submenu.h 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,159 @@ +#ifdef USE_SETUP +/**************************************************************************** + * DESCRIPTION: @@ -14260,22 +13877,21 @@ diff -u --recursive vdr-1.7.9/submenu.h vdr-1.7.9-extensions/submenu.h +// execute cmd thread +class cExecCmdThread : public cThread { +private: -+ char *ExecCmd; ++ cString ExecCmd; +protected: + virtual void Action(void) { + if (system(ExecCmd) == 0) -+ esyslog("%s - finished", ExecCmd); ++ esyslog("%s - finished", *ExecCmd); + delete(this); + }; +public: + cExecCmdThread(char *cmd) { -+ asprintf(&ExecCmd, "%s", cmd); ++ ExecCmd = cString::sprintf("%s", cmd); + } + cExecCmdThread(const char *cmd) { -+ asprintf(&ExecCmd, "%s", cmd); ++ ExecCmd = cString::sprintf("%s", cmd); + } + ~cExecCmdThread() { -+ free(ExecCmd); + }; + }; + @@ -14285,10 +13901,10 @@ diff -u --recursive vdr-1.7.9/submenu.h vdr-1.7.9-extensions/submenu.h +class cSubMenuNode : public cListObject { +public: + enum Type { UNDEFINED, SYSTEM, COMMAND, THREAD, PLUGIN, MENU }; -+ cSubMenuNode(TiXmlElement * xml, int level, cSubMenuNodes *currentMenu, cSubMenuNodes *parentMenu); ++ cSubMenuNode(TiXmlElement *xml, int level, cSubMenuNodes *currentMenu, cSubMenuNodes *parentMenu); + cSubMenuNode(cSubMenuNodes *currentMenu, cSubMenuNodes *parentMenu); + ~cSubMenuNode(); -+ bool SaveXml(TiXmlElement * root); ++ bool SaveXml(TiXmlElement *root); + static cSubMenuNode::Type IsType(const char *name); + void SetType(const char *name); + void SetType(enum Type type); @@ -14342,8 +13958,8 @@ diff -u --recursive vdr-1.7.9/submenu.h vdr-1.7.9-extensions/submenu.h + cSubMenu(); + ~cSubMenu(); + enum Where { BEFORE, BEHIND, INTO}; -+ bool LoadXml(char *fname); -+ bool SaveXml(char *fname); ++ bool LoadXml(cString fname); ++ bool SaveXml(cString fname); + bool SaveXml(); + cSubMenuNodes *GetMenuTree(); + bool Up(int *ParentIndex); @@ -14364,8 +13980,8 @@ diff -u --recursive vdr-1.7.9/submenu.h vdr-1.7.9-extensions/submenu.h + void MoveMenu(int index, int toindex, enum Where); + void CreateMenu(int index, const char *menuTitle); + void DeleteMenu(int index); -+ char *GetMenuSuffix() { return _menuSuffix; } -+ void SetMenuSuffix(char *suffix) { if (_menuSuffix) free(_menuSuffix); asprintf(&_menuSuffix, suffix); } ++ cString GetMenuSuffix() { return _menuSuffix; } ++ void SetMenuSuffix(char *suffix) { _menuSuffix = suffix; } + bool isTopMenu() { return (_currentParentMenuTree == NULL); } + const char *GetParentMenuTitel(); +private: @@ -14375,11 +13991,11 @@ diff -u --recursive vdr-1.7.9/submenu.h vdr-1.7.9-extensions/submenu.h +#ifdef USE_PINPLUGIN + int _currentParentIndex; +#endif /* PINPLUGIN */ -+ char *_fname; ++ cString _fname; + char *_commandResult; + int _nrNodes; + cSubMenuNode **_nodeArray; -+ char *_menuSuffix; ++ cString _menuSuffix; + int countNodes(cSubMenuNodes *tree); + void tree2Array(cSubMenuNodes *tree, int &index); + void addMissingPlugins(); @@ -14389,9 +14005,9 @@ diff -u --recursive vdr-1.7.9/submenu.h vdr-1.7.9-extensions/submenu.h + +#endif //__SUBMENU_H +#endif /* SETUP */ -diff -u --recursive vdr-1.7.9/svdrp.c vdr-1.7.9-extensions/svdrp.c ---- vdr-1.7.9/svdrp.c 2009-06-06 16:03:55.000000000 +0200 -+++ vdr-1.7.9-extensions/svdrp.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/svdrp.c vdr-1.7.10b/svdrp.c +--- vdr-1.7.10/svdrp.c 2009-10-18 16:08:58.000000000 +0200 ++++ vdr-1.7.10b/svdrp.c 2009-12-30 11:33:26.000000000 +0100 @@ -39,6 +39,9 @@ #include "timers.h" #include "tools.h" @@ -14502,9 +14118,9 @@ diff -u --recursive vdr-1.7.9/svdrp.c vdr-1.7.9-extensions/svdrp.c else if (CMD("SCAN")) CmdSCAN(s); else if (CMD("STAT")) CmdSTAT(s); else if (CMD("UPDT")) CmdUPDT(s); -diff -u --recursive vdr-1.7.9/svdrp.h vdr-1.7.9-extensions/svdrp.h ---- vdr-1.7.9/svdrp.h 2007-04-30 14:28:28.000000000 +0200 -+++ vdr-1.7.9-extensions/svdrp.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/svdrp.h vdr-1.7.10b/svdrp.h +--- vdr-1.7.10/svdrp.h 2007-04-30 14:28:28.000000000 +0200 ++++ vdr-1.7.10b/svdrp.h 2009-12-30 11:33:26.000000000 +0100 @@ -79,6 +79,9 @@ void CmdPLUG(const char *Option); void CmdPUTE(const char *Option); @@ -14515,45 +14131,9 @@ diff -u --recursive vdr-1.7.9/svdrp.h vdr-1.7.9-extensions/svdrp.h void CmdSCAN(const char *Option); void CmdSTAT(const char *Option); void CmdUPDT(const char *Option); -diff -u --recursive vdr-1.7.9/thread.c vdr-1.7.9-extensions/thread.c ---- vdr-1.7.9/thread.c 2009-04-13 15:50:39.000000000 +0200 -+++ vdr-1.7.9-extensions/thread.c 2009-08-23 18:20:09.000000000 +0200 -@@ -220,9 +220,20 @@ - free(description); - } - -+int cThread::GetPriority(void) -+{ -+ errno = 0; -+ int Priority = getpriority(PRIO_PROCESS, 0); -+ if (Priority == -1 && errno != 0) { -+ LOG_ERROR; -+ Priority = 0; -+ } -+ return Priority; -+} -+ - void cThread::SetPriority(int Priority) - { -- if (setpriority(PRIO_PROCESS, 0, Priority) < 0) -+ if (setpriority(PRIO_PROCESS, 0, max(-20, min(Priority, 19))) < 0) - LOG_ERROR; - } - -diff -u --recursive vdr-1.7.9/thread.h vdr-1.7.9-extensions/thread.h ---- vdr-1.7.9/thread.h 2009-04-13 15:50:39.000000000 +0200 -+++ vdr-1.7.9-extensions/thread.h 2009-08-23 18:20:09.000000000 +0200 -@@ -86,6 +86,7 @@ - static tThreadId mainThreadId; - static void *StartThread(cThread *Thread); - protected: -+ int GetPriority(void); - void SetPriority(int Priority); - void SetIOPriority(int Priority); - void Lock(void) { mutex.Lock(); } -diff -u --recursive vdr-1.7.9/timers.c vdr-1.7.9-extensions/timers.c ---- vdr-1.7.9/timers.c 2009-08-09 14:43:20.000000000 +0200 -+++ vdr-1.7.9-extensions/timers.c 2009-08-23 18:46:54.000000000 +0200 +diff -Naur vdr-1.7.10/timers.c vdr-1.7.10b/timers.c +--- vdr-1.7.10/timers.c 2009-08-09 14:43:20.000000000 +0200 ++++ vdr-1.7.10b/timers.c 2009-12-30 11:33:26.000000000 +0100 @@ -46,6 +46,9 @@ stop -= 2400; priority = Pause ? Setup.PausePriority : Setup.DefaultPriority; @@ -14568,9 +14148,9 @@ diff -u --recursive vdr-1.7.9/timers.c vdr-1.7.9-extensions/timers.c stop -= 2400; priority = Setup.DefaultPriority; lifetime = Setup.DefaultLifetime; -+ #ifdef USE_PINPLUGIN -+ fskProtection = 0; -+ #endif /* PINPLUGIN */ ++#ifdef USE_PINPLUGIN ++ fskProtection = 0; ++#endif /* PINPLUGIN */ *file = 0; const char *Title = Event->Title(); if (!isempty(Title)) @@ -14578,9 +14158,9 @@ diff -u --recursive vdr-1.7.9/timers.c vdr-1.7.9-extensions/timers.c } aux = NULL; event = NULL; // let SetEvent() be called to get a log message -+ #ifdef USE_PINPLUGIN -+ cStatus::MsgTimerCreation(this, Event); -+ #endif /* PINPLUGIN */ ++#ifdef USE_PINPLUGIN ++ cStatus::MsgTimerCreation(this, Event); ++#endif /* PINPLUGIN */ } cTimer::cTimer(const cTimer &Timer) @@ -14650,10 +14230,9 @@ diff -u --recursive vdr-1.7.9/timers.c vdr-1.7.9-extensions/timers.c // --- cTimers --------------------------------------------------------------- cTimers Timers; -Nur in vdr-1.7.9-extensions: timers.c~. -diff -u --recursive vdr-1.7.9/timers.h vdr-1.7.9-extensions/timers.h ---- vdr-1.7.9/timers.h 2008-02-16 15:33:23.000000000 +0100 -+++ vdr-1.7.9-extensions/timers.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/timers.h vdr-1.7.10b/timers.h +--- vdr-1.7.10/timers.h 2008-02-16 15:33:23.000000000 +0100 ++++ vdr-1.7.10b/timers.h 2009-12-30 11:33:26.000000000 +0100 @@ -37,6 +37,9 @@ int start; int stop; @@ -14684,9 +14263,9 @@ diff -u --recursive vdr-1.7.9/timers.h vdr-1.7.9-extensions/timers.h void ClrFlags(uint Flags); void InvFlags(uint Flags); bool HasFlags(uint Flags) const; -diff -u --recursive vdr-1.7.9/tinystr.c vdr-1.7.9-extensions/tinystr.c ---- vdr-1.7.9/tinystr.c 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/tinystr.c 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/tinystr.c vdr-1.7.10b/tinystr.c +--- vdr-1.7.10/tinystr.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/tinystr.c 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,301 @@ +#ifdef USE_SETUP +/* @@ -14989,9 +14568,9 @@ diff -u --recursive vdr-1.7.9/tinystr.c vdr-1.7.9-extensions/tinystr.c + +#endif // TIXML_USE_STL +#endif /* SETUP */ -diff -u --recursive vdr-1.7.9/tinystr.h vdr-1.7.9-extensions/tinystr.h ---- vdr-1.7.9/tinystr.h 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/tinystr.h 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/tinystr.h vdr-1.7.10b/tinystr.h +--- vdr-1.7.10/tinystr.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/tinystr.h 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,244 @@ +#ifdef USE_SETUP +/* @@ -15237,9 +14816,9 @@ diff -u --recursive vdr-1.7.9/tinystr.h vdr-1.7.9-extensions/tinystr.h +#endif // TIXML_STRING_INCLUDED +#endif // TIXML_USE_STL +#endif /* SETUP */ -diff -u --recursive vdr-1.7.9/tinyxml.c vdr-1.7.9-extensions/tinyxml.c ---- vdr-1.7.9/tinyxml.c 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/tinyxml.c 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/tinyxml.c vdr-1.7.10b/tinyxml.c +--- vdr-1.7.10/tinyxml.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/tinyxml.c 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,1429 @@ +#ifdef USE_SETUP +/* @@ -16670,9 +16249,9 @@ diff -u --recursive vdr-1.7.9/tinyxml.c vdr-1.7.9-extensions/tinyxml.c + return TiXmlHandle( 0 ); +} +#endif /* SETUP */ -diff -u --recursive vdr-1.7.9/tinyxmlerror.c vdr-1.7.9-extensions/tinyxmlerror.c ---- vdr-1.7.9/tinyxmlerror.c 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/tinyxmlerror.c 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/tinyxmlerror.c vdr-1.7.10b/tinyxmlerror.c +--- vdr-1.7.10/tinyxmlerror.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/tinyxmlerror.c 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,53 @@ +#ifdef USE_SETUP +/* @@ -16727,9 +16306,9 @@ diff -u --recursive vdr-1.7.9/tinyxmlerror.c vdr-1.7.9-extensions/tinyxmlerror.c + "Error null (0) or unexpected EOF found in input stream.", +}; +#endif /* SETUP */ -diff -u --recursive vdr-1.7.9/tinyxml.h vdr-1.7.9-extensions/tinyxml.h ---- vdr-1.7.9/tinyxml.h 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/tinyxml.h 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/tinyxml.h vdr-1.7.10b/tinyxml.h +--- vdr-1.7.10/tinyxml.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/tinyxml.h 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,1372 @@ +#ifdef USE_SETUP +/* @@ -18103,9 +17682,9 @@ diff -u --recursive vdr-1.7.9/tinyxml.h vdr-1.7.9-extensions/tinyxml.h + +#endif +#endif /* SETUP */ -diff -u --recursive vdr-1.7.9/tinyxmlparser.c vdr-1.7.9-extensions/tinyxmlparser.c ---- vdr-1.7.9/tinyxmlparser.c 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/tinyxmlparser.c 2009-04-12 13:37:59.000000000 +0200 +diff -Naur vdr-1.7.10/tinyxmlparser.c vdr-1.7.10b/tinyxmlparser.c +--- vdr-1.7.10/tinyxmlparser.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/tinyxmlparser.c 2009-12-30 11:33:26.000000000 +0100 @@ -0,0 +1,1494 @@ +#ifdef USE_SETUP +/* @@ -19601,52 +19180,9 @@ diff -u --recursive vdr-1.7.9/tinyxmlparser.c vdr-1.7.9-extensions/tinyxmlparser + return true; +} +#endif /* SETUP */ -diff -u --recursive vdr-1.7.9/tools.c vdr-1.7.9-extensions/tools.c ---- vdr-1.7.9/tools.c 2009-05-31 13:43:24.000000000 +0200 -+++ vdr-1.7.9-extensions/tools.c 2009-08-23 18:20:09.000000000 +0200 -@@ -82,6 +82,14 @@ - return p < 0 ? p : written; - } - -+int readchar(int filedes) -+{ -+ char c; -+ if (safe_read(filedes, &c, sizeof(c)) != 1) -+ return -1; -+ return c; -+} -+ - void writechar(int filedes, char c) - { - safe_write(filedes, &c, sizeof(c)); -@@ -140,11 +148,8 @@ - { - if (s) { - char *p = s; -- while (*p) { -- if (*p == c1) -- *p = c2; -- p++; -- } -+ while ((p = strchr(p, c1))) -+ *p++ = c2; - } - return s; - } -diff -u --recursive vdr-1.7.9/tools.h vdr-1.7.9-extensions/tools.h ---- vdr-1.7.9/tools.h 2009-04-14 22:41:39.000000000 +0200 -+++ vdr-1.7.9-extensions/tools.h 2009-08-23 18:20:09.000000000 +0200 -@@ -167,6 +167,7 @@ - - ssize_t safe_read(int filedes, void *buffer, size_t size); - ssize_t safe_write(int filedes, const void *buffer, size_t size); -+int readchar(int filedes); - void writechar(int filedes, char c); - int WriteAllOrNothing(int fd, const uchar *Data, int Length, int TimeoutMs = 0, int RetryMs = 0); - ///< Writes either all Data to the given file descriptor, or nothing at all. -diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c ---- vdr-1.7.9/vdr.c 2009-05-21 13:14:48.000000000 +0200 -+++ vdr-1.7.9-extensions/vdr.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/vdr.c vdr-1.7.10b/vdr.c +--- vdr-1.7.10/vdr.c 2009-10-25 15:45:47.000000000 +0100 ++++ vdr-1.7.10b/vdr.c 2009-12-30 11:33:26.000000000 +0100 @@ -139,10 +139,17 @@ return true; } @@ -19959,7 +19495,7 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c // Log file: if (SysLogLevel > 0) -@@ -573,8 +801,20 @@ +@@ -574,8 +802,20 @@ Diseqcs.Load(AddDirectory(ConfigDirectory, "diseqc.conf"), true, Setup.DiSEqC); Channels.Load(AddDirectory(ConfigDirectory, "channels.conf"), false, true); Timers.Load(AddDirectory(ConfigDirectory, "timers.conf")); @@ -19980,7 +19516,7 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c SVDRPhosts.Load(AddDirectory(ConfigDirectory, "svdrphosts.conf"), true); Keys.Load(AddDirectory(ConfigDirectory, "remote.conf")); KeyMacros.Load(AddDirectory(ConfigDirectory, "keymacros.conf"), true); -@@ -735,7 +975,11 @@ +@@ -736,7 +976,11 @@ // Make sure we have a visible programme in case device usage has changed: if (!EITScanner.Active() && cDevice::PrimaryDevice()->HasDecoder() && !cDevice::PrimaryDevice()->HasProgramme()) { static time_t lastTime = 0; @@ -19992,7 +19528,7 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel()); if (Channel && (Channel->Vpid() || Channel->Apid(0))) { if (!Channels.SwitchTo(cDevice::CurrentChannel()) // try to switch to the original channel... -@@ -918,6 +1162,9 @@ +@@ -919,6 +1163,9 @@ cOsdObject *Interact = Menu ? Menu : cControl::Control(); eKeys key = Interface->GetKey(!Interact || !Interact->NeedsFastResponse()); if (ISREALKEY(key)) { @@ -20002,7 +19538,7 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c EITScanner.Activity(); // Cancel shutdown countdown: if (ShutdownHandler.countdown) -@@ -990,10 +1237,16 @@ +@@ -991,10 +1238,16 @@ cControl::Control()->Hide(); cPlugin *plugin = cPluginManager::GetPlugin(PluginName); if (plugin) { @@ -20019,7 +19555,7 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c else esyslog("ERROR: unknown plugin '%s'", PluginName); } -@@ -1074,8 +1327,15 @@ +@@ -1075,8 +1328,15 @@ // Instant recording: case kRecord: if (!cControl::Control()) { @@ -20035,7 +19571,7 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c key = kNone; // nobody else needs to see this key } break; -@@ -1131,8 +1391,15 @@ +@@ -1132,8 +1392,15 @@ Skins.Message(mtError, tr("No free DVB device to record!")); break; case osRecord: DELETE_MENU; @@ -20051,7 +19587,7 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c break; case osRecordings: DELETE_MENU; -@@ -1183,13 +1450,26 @@ +@@ -1184,13 +1451,26 @@ Channels.SwitchTo(PreviousChannel[PreviousChannelIndex ^= 1]); break; } @@ -20078,7 +19614,7 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c // Previous/Next rotates through channel groups: case kPrev|k_Repeat: case kPrev: -@@ -1207,9 +1487,15 @@ +@@ -1208,9 +1488,15 @@ // Instant resume of the last viewed recording: case kPlay: if (cReplayControl::LastReplayed()) { @@ -20094,11 +19630,30 @@ diff -u --recursive vdr-1.7.9/vdr.c vdr-1.7.9-extensions/vdr.c break; default: break; } -diff -u --recursive vdr-1.7.9/vdrttxtsubshooks.c vdr-1.7.9-extensions/vdrttxtsubshooks.c ---- vdr-1.7.9/vdrttxtsubshooks.c 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/vdrttxtsubshooks.c 2009-08-23 18:20:09.000000000 +0200 -@@ -0,0 +1,46 @@ +diff -Naur vdr-1.7.10/vdrttxtsubshooks.c vdr-1.7.10b/vdrttxtsubshooks.c +--- vdr-1.7.10/vdrttxtsubshooks.c 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/vdrttxtsubshooks.c 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,65 @@ +#ifdef USE_TTXTSUBS ++/* ++ * vdr-ttxtsubs - A plugin for the Linux Video Disk Recorder ++ * Copyright (c) 2003 - 2008 Ragnar Sundblad ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the ++ * Free Software Foundation; either version 2 of the License, or (at your option) ++ * any later version. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ * details. ++ * ++ * You should have received a copy of the GNU General Public License along with ++ * this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ * ++ */ + +#include +#include @@ -20116,10 +19671,10 @@ diff -u --recursive vdr-1.7.9/vdrttxtsubshooks.c vdr-1.7.9-extensions/vdrttxtsub + public: + virtual void HideOSD(void) { if(gListener) gListener->HideOSD(); }; + virtual void ShowOSD(void) { if(gListener) gListener->ShowOSD(); }; -+ virtual void PlayerTeletextData(uint8_t *p, int length) -+ { if(gListener) gListener->PlayerTeletextData(p, length); }; -+ virtual cTtxtSubsRecorderBase *NewTtxtSubsRecorder(cDevice *dev, const cChannel *ch) -+ { if(gListener) return gListener->NewTtxtSubsRecorder(dev, ch); else return NULL; }; ++ virtual void PlayerTeletextData(uint8_t *p, int length, bool IsPesRecording) ++ { if(gListener) gListener->PlayerTeletextData(p, length, IsPesRecording); }; ++ virtual int ManualPageNumber(const cChannel *channel) ++ { if(gListener) return gListener->ManualPageNumber(channel); else return 0; }; +}; + + @@ -20142,31 +19697,43 @@ diff -u --recursive vdr-1.7.9/vdrttxtsubshooks.c vdr-1.7.9-extensions/vdrttxtsub +{ + return &gProxy; +} -+ +#endif /* TTXTSUBS */ -diff -u --recursive vdr-1.7.9/vdrttxtsubshooks.h vdr-1.7.9-extensions/vdrttxtsubshooks.h ---- vdr-1.7.9/vdrttxtsubshooks.h 1970-01-01 01:00:00.000000000 +0100 -+++ vdr-1.7.9-extensions/vdrttxtsubshooks.h 2009-08-23 18:20:09.000000000 +0200 -@@ -0,0 +1,38 @@ ++ +diff -Naur vdr-1.7.10/vdrttxtsubshooks.h vdr-1.7.10b/vdrttxtsubshooks.h +--- vdr-1.7.10/vdrttxtsubshooks.h 1970-01-01 01:00:00.000000000 +0100 ++++ vdr-1.7.10b/vdrttxtsubshooks.h 2009-12-30 11:33:26.000000000 +0100 +@@ -0,0 +1,50 @@ +#ifdef USE_TTXTSUBS ++/* ++ * vdr-ttxtsubs - A plugin for the Linux Video Disk Recorder ++ * Copyright (c) 2003 - 2008 Ragnar Sundblad ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the ++ * Free Software Foundation; either version 2 of the License, or (at your option) ++ * any later version. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ * details. ++ * ++ * You should have received a copy of the GNU General Public License along with ++ * this program; if not, write to the Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ * ++ */ + +#ifndef __VDRTTXTSUBSHOOKS_H +#define __VDRTTXTSUBSHOOKS_H + ++#define TTXTSUBSVERSNUM 1 ++ +class cDevice; +class cChannel; + +#define VDRTTXTSUBSHOOKS + -+class cTtxtSubsRecorderBase { -+ public: -+ virtual ~cTtxtSubsRecorderBase() {}; -+ -+ // returns a PES packet if there is data to add to the recording -+ virtual uint8_t *GetPacket(uint8_t **buf, size_t *len) { return NULL; }; -+ virtual void DeviceAttach(void) {}; -+}; -+ +class cVDRTtxtsubsHookListener { + public: + cVDRTtxtsubsHookListener(void) {}; @@ -20176,19 +19743,19 @@ diff -u --recursive vdr-1.7.9/vdrttxtsubshooks.h vdr-1.7.9-extensions/vdrttxtsub + + virtual void HideOSD(void) {}; + virtual void ShowOSD(void) {}; -+ virtual void PlayerTeletextData(uint8_t *p, int length) {}; -+ virtual cTtxtSubsRecorderBase *NewTtxtSubsRecorder(cDevice *dev, const cChannel *ch) -+ { return NULL; }; ++ virtual void PlayerTeletextData(uint8_t *p, int length, bool IsPesRecording = true) {}; ++ virtual int ManualPageNumber(const cChannel *channel) ++ { return 0; }; + + // used by VDR to call hook listeners + static cVDRTtxtsubsHookListener *Hook(void); +}; + -+#endif /* __VDRTTXTSUBSHOOKS_H */ ++#endif +#endif /* TTXTSUBS */ -diff -u --recursive vdr-1.7.9/videodir.c vdr-1.7.9-extensions/videodir.c ---- vdr-1.7.9/videodir.c 2008-02-16 14:00:03.000000000 +0100 -+++ vdr-1.7.9-extensions/videodir.c 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/videodir.c vdr-1.7.10b/videodir.c +--- vdr-1.7.10/videodir.c 2008-02-16 14:00:03.000000000 +0100 ++++ vdr-1.7.10b/videodir.c 2009-12-30 11:33:26.000000000 +0100 @@ -19,6 +19,13 @@ #include "recording.h" #include "tools.h" @@ -20506,9 +20073,9 @@ diff -u --recursive vdr-1.7.9/videodir.c vdr-1.7.9-extensions/videodir.c bool IsOnVideoDirectoryFileSystem(const char *FileName) { cVideoDirectory Dir; -diff -u --recursive vdr-1.7.9/videodir.h vdr-1.7.9-extensions/videodir.h ---- vdr-1.7.9/videodir.h 2008-02-16 13:53:11.000000000 +0100 -+++ vdr-1.7.9-extensions/videodir.h 2009-08-23 18:20:09.000000000 +0200 +diff -Naur vdr-1.7.10/videodir.h vdr-1.7.10b/videodir.h +--- vdr-1.7.10/videodir.h 2008-02-16 13:53:11.000000000 +0100 ++++ vdr-1.7.10b/videodir.h 2009-12-30 11:33:26.000000000 +0100 @@ -19,6 +19,9 @@ int CloseVideoFile(cUnbufferedFile *File); bool RenameVideoFile(const char *OldName, const char *NewName); diff --git a/packages/multimedia/vdr/patches/vdr-1.7.9-include_stdarg.h.diff b/packages/multimedia/vdr/patches/vdr-1.7.9-include_stdarg.h.diff deleted file mode 100644 index 8e88819eb9..0000000000 --- a/packages/multimedia/vdr/patches/vdr-1.7.9-include_stdarg.h.diff +++ /dev/null @@ -1,11 +0,0 @@ -diff -Naur vdr-1.7.9/tools.h vdr-1.7.9.patch/tools.h ---- vdr-1.7.9/tools.h 2009-04-14 22:41:39.000000000 +0200 -+++ vdr-1.7.9.patch/tools.h 2009-10-06 20:41:43.924419570 +0200 -@@ -19,6 +19,7 @@ - #include - #include - #include -+#include - #include - #include - #include diff --git a/packages/multimedia/vdr/patches/vdr-1.7.9-linux_2.6.32.diff b/packages/multimedia/vdr/patches/vdr-1.7.9-linux_2.6.32.diff deleted file mode 100644 index 37c34047f7..0000000000 --- a/packages/multimedia/vdr/patches/vdr-1.7.9-linux_2.6.32.diff +++ /dev/null @@ -1,14 +0,0 @@ -diff -Naur vdr-1.7.9/dvbdevice.h vdr-1.7.9.patch/dvbdevice.h ---- vdr-1.7.9/dvbdevice.h 2009-06-06 13:16:47.000000000 +0200 -+++ vdr-1.7.9.patch/dvbdevice.h 2009-10-06 20:36:09.827294633 +0200 -@@ -16,8 +16,8 @@ - #include "device.h" - #include "dvbspu.h" - --#if DVB_API_VERSION != 5 || DVB_API_VERSION_MINOR != 0 --#error VDR requires Linux DVB driver API version 5.0! -+#if DVB_API_VERSION != 5 -+#error VDR requires Linux DVB driver API version 5.0 or higher! - #endif - - #define MAXDVBDEVICES 8 diff --git a/packages/multimedia/vdr/patches/vdr-1.7.9-uClibc-no_canonicalize_file_name.diff b/packages/multimedia/vdr/patches/vdr-1.7.9-uClibc-no_canonicalize_file_name.diff deleted file mode 100644 index 26737072d8..0000000000 --- a/packages/multimedia/vdr/patches/vdr-1.7.9-uClibc-no_canonicalize_file_name.diff +++ /dev/null @@ -1,13 +0,0 @@ -diff -Naur vdr-1.7.9/tools.c vdr-1.7.9.patch/tools.c ---- vdr-1.7.9/tools.c 2009-05-31 13:43:24.000000000 +0200 -+++ vdr-1.7.9.patch/tools.c 2009-10-06 22:12:39.421294729 +0200 -@@ -484,7 +484,8 @@ - { - if (!FileName) - return NULL; -- char *TargetName = canonicalize_file_name(FileName); -+ char *ResolvedName = (char*) malloc(1024); -+ char *TargetName = realpath(FileName, ResolvedName); - if (!TargetName) { - if (errno == ENOENT) // file doesn't exist - TargetName = strdup(FileName); diff --git a/packages/multimedia/vdr/patches/vdr-1.7.9-uClibc_pthread_rwlock.diff b/packages/multimedia/vdr/patches/vdr-1.7.9-uClibc_pthread_rwlock.diff deleted file mode 100644 index 01be40952c..0000000000 --- a/packages/multimedia/vdr/patches/vdr-1.7.9-uClibc_pthread_rwlock.diff +++ /dev/null @@ -1,25 +0,0 @@ -diff -Naur vdr-1.7.9/thread.c vdr-1.7.9.patch/thread.c ---- vdr-1.7.9/thread.c 2009-04-13 15:50:39.000000000 +0200 -+++ vdr-1.7.9.patch/thread.c 2009-10-06 22:10:06.587419872 +0200 -@@ -160,10 +160,17 @@ - if (!GetAbsTime(&abstime, TimeoutMs)) - TimeoutMs = 0; - } -- if (Write) -- Result = TimeoutMs ? pthread_rwlock_timedwrlock(&rwlock, &abstime) : pthread_rwlock_wrlock(&rwlock); -- else -- Result = TimeoutMs ? pthread_rwlock_timedrdlock(&rwlock, &abstime) : pthread_rwlock_rdlock(&rwlock); -+ -+ while (true) { -+ if (Write) -+ Result = pthread_rwlock_wrlock(&rwlock); -+ else -+ Result = pthread_rwlock_rdlock(&rwlock); -+ if ( Result == 0 | TimeoutMs == 0 ) -+ break; -+ TimeoutMs--; -+ usleep(1000); -+ } - return Result == 0; - } - diff --git a/packages/multimedia/vdr/url b/packages/multimedia/vdr/url index 579b7805fc..b7715f4bd9 100644 --- a/packages/multimedia/vdr/url +++ b/packages/multimedia/vdr/url @@ -1 +1 @@ -ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.9.tar.bz2 +ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.10.tar.bz2