r5638 - in /vdr/vdr/trunk/debian: ./ patches/
tiber-guest at users.alioth.debian.org
tiber-guest at users.alioth.debian.org
Mon Oct 29 19:27:06 UTC 2007
Author: tiber-guest
Date: Mon Oct 29 19:27:05 2007
New Revision: 5638
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/?sc=1&rev=5638
Log:
* NOT RELEASED YET
* Synced optional patches with e-tobi.net version of the VDR package
- Added opt-50_graphtft-0.1.dpatch
- Added opt-51_cuttime.dpatch
- Added opt-39_noepg.dpatch
- Added opt-32_iptv.dpatch
- Added opt-43-x_recordshowfree.dpatch
- Added opt-37-x_menuorg.dpatch
- Added opt-31-x_reelchannelscan.dpatch
- Added opt-48-x_pin.dpatch
- Removed opt-37_submenu.dpatch
- Updated opt-48_pin.dpatch
Added:
vdr/vdr/trunk/debian/patches/opt-31-x_reelchannelscan.dpatch
vdr/vdr/trunk/debian/patches/opt-32_iptv.dpatch
vdr/vdr/trunk/debian/patches/opt-37-x_menuorg.dpatch
vdr/vdr/trunk/debian/patches/opt-43-x_recordshowfree.dpatch
vdr/vdr/trunk/debian/patches/opt-48-x_pin.dpatch
vdr/vdr/trunk/debian/patches/opt-50_graphtft-0.1.dpatch
vdr/vdr/trunk/debian/patches/opt-51_cuttime.dpatch
Removed:
vdr/vdr/trunk/debian/patches/opt-37_submenu.dpatch
Modified:
vdr/vdr/trunk/debian/changelog
vdr/vdr/trunk/debian/patches/00list
vdr/vdr/trunk/debian/patches/16_channels.conf.terr-fix.dpatch (props changed)
vdr/vdr/trunk/debian/patches/opt-39_noepg.dpatch
vdr/vdr/trunk/debian/patches/opt-48_pin.dpatch (props changed)
vdr/vdr/trunk/debian/patches/patchtest
Modified: vdr/vdr/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/changelog?rev=5638&op=diff
==============================================================================
--- vdr/vdr/trunk/debian/changelog (original)
+++ vdr/vdr/trunk/debian/changelog Mon Oct 29 19:27:05 2007
@@ -1,3 +1,20 @@
+vdr (1.4.7-3) UNRELEASED; urgency=low
+
+ * NOT RELEASED YET
+ * Synced optional patches with e-tobi.net version of the VDR package
+ - Added opt-50_graphtft-0.1.dpatch
+ - Added opt-51_cuttime.dpatch
+ - Added opt-39_noepg.dpatch
+ - Added opt-32_iptv.dpatch
+ - Added opt-43-x_recordshowfree.dpatch
+ - Added opt-37-x_menuorg.dpatch
+ - Added opt-31-x_reelchannelscan.dpatch
+ - Added opt-48-x_pin.dpatch
+ - Removed opt-37_submenu.dpatch
+ - Updated opt-48_pin.dpatch
+
+ -- Tobias Grimm <tg at e-tobi.net> Mon, 29 Oct 2007 19:53:15 +0100
+
vdr (1.4.7-2) unstable; urgency=low
[ Thomas Schmidt ]
Modified: vdr/vdr/trunk/debian/patches/00list
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/00list?rev=5638&op=diff
==============================================================================
--- vdr/vdr/trunk/debian/patches/00list (original)
+++ vdr/vdr/trunk/debian/patches/00list Mon Oct 29 19:27:05 2007
@@ -24,6 +24,12 @@
# Patch needed for the analogtv plugin.
# opt-30-x_analogtv
+# Makes VDR aware of the reelchannalscan plugin
+# opt-31-x_reelchannelscan
+
+# Patch required by the IPTV plug-in
+# opt-32_iptv
+
# Patch that shows if there is a valid setup value left or right with < and >.
# opt-35_setup-show-valid
@@ -31,8 +37,8 @@
# opt-36_CutterQueue
# opt-36_CutterQueue-AutoDelete
-# Patch needed for the submenu plugin.
-# opt-37_submenu
+# Patch needed for the menuorg plugin.
+# opt-37-x_menuorg
# Patch that suppresses double EPG entries.
# opt-38_disableDoubleEpgEntrys
@@ -48,6 +54,10 @@
# Patch to allow plugins to replace the VDR mainmenus
# opt-42-x_MainMenuHooks
+
+# Shows remaining recording capacity in recordings menu.
+# (Requires opt-41-x_timer-info !)
+# opt-43-x_recordshowfree
# Patch needed for the rotor plugin.
# opt-44_rotor
@@ -68,10 +78,17 @@
# opt-47_sourcecaps
# Patch for the PIN plugin
-# opt-48_pin
+# opt-48-x_pin
# Patch to share one sat connection for several cards.
# opt-49_sharelnb
# Patch required for the GraphTFT plugin
# opt-50_graphtft
+
+# Patch required for the GraphTFT plugin >= 0.1
+# opt-50_graphtft-0.1
+
+# Modifies the start time of recordings to the first cutting mark
+# (disabled by default - enable in VDR's recording setup)
+# opt-51_cuttime
Propchange: vdr/vdr/trunk/debian/patches/16_channels.conf.terr-fix.dpatch
('svn:executable' removed)
Added: vdr/vdr/trunk/debian/patches/opt-31-x_reelchannelscan.dpatch
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/opt-31-x_reelchannelscan.dpatch?rev=5638&op=file
==============================================================================
--- vdr/vdr/trunk/debian/patches/opt-31-x_reelchannelscan.dpatch (added)
+++ vdr/vdr/trunk/debian/patches/opt-31-x_reelchannelscan.dpatch Mon Oct 29 19:27:05 2007
@@ -1,0 +1,26 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## opt-31_reelchannelscan.dpatch by Tobias Grimm <tg at e-tobi.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+ at DPATCH@
+diff -urNad vdr-1.4.6~/vdr.c vdr-1.4.6/vdr.c
+--- vdr-1.4.6~/vdr.c 2006-12-02 17:22:12.000000000 +0100
++++ vdr-1.4.6/vdr.c 2007-03-25 17:33:45.000000000 +0200
+@@ -685,7 +685,14 @@
+ // 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;
+- if (time(NULL) - lastTime > MINCHANNELWAIT) {
++
++ bool reelChannelscanIsScanningOnReceivingDevice;
++ if (!cPluginManager::CallFirstService("ReelChannelscan::IsScanningOnReceivingDevice", &reelChannelscanIsScanningOnReceivingDevice))
++ {
++ reelChannelscanIsScanningOnReceivingDevice = false;
++ }
++
++ if (!reelChannelscanIsScanningOnReceivingDevice && time(NULL) - lastTime > MINCHANNELWAIT) {
+ 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...
Added: vdr/vdr/trunk/debian/patches/opt-32_iptv.dpatch
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/opt-32_iptv.dpatch?rev=5638&op=file
==============================================================================
--- vdr/vdr/trunk/debian/patches/opt-32_iptv.dpatch (added)
+++ vdr/vdr/trunk/debian/patches/opt-32_iptv.dpatch Mon Oct 29 19:27:05 2007
@@ -1,0 +1,648 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## opt-40_iptv.dpatch by Tobias Grimm <tg at e-tobi.net>
+## from version 0.0.3 of the IPTV plug-in
+## http://www.saunalahti.fi/~rahrenbe/vdr/iptv/
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Patch required for the IPTV plugin-in
+
+ at DPATCH@
+diff -urNad vdr-1.4.7~/channels.c vdr-1.4.7/channels.c
+--- vdr-1.4.7~/channels.c 2006-05-28 17:03:40.000000000 +0200
++++ vdr-1.4.7/channels.c 2007-10-29 19:37:57.000000000 +0100
+@@ -166,6 +166,7 @@
+ shortName = strdup("");
+ provider = strdup("");
+ portalName = strdup("");
++ pluginParam = strdup("");
+ memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__);
+ inversion = INVERSION_AUTO;
+ bandwidth = BANDWIDTH_AUTO;
+@@ -187,6 +188,7 @@
+ shortName = NULL;
+ provider = NULL;
+ portalName = NULL;
++ pluginParam = NULL;
+ schedule = NULL;
+ linkChannels = NULL;
+ refChannel = NULL;
+@@ -215,6 +217,7 @@
+ free(shortName);
+ free(provider);
+ free(portalName);
++ free(pluginParam);
+ }
+
+ cChannel& cChannel::operator= (const cChannel &Channel)
+@@ -223,6 +226,7 @@
+ shortName = strcpyrealloc(shortName, Channel.shortName);
+ provider = strcpyrealloc(provider, Channel.provider);
+ portalName = strcpyrealloc(portalName, Channel.portalName);
++ pluginParam = strcpyrealloc(pluginParam, Channel.pluginParam);
+ memcpy(&__BeginData__, &Channel.__BeginData__, (char *)&Channel.__EndData__ - (char *)&Channel.__BeginData__);
+ return *this;
+ }
+@@ -280,9 +284,26 @@
+ transmission = Channel->transmission;
+ guard = Channel->guard;
+ hierarchy = Channel->hierarchy;
++ if (IsPlug()) pluginParam = strcpyrealloc(pluginParam, Channel->pluginParam);
+ }
+ }
+
++bool cChannel::SetPlugTransponderData(int Source, int Frequency, const char *PluginParam)
++{
++ if (source != Source || frequency != Frequency || (strcmp(pluginParam, PluginParam) != 0)) {
++ if (Number()) {
++ dsyslog("changing transponder data of channel %d from %s:%d:%s to %s:%d:%s", Number(), *cSource::ToString(source), frequency, pluginParam, *cSource::ToString(Source), Frequency, PluginParam);
++ modification |= CHANNELMOD_TRANSP;
++ Channels.SetModified();
++ }
++ source = Source;
++ frequency = Frequency;
++ pluginParam = strcpyrealloc(pluginParam, PluginParam);
++ schedule = NULL;
++ }
++ return true;
++}
++
+ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH)
+ {
+ // Workarounds for broadcaster stupidity:
+@@ -407,6 +428,18 @@
+ }
+ }
+
++void cChannel::SetPluginParam(const char *PluginParam)
++{
++ if (!isempty(PluginParam) && strcmp(pluginParam, PluginParam) != 0) {
++ if (Number()) {
++ dsyslog("changing plugin parameters of channel %d from '%s' to '%s'", Number(), pluginParam, PluginParam);
++ modification |= CHANNELMOD_TRANSP;
++ Channels.SetModified();
++ }
++ pluginParam = strcpyrealloc(pluginParam, PluginParam);
++ }
++}
++
+ #define STRDIFF 0x01
+ #define VALDIFF 0x02
+
+@@ -579,7 +612,7 @@
+ if (isdigit(type))
+ type = 'S';
+ #define ST(s) if (strchr(s, type))
+- char buffer[64];
++ char buffer[256];
+ char *q = buffer;
+ *q = 0;
+ ST(" S ") q += sprintf(q, "%c", polarization);
+@@ -591,6 +624,7 @@
+ ST(" T") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
+ ST(" T") q += PrintParameter(q, 'G', MapToUser(guard, GuardValues));
+ ST(" T") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
++ ST("P ") snprintf(buffer, sizeof(buffer), "%s", pluginParam);
+ return buffer;
+ }
+
+@@ -612,7 +646,7 @@
+
+ bool cChannel::StringToParameters(const char *s)
+ {
+- while (s && *s) {
++ while (s && *s && !IsPlug()) {
+ switch (toupper(*s)) {
+ case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break;
+ case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
+@@ -722,7 +756,7 @@
+ dpids[0] = 0;
+ ok = false;
+ if (parambuf && sourcebuf && vpidbuf && apidbuf) {
+- ok = StringToParameters(parambuf) && (source = cSource::FromString(sourcebuf)) >= 0;
++ ok = ((source = cSource::FromString(sourcebuf)) >= 0) && StringToParameters(parambuf);
+
+ char *p = strchr(vpidbuf, '+');
+ if (p)
+@@ -813,6 +847,7 @@
+ shortName = strcpyrealloc(shortName, p);
+ }
+ name = strcpyrealloc(name, namebuf);
++ if (IsPlug()) pluginParam = strcpyrealloc(pluginParam, parambuf);
+
+ free(parambuf);
+ free(sourcebuf);
+diff -urNad vdr-1.4.7~/channels.h vdr-1.4.7/channels.h
+--- vdr-1.4.7~/channels.h 2006-05-28 17:03:56.000000000 +0200
++++ vdr-1.4.7/channels.h 2007-10-29 19:37:57.000000000 +0100
+@@ -114,6 +114,7 @@
+ char *shortName;
+ char *provider;
+ char *portalName;
++ char *pluginParam;
+ int __BeginData__;
+ int frequency; // MHz
+ int source;
+@@ -165,6 +166,7 @@
+ 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
++ const char *PluginParam(void) const { return pluginParam; }
+ int Source(void) const { return source; }
+ int Srate(void) const { return srate; }
+ int Vpid(void) const { return vpid; }
+@@ -198,6 +200,7 @@
+ int Hierarchy(void) const { return hierarchy; }
+ const cLinkChannels* LinkChannels(void) const { return linkChannels; }
+ const cChannel *RefChannel(void) const { return refChannel; }
++ bool IsPlug(void) const { return cSource::IsPlug(source); }
+ bool IsCable(void) const { return cSource::IsCable(source); }
+ bool IsSat(void) const { return cSource::IsSat(source); }
+ bool IsTerr(void) const { return cSource::IsTerr(source); }
+@@ -205,12 +208,14 @@
+ bool HasTimer(void) const;
+ int Modification(int Mask = CHANNELMOD_ALL);
+ void CopyTransponderData(const cChannel *Channel);
++ bool SetPlugTransponderData(int Source, int Frequency, const char *PluginParam);
+ bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH);
+ 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);
++ void SetPluginParam(const char *PluginParam);
+ void SetPids(int Vpid, int Ppid, int *Apids, char ALangs[][MAXLANGCODE2], int *Dpids, char DLangs[][MAXLANGCODE2], int Tpid);
+ void SetCaIds(const int *CaIds); // list must be zero-terminated
+ void SetCaDescriptors(int Level);
+diff -urNad vdr-1.4.7~/config.h vdr-1.4.7/config.h
+--- vdr-1.4.7~/config.h 2007-05-12 11:07:16.000000000 +0200
++++ vdr-1.4.7/config.h 2007-10-29 19:38:07.000000000 +0100
+@@ -29,6 +29,10 @@
+ #define APIVERSION "1.4.5"
+ #define APIVERSNUM 10405 // Version * 10000 + Major * 100 + Minor
+
++#define PLUGINPARAMPATCHVERSNUM 1
++
++#define CLOSEFILTERPATCHVERSNUM 1
++
+ // When loading plugins, VDR searches them by their APIVERSION, which
+ // may be smaller than VDRVERSION in case there have been no changes to
+ // VDR header files since the last APIVERSION. This allows compiled
+diff -urNad vdr-1.4.7~/config.h.orig vdr-1.4.7/config.h.orig
+--- vdr-1.4.7~/config.h.orig 1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.7/config.h.orig 2007-10-29 19:37:57.000000000 +0100
+@@ -0,0 +1,266 @@
++/*
++ * config.h: Configuration file handling
++ *
++ * See the main source file 'vdr.c' for copyright information and
++ * how to reach the author.
++ *
++ * $Id: config.h 1.282.1.5 2007/05/12 09:07:16 kls Exp $
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#include <arpa/inet.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <time.h>
++#include <unistd.h>
++#include "i18n.h"
++#include "tools.h"
++
++// VDR's own version number:
++
++#define VDRVERSION "1.4.7"
++#define VDRVERSNUM 10407 // Version * 10000 + Major * 100 + Minor
++
++// The plugin API's version number:
++
++#define APIVERSION "1.4.5"
++#define APIVERSNUM 10405 // Version * 10000 + Major * 100 + Minor
++
++#define PLUGINPARAMPATCHVERSNUM 1
++
++// When loading plugins, VDR searches them by their APIVERSION, which
++// may be smaller than VDRVERSION in case there have been no changes to
++// VDR header files since the last APIVERSION. This allows compiled
++// plugins to work with newer versions of the core VDR as long as no
++// VDR header files have changed.
++
++#define MAXPRIORITY 99
++#define MAXLIFETIME 99
++
++#define MINOSDWIDTH 480
++#define MAXOSDWIDTH 672
++#define MINOSDHEIGHT 324
++#define MAXOSDHEIGHT 567
++
++#define MaxFileName 256
++#define MaxSkinName 16
++#define MaxThemeName 16
++
++class cCommand : public cListObject {
++private:
++ char *title;
++ char *command;
++ bool confirm;
++ static char *result;
++public:
++ cCommand(void);
++ virtual ~cCommand();
++ bool Parse(const char *s);
++ const char *Title(void) { return title; }
++ bool Confirm(void) { return confirm; }
++ const char *Execute(const char *Parameters = NULL);
++ };
++
++typedef uint32_t in_addr_t; //XXX from /usr/include/netinet/in.h (apparently this is not defined on systems with glibc < 2.2)
++
++class cSVDRPhost : public cListObject {
++private:
++ struct in_addr addr;
++ in_addr_t mask;
++public:
++ cSVDRPhost(void);
++ bool Parse(const char *s);
++ bool Accepts(in_addr_t Address);
++ };
++
++template<class T> class cConfig : public cList<T> {
++private:
++ char *fileName;
++ bool allowComments;
++ void Clear(void)
++ {
++ free(fileName);
++ fileName = NULL;
++ cList<T>::Clear();
++ }
++public:
++ cConfig(void) { fileName = NULL; }
++ virtual ~cConfig() { free(fileName); }
++ const char *FileName(void) { return fileName; }
++ bool Load(const char *FileName = NULL, bool AllowComments = false, bool MustExist = false)
++ {
++ cConfig<T>::Clear();
++ if (FileName) {
++ free(fileName);
++ fileName = strdup(FileName);
++ allowComments = AllowComments;
++ }
++ bool result = !MustExist;
++ if (fileName && access(fileName, F_OK) == 0) {
++ isyslog("loading %s", fileName);
++ FILE *f = fopen(fileName, "r");
++ if (f) {
++ char *s;
++ int line = 0;
++ cReadLine ReadLine;
++ result = true;
++ while ((s = ReadLine.Read(f)) != NULL) {
++ line++;
++ if (allowComments) {
++ char *p = strchr(s, '#');
++ if (p)
++ *p = 0;
++ }
++ stripspace(s);
++ if (!isempty(s)) {
++ T *l = new T;
++ if (l->Parse(s))
++ Add(l);
++ else {
++ esyslog("ERROR: error in %s, line %d", fileName, line);
++ delete l;
++ result = false;
++ break;
++ }
++ }
++ }
++ fclose(f);
++ }
++ else {
++ LOG_ERROR_STR(fileName);
++ result = false;
++ }
++ }
++ if (!result)
++ fprintf(stderr, "vdr: error while reading '%s'\n", fileName);
++ return result;
++ }
++ bool Save(void)
++ {
++ bool result = true;
++ T *l = (T *)this->First();
++ cSafeFile f(fileName);
++ if (f.Open()) {
++ while (l) {
++ if (!l->Save(f)) {
++ result = false;
++ break;
++ }
++ l = (T *)l->Next();
++ }
++ if (!f.Close())
++ result = false;
++ }
++ else
++ result = false;
++ return result;
++ }
++ };
++
++class cCommands : public cConfig<cCommand> {};
++
++class cSVDRPhosts : public cConfig<cSVDRPhost> {
++public:
++ bool Acceptable(in_addr_t Address);
++ };
++
++extern cCommands Commands;
++extern cCommands RecordingCommands;
++extern cSVDRPhosts SVDRPhosts;
++
++class cSetupLine : public cListObject {
++private:
++ char *plugin;
++ char *name;
++ char *value;
++public:
++ cSetupLine(void);
++ cSetupLine(const char *Name, const char *Value, const char *Plugin = NULL);
++ virtual ~cSetupLine();
++ virtual int Compare(const cListObject &ListObject) const;
++ const char *Plugin(void) { return plugin; }
++ const char *Name(void) { return name; }
++ const char *Value(void) { return value; }
++ bool Parse(char *s);
++ bool Save(FILE *f);
++ };
++
++class cSetup : public cConfig<cSetupLine> {
++ friend class cPlugin; // needs to be able to call Store()
++private:
++ void StoreLanguages(const char *Name, int *Values);
++ bool ParseLanguages(const char *Value, int *Values);
++ bool Parse(const char *Name, const char *Value);
++ cSetupLine *Get(const char *Name, const char *Plugin = NULL);
++ void Store(const char *Name, const char *Value, const char *Plugin = NULL, bool AllowMultiple = false);
++ void Store(const char *Name, int Value, const char *Plugin = NULL);
++public:
++ // Also adjust cMenuSetup (menu.c) when adding parameters here!
++ int __BeginData__;
++ int OSDLanguage;
++ char OSDSkin[MaxSkinName];
++ char OSDTheme[MaxThemeName];
++ int PrimaryDVB;
++ int ShowInfoOnChSwitch;
++ int TimeoutRequChInfo;
++ int MenuScrollPage;
++ int MenuScrollWrap;
++ int MenuButtonCloses;
++ int MarkInstantRecord;
++ char NameInstantRecord[MaxFileName];
++ int InstantRecordTime;
++ int LnbSLOF;
++ int LnbFrequLo;
++ int LnbFrequHi;
++ int DiSEqC;
++ int SetSystemTime;
++ int TimeSource;
++ int TimeTransponder;
++ int MarginStart, MarginStop;
++ int AudioLanguages[I18nNumLanguages + 1];
++ int EPGLanguages[I18nNumLanguages + 1];
++ int EPGScanTimeout;
++ int EPGBugfixLevel;
++ int EPGLinger;
++ int SVDRPTimeout;
++ int ZapTimeout;
++ int PrimaryLimit;
++ int DefaultPriority, DefaultLifetime;
++ int PausePriority, PauseLifetime;
++ int UseSubtitle;
++ int UseVps;
++ int VpsMargin;
++ int RecordingDirs;
++ int VideoDisplayFormat;
++ int VideoFormat;
++ int UpdateChannels;
++ int UseDolbyDigital;
++ int ChannelInfoPos;
++ int ChannelInfoTime;
++ int OSDLeft, OSDTop, OSDWidth, OSDHeight;
++ int OSDMessageTime;
++ int UseSmallFont;
++ int MaxVideoFileSize;
++ int SplitEditedFiles;
++ int MinEventTimeout, MinUserInactivity;
++ int MultiSpeedMode;
++ int ShowReplayMode;
++ int ResumeID;
++ int CurrentChannel;
++ int CurrentVolume;
++ int CurrentDolby;
++ int InitialChannel;
++ int InitialVolume;
++ int __EndData__;
++ cSetup(void);
++ cSetup& operator= (const cSetup &s);
++ bool Load(const char *FileName);
++ bool Save(void);
++ };
++
++extern cSetup Setup;
++
++#endif //__CONFIG_H
+diff -urNad vdr-1.4.7~/device.c vdr-1.4.7/device.c
+--- vdr-1.4.7~/device.c 2006-09-03 12:13:25.000000000 +0200
++++ vdr-1.4.7/device.c 2007-10-29 19:38:07.000000000 +0100
+@@ -509,6 +509,11 @@
+ return -1;
+ }
+
++void cDevice::CloseFilter(int Handle)
++{
++ close(Handle);
++}
++
+ void cDevice::AttachFilter(cFilter *Filter)
+ {
+ if (sectionHandler)
+diff -urNad vdr-1.4.7~/device.h vdr-1.4.7/device.h
+--- vdr-1.4.7~/device.h 2006-06-15 11:32:48.000000000 +0200
++++ vdr-1.4.7/device.h 2007-10-29 19:38:07.000000000 +0100
+@@ -302,6 +302,11 @@
+ ///< Opens a file handle for the given filter data.
+ ///< A derived device that provides section data must
+ ///< implement this function.
++ virtual void CloseFilter(int Handle);
++ ///< Closes a file handle that has previously been opened
++ ///< by OpenFilter(). If this is as simple as calling close(Handle),
++ ///< a derived class need not implement this function, because this
++ ///< is done by the default implementation.
+ void AttachFilter(cFilter *Filter);
+ ///< Attaches the given filter to this device.
+ void Detach(cFilter *Filter);
+diff -urNad vdr-1.4.7~/dvbdevice.c vdr-1.4.7/dvbdevice.c
+--- vdr-1.4.7~/dvbdevice.c 2007-02-24 12:10:14.000000000 +0100
++++ vdr-1.4.7/dvbdevice.c 2007-10-29 19:38:07.000000000 +0100
+@@ -726,6 +726,11 @@
+ return -1;
+ }
+
++void cDvbDevice::CloseFilter(int Handle)
++{
++ close(Handle);
++}
++
+ void cDvbDevice::TurnOffLiveMode(bool LiveView)
+ {
+ if (LiveView) {
+diff -urNad vdr-1.4.7~/dvbdevice.h vdr-1.4.7/dvbdevice.h
+--- vdr-1.4.7~/dvbdevice.h 2006-05-28 17:05:19.000000000 +0200
++++ vdr-1.4.7/dvbdevice.h 2007-10-29 19:38:07.000000000 +0100
+@@ -79,6 +79,7 @@
+
+ protected:
+ virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
++ virtual void CloseFilter(int Handle);
+
+ // Image Grab facilities
+
+diff -urNad vdr-1.4.7~/i18n.c vdr-1.4.7/i18n.c
+--- vdr-1.4.7~/i18n.c 2007-02-25 13:08:26.000000000 +0100
++++ vdr-1.4.7/i18n.c 2007-10-29 19:37:57.000000000 +0100
+@@ -6126,6 +6126,28 @@
+ "Ingen titel",
+ "Bez názvu",
+ },
++ { "Parameters",
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "Parametrit",
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ "",// TODO
++ },
+ { NULL }
+ };
+
+diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
+--- vdr-1.4.7~/menu.c 2006-12-02 12:12:02.000000000 +0100
++++ vdr-1.4.7/menu.c 2007-10-29 19:37:57.000000000 +0100
+@@ -216,6 +216,7 @@
+ cChannel *channel;
+ cChannel data;
+ char name[256];
++ char pluginParam[256];
+ void Setup(void);
+ public:
+ cMenuEditChannel(cChannel *Channel, bool New = false);
+@@ -248,6 +249,7 @@
+
+ // Parameters for all types of sources:
+ strn0cpy(name, data.name, sizeof(name));
++ strn0cpy(pluginParam, data.pluginParam, sizeof(pluginParam));
+ Add(new cMenuEditStrItem( tr("Name"), name, sizeof(name), tr(FileNameChars)));
+ Add(new cMenuEditSrcItem( tr("Source"), &data.source));
+ Add(new cMenuEditIntItem( tr("Frequency"), &data.frequency));
+@@ -276,6 +278,7 @@
+ ST(" T") Add(new cMenuEditMapItem( tr("Transmission"), &data.transmission, TransmissionValues));
+ ST(" T") Add(new cMenuEditMapItem( tr("Guard"), &data.guard, GuardValues));
+ ST(" T") Add(new cMenuEditMapItem( tr("Hierarchy"), &data.hierarchy, HierarchyValues, tr("none")));
++ ST("P ") Add(new cMenuEditStrItem( tr("Parameters"), pluginParam, sizeof(pluginParam), tr(FileNameChars)));
+
+ SetCurrent(Get(current));
+ Display();
+@@ -290,6 +293,7 @@
+ if (Key == kOk) {
+ if (Channels.HasUniqueChannelID(&data, channel)) {
+ data.name = strcpyrealloc(data.name, name);
++ data.pluginParam = strcpyrealloc(data.pluginParam, pluginParam);
+ if (channel) {
+ *channel = data;
+ isyslog("edited channel %d %s", channel->Number(), *data.ToText());
+diff -urNad vdr-1.4.7~/sections.c vdr-1.4.7/sections.c
+--- vdr-1.4.7~/sections.c 2005-09-18 13:30:29.000000000 +0200
++++ vdr-1.4.7/sections.c 2007-10-29 19:38:07.000000000 +0100
+@@ -105,7 +105,7 @@
+ for (fh = filterHandles.First(); fh; fh = filterHandles.Next(fh)) {
+ if (fh->filterData.Is(FilterData->pid, FilterData->tid, FilterData->mask)) {
+ if (--fh->used <= 0) {
+- close(fh->handle);
++ device->CloseFilter(fh->handle);
+ filterHandles.Del(fh);
+ break;
+ }
+diff -urNad vdr-1.4.7~/sources.c vdr-1.4.7/sources.c
+--- vdr-1.4.7~/sources.c 2004-12-26 12:58:52.000000000 +0100
++++ vdr-1.4.7/sources.c 2007-10-29 19:37:57.000000000 +0100
+@@ -37,6 +37,7 @@
+ char buffer[16];
+ char *q = buffer;
+ switch (Code & st_Mask) {
++ case stPlug: *q++ = 'P'; break;
+ case stCable: *q++ = 'C'; break;
+ case stSat: *q++ = 'S';
+ {
+@@ -56,6 +57,7 @@
+ {
+ int type = stNone;
+ switch (toupper(*s)) {
++ case 'P': type = stPlug; break;
+ case 'C': type = stCable; break;
+ case 'S': type = stSat; break;
+ case 'T': type = stTerr; break;
+diff -urNad vdr-1.4.7~/sources.conf vdr-1.4.7/sources.conf
+--- vdr-1.4.7~/sources.conf 2007-02-17 17:15:13.000000000 +0100
++++ vdr-1.4.7/sources.conf 2007-10-29 19:37:57.000000000 +0100
+@@ -188,3 +188,7 @@
+ # Terrestrial
+
+ T Terrestrial
++
++# Plugin
++
++P Plugin
+diff -urNad vdr-1.4.7~/sources.h vdr-1.4.7/sources.h
+--- vdr-1.4.7~/sources.h 2005-05-14 11:30:41.000000000 +0200
++++ vdr-1.4.7/sources.h 2007-10-29 19:37:57.000000000 +0100
+@@ -16,10 +16,11 @@
+ public:
+ enum eSourceType {
+ stNone = 0x0000,
++ stPlug = 0x2000,
+ stCable = 0x4000,
+ stSat = 0x8000,
+ stTerr = 0xC000,
+- st_Mask = 0xC000,
++ st_Mask = 0xE000,
+ st_Neg = 0x0800,
+ st_Pos = 0x07FF,
+ };
+@@ -35,6 +36,7 @@
+ static cString ToString(int Code);
+ static int FromString(const char *s);
+ static int FromData(eSourceType SourceType, int Position = 0, bool East = false);
++ static bool IsPlug(int Code) { return (Code & st_Mask) == stPlug; }
+ 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; }
Added: vdr/vdr/trunk/debian/patches/opt-37-x_menuorg.dpatch
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/opt-37-x_menuorg.dpatch?rev=5638&op=file
==============================================================================
--- vdr/vdr/trunk/debian/patches/opt-37-x_menuorg.dpatch (added)
+++ vdr/vdr/trunk/debian/patches/opt-37-x_menuorg.dpatch Mon Oct 29 19:27:05 2007
@@ -1,0 +1,274 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## opt-37-x_menuorg.dpatch by Tobias Grimm <tg at e-tobi.net>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: This patch is required by the MenuOrg plugin. It adds a service
+## DP: interface, that can be implemented by plugins to reorganize
+## DP: VDR's main menu entries with the ability to create custom sub
+## DP: menus.
+
+ at DPATCH@
+diff -urNad vdr-1.4.7~/mainmenuitemsprovider.h vdr-1.4.7/mainmenuitemsprovider.h
+--- vdr-1.4.7~/mainmenuitemsprovider.h 1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.7/mainmenuitemsprovider.h 2007-08-22 21:30:20.000000000 +0200
+@@ -0,0 +1,57 @@
++/*
++ * vdr-menuorg - A plugin for the Linux Video Disk Recorder
++ * Copyright (C) 2007 Thomas Creutz, Tobias Grimm
++ *
++ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * $Id:$
++ *
++ */
++
++#ifndef __MAINMENUITEMSPROVIDER_H
++#define __MAINMENUITEMSPROVIDER_H
++
++#include <vector>
++
++class cOsdItem;
++class cOsdMenu;
++
++class IMenuItemDefinition
++{
++ public:
++ virtual ~IMenuItemDefinition() {};
++ virtual bool IsCustomOsdItem() = 0;
++ virtual bool IsPluginItem() = 0;
++ virtual cOsdItem* CustomOsdItem() = 0;
++ virtual const char* PluginMenuEntry() = 0;
++ virtual int PluginIndex() = 0;
++};
++
++typedef std::vector<IMenuItemDefinition*> MenuItemDefinitions;
++
++#define MENU_ITEMS_PROVIDER_SERVICE_ID "MenuOrgPatch-v0.1::MainMenuItemsProvider"
++
++class IMainMenuItemsProvider
++{
++ public:
++ virtual ~IMainMenuItemsProvider() {};
++ virtual MenuItemDefinitions* MainMenuItems() = 0;
++ virtual void EnterRootMenu() = 0;
++ virtual void EnterSubMenu(cOsdItem* item) = 0;
++ virtual bool LeaveSubMenu() = 0;
++ virtual cOsdMenu* Execute(cOsdItem* item) = 0;
++};
++
++#endif //__MAINMENUITEMSPROVIDER_H
+diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
+--- vdr-1.4.7~/menu.c 2007-08-22 21:30:20.000000000 +0200
++++ vdr-1.4.7/menu.c 2007-08-22 21:30:20.000000000 +0200
+@@ -14,6 +14,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <math.h>
++#include "menuorgpatch.h"
+ #include "channels.h"
+ #include "config.h"
+ #include "cutter.h"
+@@ -3057,6 +3058,9 @@
+ cancelEditingItem = NULL;
+ stopRecordingItem = NULL;
+ recordControlsState = 0;
++
++ MenuOrgPatch::EnterRootMenu();
++
+ Set();
+
+ // Initial submenus:
+@@ -3084,6 +3088,25 @@
+ Clear();
+ SetTitle("VDR");
+ SetHasHotkeys();
++
++ if (MenuOrgPatch::IsCustomMenuAvailable()) {
++ MenuItemDefinitions* menuItems = MenuOrgPatch::MainMenuItems();
++ for (MenuItemDefinitions::iterator i = menuItems->begin(); i != menuItems->end(); i++) {
++ if ((*i)->IsCustomOsdItem()) {
++ cOsdItem* osdItem = (*i)->CustomOsdItem();
++ if (osdItem) {
++ osdItem->SetText(hk(osdItem->Text()));
++ Add(osdItem);
++ }
++ }
++ else if ((*i)->IsPluginItem()) {
++ const char *item = (*i)->PluginMenuEntry();
++ if (item)
++ Add(new cMenuPluginItem(hk(item), (*i)->PluginIndex()));
++ }
++ }
++ }
++ else {
+
+ // Basic menu items:
+
+@@ -3111,6 +3134,8 @@
+ if (Commands.Count())
+ Add(new cOsdItem(hk(tr("Commands")), osCommands));
+
++ }
++
+ Update(true);
+
+ Display();
+@@ -3238,6 +3263,41 @@
+ state = osEnd;
+ }
+ break;
++ case osBack: {
++ if (MenuOrgPatch::IsCustomMenuAvailable())
++ {
++ bool leavingMenuSucceeded = MenuOrgPatch::LeaveSubMenu();
++ Set();
++ stopReplayItem = NULL;
++ cancelEditingItem = NULL;
++ stopRecordingItem = NULL;
++ recordControlsState = 0;
++ Update(true);
++ Display();
++ if (leavingMenuSucceeded)
++ return osContinue;
++ else
++ return osEnd;
++ }
++ }
++ break;
++ case osUser1: {
++ if (MenuOrgPatch::IsCustomMenuAvailable()) {
++ MenuOrgPatch::EnterSubMenu(Get(Current()));
++ Set();
++ return osContinue;
++ }
++ }
++ break;
++ case osUser2: {
++ if (MenuOrgPatch::IsCustomMenuAvailable()) {
++ cOsdMenu* osdMenu = MenuOrgPatch::Execute(Get(Current()));
++ if (osdMenu)
++ return AddSubMenu(osdMenu);
++ return osEnd;
++ }
++ }
++ break;
+ default: switch (Key) {
+ case kRecord:
+ case kRed: if (!HadSubMenu)
+diff -urNad vdr-1.4.7~/menuorgpatch.h vdr-1.4.7/menuorgpatch.h
+--- vdr-1.4.7~/menuorgpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.7/menuorgpatch.h 2007-08-22 21:31:33.000000000 +0200
+@@ -0,0 +1,101 @@
++/*
++ * vdr-menuorg - A plugin for the Linux Video Disk Recorder
++ * Copyright (C) 2007 Thomas Creutz, Tobias Grimm
++ *
++ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * $Id:$
++ *
++ */
++
++#ifndef __MENUORGPATCH_H
++#define __MENUORGPATCH_H
++
++#include "mainmenuitemsprovider.h"
++#include "plugin.h"
++
++class MenuOrgPatch
++{
++ private:
++ static IMainMenuItemsProvider* _mainMenuItemsProvider;
++
++ private:
++ static IMainMenuItemsProvider* MainMenuItemsProvider()
++ {
++ if (!_mainMenuItemsProvider)
++ {
++ IMainMenuItemsProvider* mainMenuItemsProvider;
++
++ if (cPluginManager::CallFirstService(MENU_ITEMS_PROVIDER_SERVICE_ID, &mainMenuItemsProvider))
++ {
++ _mainMenuItemsProvider = mainMenuItemsProvider;
++ }
++ }
++ return _mainMenuItemsProvider;
++ }
++
++ public:
++ static bool IsCustomMenuAvailable()
++ {
++ return (MainMenuItemsProvider() != NULL);
++ }
++
++ static void EnterRootMenu()
++ {
++ if (MainMenuItemsProvider())
++ {
++ MainMenuItemsProvider()->EnterRootMenu();
++ }
++ }
++
++ static bool LeaveSubMenu()
++ {
++ if (MainMenuItemsProvider())
++ {
++ return MainMenuItemsProvider()->LeaveSubMenu();
++ }
++ return false;
++ }
++
++ static void EnterSubMenu(cOsdItem* item)
++ {
++ if (MainMenuItemsProvider())
++ {
++ MainMenuItemsProvider()->EnterSubMenu(item);
++ }
++ }
++
++ static MenuItemDefinitions* MainMenuItems()
++ {
++ if (MainMenuItemsProvider())
++ {
++ return MainMenuItemsProvider()->MainMenuItems();
++ }
++ return NULL;
++ }
++
++ static cOsdMenu* Execute(cOsdItem* item)
++ {
++ if (MainMenuItemsProvider())
++ {
++ return MainMenuItemsProvider()->Execute(item);
++ }
++ return NULL;
++ }
++};
++
++IMainMenuItemsProvider* MenuOrgPatch::_mainMenuItemsProvider = NULL;
++
++#endif //__MENUORGPATCH_H
Modified: vdr/vdr/trunk/debian/patches/opt-39_noepg.dpatch
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/opt-39_noepg.dpatch?rev=5638&op=diff
==============================================================================
--- vdr/vdr/trunk/debian/patches/opt-39_noepg.dpatch (original)
+++ vdr/vdr/trunk/debian/patches/opt-39_noepg.dpatch Mon Oct 29 19:27:05 2007
@@ -1,6 +1,6 @@
#! /bin/sh /usr/share/dpatch/dpatch-run
-## opt-39_noepg.dpatch by Torsten Kunkel <vdr at tkunkel.de>
-## extracted from noepg plugin version 0.0.2 (vdr-1.3.41-plain.patch)
+## opt-39_noepg.dpatch by Torsten/WarEagle at vdrportal.de
+## http://vdrportal.de/board/thread.php?postid=658080#post658080
##
## Thomas Günther <tom at toms-cafe.de>:
## - solved conflicts with other patches
@@ -10,93 +10,136 @@
## DP: This is useful if you get epg data of the channels from external sources.
@DPATCH@
---- vdr-1.3.41/channels.c
-+++ vdr-1.3.41/channels.c
-@@ -7,6 +7,7 @@
- * $Id: channels.c 1.48 2006/01/14 15:51:02 kls Exp $
- */
+diff -ur vdr-1.4.7-org/config.c vdr-1.4.7+noEPG/config.c
+--- vdr-1.4.7-org/config.c 2007-01-26 14:32:19.000000000 +0100
++++ vdr-1.4.7+noEPG/config.c 2007-10-20 22:30:44.000000000 +0200
+@@ -277,1 +277,3 @@
+- InitialVolume = -1;
++ InitialVolume = -1;
++ noEPGMode = 0;
++ noEPGList=strdup("");
+@@ -432,1 +434,6 @@
+- else if (!strcasecmp(Name, "ShowReplayMode")) ShowReplayMode = atoi(Value);
++ else if (!strcasecmp(Name, "ShowReplayMode")) ShowReplayMode = atoi(Value);
++ else if (!strcasecmp(Name, "noEPGMode")) noEPGMode = atoi(Value);
++ else if (!strcasecmp(Name, "noEPGList")){
++ free(noEPGList);
++ noEPGList=strdup(Value);
++ }
+@@ -506,1 +513,3 @@
+- Store("InitialVolume", InitialVolume);
++ Store("InitialVolume", InitialVolume);
++ Store("noEPGMode", noEPGMode);
++ Store("noEPGList", noEPGList);
+diff -ur vdr-1.4.7-org/config.h vdr-1.4.7+noEPG/config.h
+--- vdr-1.4.7-org/config.h 2007-05-12 11:07:16.000000000 +0200
++++ vdr-1.4.7+noEPG/config.h 2007-10-13 18:45:46.000000000 +0200
+@@ -254,1 +254,3 @@
+- int InitialVolume;
++ int InitialVolume;
++ char *noEPGList;
++ int noEPGMode;
+diff -ur vdr-1.4.7-org/eit.c vdr-1.4.7+noEPG/eit.c
+--- vdr-1.4.7-org/eit.c 2006-10-09 18:14:36.000000000 +0200
++++ vdr-1.4.7+noEPG/eit.c 2007-10-13 18:45:46.000000000 +0200
+@@ -22,8 +22,28 @@
+ class cEIT : public SI::EIT {
+ public:
+ cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bool OnlyRunningStatus = false);
++private:
++ bool allowedEPG(tChannelID kanalID);
+ };
-+#include "config.h"
- #include "channels.h"
- #include <linux/dvb/frontend.h>
- #include <ctype.h>
-@@ -1030,6 +1031,17 @@
- return NULL;
- }
-
-+//TK
-+bool cChannels::keinEPGScan(tChannelID kanalID)
-+{
-+ bool rc=false;
++bool cEIT::allowedEPG(tChannelID kanalID){
++ bool rc;
+
-+ if (strstr(::Setup.noEPG,kanalID.ToString())!=NULL){
++ if (Setup.noEPGMode == 1){
++ rc=false;
++ if (strstr(::Setup.noEPGList,kanalID.ToString())!=NULL){
++ rc=true;
++ }
++ }else{
+ rc=true;
++ if (strstr(::Setup.noEPGList,kanalID.ToString())!=NULL){
++ rc=false;
++ }
+ }
++
+ return rc;
+}
+
- cString ChannelString(const cChannel *Channel, int Number)
+ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bool OnlyRunningStatus)
+ :SI::EIT(Data, false)
{
- char buffer[256];
---- vdr-1.3.41/channels.h
-+++ vdr-1.3.41/channels.h
-@@ -248,6 +248,7 @@
- ///< modification has been made, and 2 if the user has made a modification.
- ///< Calling this function resets the 'modified' flag to 0.
- cChannel *NewChannel(const cChannel *Transponder, const char *Name, const char *ShortName, const char *Provider, int Nid, int Tid, int Sid, int Rid = 0);
-+ bool keinEPGScan(tChannelID kanalID);//TK
- };
-
- extern cChannels Channels;
---- vdr-1.3.41/config.c
-+++ vdr-1.3.41/config.c
-@@ -238,6 +238,7 @@
- EPGScanTimeout = 5;
- EPGBugfixLevel = 3;
- EPGLinger = 0;
-+ strcpy(noEPG, "");
- SVDRPTimeout = 300;
- ZapTimeout = 3;
- SortTimers = 1;
-@@ -398,6 +399,7 @@
- else if (!strcasecmp(Name, "EPGScanTimeout")) EPGScanTimeout = atoi(Value);
- else if (!strcasecmp(Name, "EPGBugfixLevel")) EPGBugfixLevel = atoi(Value);
- else if (!strcasecmp(Name, "EPGLinger")) EPGLinger = atoi(Value);
-+ else if (!strcasecmp(Name, "noEPG")) strn0cpy(noEPG, Value, 999);
- else if (!strcasecmp(Name, "SVDRPTimeout")) SVDRPTimeout = atoi(Value);
- else if (!strcasecmp(Name, "ZapTimeout")) ZapTimeout = atoi(Value);
- else if (!strcasecmp(Name, "SortTimers")) SortTimers = atoi(Value);
-@@ -465,6 +467,7 @@
- Store("EPGScanTimeout", EPGScanTimeout);
- Store("EPGBugfixLevel", EPGBugfixLevel);
- Store("EPGLinger", EPGLinger);
-+ Store("noEPG", noEPG);
- Store("SVDRPTimeout", SVDRPTimeout);
- Store("ZapTimeout", ZapTimeout);
- Store("SortTimers", SortTimers);
---- vdr-1.3.41/config.h
-+++ vdr-1.3.41/config.h
-@@ -210,6 +210,7 @@
- int EPGScanTimeout;
- int EPGBugfixLevel;
- int EPGLinger;
-+ char noEPG[999];
- int SVDRPTimeout;
- int ZapTimeout;
- int SortTimers;
---- vdr-1.3.41/eit.c
-+++ vdr-1.3.41/eit.c
-@@ -35,6 +35,13 @@
+@@ -35,6 +55,15 @@
if (!channel)
return; // only collect data for known channels
-+ //TK
++ // noepg >>>
++ //only use epg from channels not blocked by noEPG-patch
+ tChannelID kanalID;
+ kanalID=channel->GetChannelID();
-+ if (Channels.keinEPGScan(kanalID)){
++ if (!allowedEPG(kanalID)){
+ return;
+ }
++ // noepg <<<
+
cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(channel, true);
bool Empty = true;
+diff -ur vdr-1.4.7-org/i18n.c vdr-1.4.7+noEPG/i18n.c
+--- vdr-1.4.7-org/i18n.c 2007-02-25 13:08:26.000000000 +0100
++++ vdr-1.4.7+noEPG/i18n.c 2007-10-13 18:45:46.000000000 +0200
+@@ -3414,6 +3414,27 @@
+ "Tid før EPG skanning (t)",
+ "Èasový limit pro snímání EPG (h)",
+ },
++ { "Setup.EPG$Mode of noEPG-Patch",
++ "Art des noEPG-Patches",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ },
+ { "Setup.EPG$EPG bugfix level",
+ "EPG-Fehlerbereinigung",
+ "Nivo za popravilo EPG napak",
+diff -ur vdr-1.4.7-org/menu.c vdr-1.4.7+noEPG/menu.c
+--- vdr-1.4.7-org/menu.c 2006-12-02 12:12:02.000000000 +0100
++++ vdr-1.4.7+noEPG/menu.c 2007-10-13 18:46:08.000000000 +0200
+@@ -2230,6 +2230,7 @@
+
+ class cMenuSetupEPG : public cMenuSetupBase {
+ private:
++ const char *noEPGModes[2];
+ int originalNumLanguages;
+ int numLanguages;
+ void Setup(void);
+@@ -2252,6 +2253,9 @@
+ {
+ int current = Current();
+
++ noEPGModes[0]=tr("Blacklist");
++ noEPGModes[1]=tr("Whitelist");
++
+ Clear();
+
+ Add(new cMenuEditIntItem( tr("Setup.EPG$EPG scan timeout (h)"), &data.EPGScanTimeout));
+@@ -2264,1 +2269,2 @@
+- Add(new cMenuEditStraItem(tr("Setup.EPG$Preferred language"), &data.EPGLanguages[i], I18nNumLanguages, I18nLanguages()));
++ Add(new cMenuEditStraItem(tr("Setup.EPG$Preferred language"), &data.EPGLanguages[i], I18nNumLanguages, I18nLanguages()));
++ Add(new cMenuEditStraItem(tr("Setup.EPG$Mode noEPG-Patch"), &data.noEPGMode, 2, noEPGModes));
Added: vdr/vdr/trunk/debian/patches/opt-43-x_recordshowfree.dpatch
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/opt-43-x_recordshowfree.dpatch?rev=5638&op=file
==============================================================================
--- vdr/vdr/trunk/debian/patches/opt-43-x_recordshowfree.dpatch (added)
+++ vdr/vdr/trunk/debian/patches/opt-43-x_recordshowfree.dpatch Mon Oct 29 19:27:05 2007
@@ -1,0 +1,31 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## opt-32-x_recordshowfree.dpatch by Walter Koch <koch at u32.de>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Shows remaining recording capacity in recordings menu.
+## DP: (Requires timer-info patch)
+
+ at DPATCH@
+diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
+--- vdr-1.4.7~/menu.c 2007-07-01 21:00:57.000000000 +0200
++++ vdr-1.4.7/menu.c 2007-07-01 21:01:09.000000000 +0200
+@@ -2309,6 +2309,19 @@
+ }
+ }
+ free(LastItemText);
++
++//kw
++ char *buffer = NULL;
++ int FreeMB;
++ int Percent = VideoDiskSpace(&FreeMB);
++ int Minutes = int(double(FreeMB) / MB_PER_MINUTE);
++ int Hours = Minutes / 60;
++ Minutes %= 60;
++ asprintf(&buffer, "%s %d%% %2d:%02d %s (%.1f GB)", tr("Disk"), Percent, Hours, Minutes, tr("free"), FreeMB / 1024.0 );
++ SetTitle(buffer);
++ free(buffer);
++//kw
++
+ if (Refresh)
+ Display();
+ }
Added: vdr/vdr/trunk/debian/patches/opt-48-x_pin.dpatch
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/opt-48-x_pin.dpatch?rev=5638&op=file
==============================================================================
--- vdr/vdr/trunk/debian/patches/opt-48-x_pin.dpatch (added)
+++ vdr/vdr/trunk/debian/patches/opt-48-x_pin.dpatch Mon Oct 29 19:27:05 2007
@@ -1,0 +1,628 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## opt-48_pin.dpatch by Jörg Wendel (Horchi)
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Patch for the PIN plugin from version 0.1.7 of the Plugin
+## (vdr-1.4.5.diff)
+
+ at DPATCH@
+diff -urNad vdr-1.4.7~/Makefile vdr-1.4.7/Makefile
+--- vdr-1.4.7~/Makefile 2007-08-24 00:09:08.000000000 +0200
++++ vdr-1.4.7/Makefile 2007-08-24 00:09:09.000000000 +0200
+@@ -42,6 +42,8 @@
+
+ OBJS += osdcontroller.o rcontroller.o dvbsub.o vdrttxtsubshooks.o
+
++OBJS += childlock.o
++
+ FIXFONT_ISO8859_1 = -adobe-courier-bold-r-normal--25-*-100-100-m-*-iso8859-1
+ OSDFONT_ISO8859_1 = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-1
+ SMLFONT_ISO8859_1 = -adobe-helvetica-medium-r-normal--18-*-100-100-p-*-iso8859-1
+diff -urNad vdr-1.4.7~/childlock.c vdr-1.4.7/childlock.c
+--- vdr-1.4.7~/childlock.c 1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.7/childlock.c 2007-08-24 00:09:09.000000000 +0200
+@@ -0,0 +1,166 @@
++#include "childlock.h"
++#include "childlockservice.h"
++#include "plugin.h"
++
++using namespace PinPatch;
++
++IChildLockService* ChildLock::_cachedChildLockService = NULL;
++INotificationService* ChildLock::_cachedNotificationService = NULL;
++
++IChildLockService* ChildLock::ChildLockService()
++{
++ if (!_cachedChildLockService)
++ {
++ IChildLockService* childLockService;
++
++ if (cPluginManager::CallFirstService(CHILDLOCK_SERVICE_ID, &childLockService))
++ {
++ _cachedChildLockService = childLockService;
++ }
++ else
++ {
++ _cachedChildLockService = NULL;
++ }
++ }
++
++ return _cachedChildLockService;
++}
++
++bool ChildLock::IsUnlocked()
++{
++ if (IChildLockService* childLockService = ChildLockService())
++ {
++ return childLockService->IsUnlocked();
++ }
++ else
++ {
++ return false;
++ }
++}
++
++bool ChildLock::IsMenuProtected(const char* MenuName)
++{
++ if (IChildLockService* childLockService = ChildLockService())
++ {
++ return childLockService->IsMenuProtected(MenuName);
++ }
++ else
++ {
++ return false;
++ }
++}
++
++bool ChildLock::IsChannelProtected(const cChannel* Channel)
++{
++ if (IChildLockService* childLockService = ChildLockService())
++ {
++ return childLockService->IsChannelProtected(Channel);
++ }
++ else
++ {
++ return false;
++ }
++}
++
++bool ChildLock::IsRecordingProtected(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory)
++{
++ if (IChildLockService* childLockService = ChildLockService())
++ {
++ return childLockService->IsRecordingProtected(Recording, Name, Base, isDirectory);
++ }
++ else
++ {
++ return false;
++ }
++}
++
++bool ChildLock::IsPluginProtected(cPlugin* Plugin)
++{
++ if (IChildLockService* childLockService = ChildLockService())
++ {
++ return childLockService->IsPluginProtected(Plugin);
++ }
++ else
++ {
++ return false;
++ }
++}
++
++bool ChildLock::IsMenuHidden(const char* MenuName)
++{
++ if (IChildLockService* childLockService = ChildLockService())
++ {
++ return childLockService->IsMenuHidden(MenuName);
++ }
++ else
++ {
++ return false;
++ }
++}
++
++bool ChildLock::IsPluginHidden(cPlugin* Plugin)
++{
++ if (IChildLockService* childLockService = ChildLockService())
++ {
++ return childLockService->IsPluginHidden(Plugin);
++ }
++ else
++ {
++ return false;
++ }
++}
++
++bool ChildLock::IsRecordingHidden(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory)
++{
++ if (IChildLockService* childLockService = ChildLockService())
++ {
++ return childLockService->IsRecordingHidden(Recording, Name, Base, isDirectory);
++ }
++ else
++ {
++ return false;
++ }
++}
++
++INotificationService* ChildLock::NotificationService()
++{
++ if (!_cachedNotificationService)
++ {
++ INotificationService* notificationService;
++
++ if (cPluginManager::CallFirstService(NOTIFICATION_SERVICE_ID, ¬ificationService))
++ {
++ _cachedNotificationService = notificationService;
++ }
++ else
++ {
++ _cachedNotificationService = NULL;
++ }
++ }
++
++ return _cachedNotificationService;
++}
++
++void ChildLock::NotifyTimerCreation(cTimer* Timer, const cEvent *Event)
++{
++ if (INotificationService* notificationService = NotificationService())
++ {
++ notificationService->NotifyTimerCreation(Timer, Event);
++ }
++}
++
++void ChildLock::NotifyRecordingStart(const char* FileName)
++{
++ if (INotificationService* notificationService = NotificationService())
++ {
++ notificationService->NotifyRecordingStart(FileName);
++ }
++}
++
++void ChildLock::NotifyUserAction(const eKeys key, const cOsdObject* Interact)
++{
++ if (INotificationService* notificationService = NotificationService())
++ {
++ notificationService->NotifyUserAction(key, Interact);
++ }
++}
+diff -urNad vdr-1.4.7~/childlock.h vdr-1.4.7/childlock.h
+--- vdr-1.4.7~/childlock.h 1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.7/childlock.h 2007-08-24 00:09:09.000000000 +0200
+@@ -0,0 +1,47 @@
++#ifndef __CHILDLOCK_H
++#define __CHILDLOCK_H
++
++#include "keys.h"
++
++class cChannel;
++class cRecording;
++class cPlugin;
++class cTimer;
++class cEvent;
++class cOsdObject;
++
++namespace PinPatch
++{
++
++class IChildLockService;
++class INotificationService;
++
++class ChildLock
++{
++ private:
++ static IChildLockService* _cachedChildLockService;
++ static INotificationService* _cachedNotificationService;
++
++ private:
++ static IChildLockService* ChildLockService();
++ static INotificationService* NotificationService();
++
++ public:
++ static bool IsUnlocked();
++
++ static bool IsMenuProtected(const char* MenuName);
++ static bool IsChannelProtected(const cChannel* Channel);
++ static bool IsRecordingProtected(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory);
++ static bool IsPluginProtected(cPlugin* Plugin);
++
++ static bool IsMenuHidden(const char* MenuName);
++ static bool IsPluginHidden(cPlugin* Plugin);
++ static bool IsRecordingHidden(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory);
++
++ static void NotifyTimerCreation(cTimer* Timer, const cEvent *Event);
++ static void NotifyRecordingStart(const char* FileName);
++ static void NotifyUserAction(const eKeys key, const cOsdObject* Interact);
++};
++
++};
++#endif
+diff -urNad vdr-1.4.7~/childlockservice.h vdr-1.4.7/childlockservice.h
+--- vdr-1.4.7~/childlockservice.h 1970-01-01 01:00:00.000000000 +0100
++++ vdr-1.4.7/childlockservice.h 2007-08-24 00:09:23.000000000 +0200
+@@ -0,0 +1,46 @@
++#ifndef __CHILDLOCKSERVICE_H
++#define __CHILDLOCKSERVICE_H
++
++#include "keys.h"
++
++class cChannel;
++class cRecording;
++class cPlugin;
++class cTimer;
++class cEvent;
++class cOsdObject;
++
++namespace PinPatch
++{
++
++#define CHILDLOCK_SERVICE_ID "ChildLockService-v0.1::ChildLockService"
++
++class IChildLockService
++{
++ public:
++ virtual ~IChildLockService() {};
++ virtual bool IsUnlocked() = 0;
++
++ virtual bool IsMenuProtected(const char* MenuName) = 0;
++ virtual bool IsChannelProtected(const cChannel* Channel) = 0;
++ virtual bool IsRecordingProtected(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory) = 0;
++ virtual bool IsPluginProtected(cPlugin* Plugin) = 0;
++
++ virtual bool IsMenuHidden(const char* MenuName) = 0;
++ virtual bool IsPluginHidden(cPlugin* Plugin) = 0;
++ virtual bool IsRecordingHidden(const cRecording* Recording, const char* Name, const char* Base, bool isDirectory) = 0;
++};
++
++#define NOTIFICATION_SERVICE_ID "PinPlugin-v0.1::NotificationService"
++
++class INotificationService
++{
++ public:
++ virtual ~INotificationService() {};
++ virtual void NotifyTimerCreation(cTimer* Timer, const cEvent *Event) = 0;
++ virtual void NotifyRecordingStart(const char* FileName) = 0;
++ virtual void NotifyUserAction(const eKeys key, const cOsdObject* Interact) = 0;
++};
++
++};
++#endif
+diff -urNad vdr-1.4.7~/device.c vdr-1.4.7/device.c
+--- vdr-1.4.7~/device.c 2007-08-24 00:09:08.000000000 +0200
++++ vdr-1.4.7/device.c 2007-08-24 00:09:09.000000000 +0200
+@@ -18,6 +18,7 @@
+ #include "receiver.h"
+ #include "status.h"
+ #include "transfer.h"
++#include "childlock.h"
+
+ // --- cPesAssembler ---------------------------------------------------------
+
+@@ -596,6 +597,7 @@
+ cChannel *channel;
+ while ((channel = Channels.GetByNumber(n, Direction)) != NULL) {
+ // try only channels which are currently available
++ if (PinPatch::ChildLock::IsChannelProtected(channel) == false)
+ if (PrimaryDevice()->ProvidesChannel(channel, Setup.PrimaryLimit) || PrimaryDevice()->CanReplay() && GetDevice(channel, 0))
+ break;
+ n = channel->Number() + Direction;
+@@ -617,6 +619,9 @@
+
+ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
+ {
++ if (LiveView && PinPatch::ChildLock::IsChannelProtected(Channel) == true)
++ return scrNotAvailable;
++
+ if (LiveView)
+ StopReplay();
+
+diff -urNad vdr-1.4.7~/i18n.c vdr-1.4.7/i18n.c
+--- vdr-1.4.7~/i18n.c 2007-08-24 00:09:08.000000000 +0200
++++ vdr-1.4.7/i18n.c 2007-08-24 00:09:09.000000000 +0200
+@@ -6693,6 +6693,27 @@
+ "",//TODO
+ "",//TODO
+ },
++ { "Timer$Childlock",
++ "Gesichert",
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "Adulte",
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ "",//TODO
++ },
+ { NULL }
+ };
+
+diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
+--- vdr-1.4.7~/menu.c 2007-08-24 00:09:08.000000000 +0200
++++ vdr-1.4.7/menu.c 2007-08-24 00:09:09.000000000 +0200
+@@ -33,6 +33,7 @@
+ #include "vdrttxtsubshooks.h"
+ #include "dvbsub.h"
+ #include "videodir.h"
++#include "childlock.h"
+
+ #define MAXWAIT4EPGINFO 3 // seconds
+ #define MODETIMEOUT 3 // seconds
+@@ -723,6 +724,10 @@
+ Add(new cMenuEditBitItem( tr("VPS"), &data.flags, tfVps));
+ Add(new cMenuEditIntItem( tr("Priority"), &data.priority, 0, MAXPRIORITY));
+ Add(new cMenuEditIntItem( tr("Lifetime"), &data.lifetime, 0, MAXLIFETIME));
++
++ if (PinPatch::ChildLock::IsUnlocked())
++ Add(new cMenuEditBitItem(tr("Timer$Childlock"), &data.flags, tfProtected));
++
+ char* p = strrchr(data.file, '~');
+ if (p) {
+ p++;
+@@ -2293,7 +2298,8 @@
+ for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
+ if (!base || (strstr(recording->Name(), base) == recording->Name() && recording->Name()[strlen(base)] == '~')) {
+ cMenuRecordingItem *Item = new cMenuRecordingItem(recording, level);
+- if (*Item->Text() && (!LastItem || strcmp(Item->Text(), LastItemText) != 0)) {
++ if ((*Item->Text() && (!LastItem || strcmp(Item->Text(), LastItemText) != 0))
++ && (!PinPatch::ChildLock::IsRecordingHidden(GetRecording(Item), Item->Name(), base, Item->IsDirectory()))) {
+ Add(Item);
+ LastItem = Item;
+ free(LastItemText);
+@@ -2356,6 +2362,9 @@
+ {
+ cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
+ if (ri) {
++ if (PinPatch::ChildLock::IsRecordingProtected(GetRecording(ri), ri->Name(), base, ri->IsDirectory()) == true)
++ return osContinue;
++
+ if (ri->IsDirectory())
+ Open();
+ else {
+@@ -3272,6 +3281,8 @@
+ }
+ else if ((*i)->IsPluginItem()) {
+ const char *item = (*i)->PluginMenuEntry();
++ cPlugin *plugin = cPluginManager::GetPlugin((*i)->PluginIndex());
++ if (!PinPatch::ChildLock::IsPluginHidden(plugin))
+ if (item)
+ Add(new cMenuPluginItem(hk(item), (*i)->PluginIndex()));
+ }
+@@ -3281,9 +3292,13 @@
+
+ // Basic menu items:
+
++ if (!PinPatch::ChildLock::IsMenuHidden("Schedule"))
+ Add(new cOsdItem(hk(tr("Schedule")), osSchedule));
++ if (!PinPatch::ChildLock::IsMenuHidden("Channels"))
+ Add(new cOsdItem(hk(tr("Channels")), osChannels));
++ if (!PinPatch::ChildLock::IsMenuHidden("Timers"))
+ Add(new cOsdItem(hk(tr("Timers")), osTimers));
++ if (!PinPatch::ChildLock::IsMenuHidden("Recordings"))
+ Add(new cOsdItem(hk(tr("Recordings")), osRecordings));
+
+ // Plugins:
+@@ -3291,18 +3306,22 @@
+ for (int i = 0; ; i++) {
+ cPlugin *p = cPluginManager::GetPlugin(i);
+ if (p) {
++ if (!PinPatch::ChildLock::IsPluginHidden(p)) {
+ const char *item = p->MainMenuEntry();
+ if (item)
+ Add(new cMenuPluginItem(hk(item), i));
+ }
++ }
+ else
+ break;
+ }
+
+ // More basic menu items:
+
++ if (!PinPatch::ChildLock::IsMenuHidden("Setup"))
+ Add(new cOsdItem(hk(tr("Setup")), osSetup));
+ if (Commands.Count())
++ if (!PinPatch::ChildLock::IsMenuHidden("Commands"))
+ Add(new cOsdItem(hk(tr("Commands")), osCommands));
+
+ }
+@@ -3393,6 +3412,11 @@
+ eOSState state = cOsdMenu::ProcessKey(Key);
+ HadSubMenu |= HasSubMenu();
+
++ cOsdItem* item = Get(Current());
++ if (item && item->Text() && state != osContinue && state != osUnknown && state != osBack)
++ if (PinPatch::ChildLock::IsMenuProtected(item->Text()))
++ return osContinue;
++
+ cOsdMenu *menu = NULL;
+ switch (state) {
+ case osSchedule:
+@@ -3439,6 +3463,7 @@
+ if (item) {
+ cPlugin *p = cPluginManager::GetPlugin(item->PluginIndex());
+ if (p) {
++ if (!PinPatch::ChildLock::IsPluginProtected(p)) {
+ cOsdObject *menu = p->MainMenuAction();
+ if (menu) {
+ if (menu->IsMenu())
+@@ -3450,6 +3475,7 @@
+ }
+ }
+ }
++ }
+ state = osEnd;
+ }
+ break;
+@@ -3650,6 +3676,7 @@
+ if (Direction) {
+ while (Channel) {
+ Channel = Direction > 0 ? Channels.Next(Channel) : Channels.Prev(Channel);
++ if (PinPatch::ChildLock::IsChannelProtected(Channel) == false)
+ if (Channel && !Channel->GroupSep() && (cDevice::PrimaryDevice()->ProvidesChannel(Channel, Setup.PrimaryLimit) || cDevice::GetDevice(Channel, 0)))
+ return Channel;
+ }
+@@ -4190,6 +4217,7 @@
+ for (int i = 0; i < MAXRECORDCONTROLS; i++) {
+ if (!RecordControls[i]) {
+ RecordControls[i] = new cRecordControl(device, Timer, Pause);
++ PinPatch::ChildLock::NotifyRecordingStart(RecordControls[i]->FileName());
+ return RecordControls[i]->Process(time(NULL));
+ }
+ }
+diff -urNad vdr-1.4.7~/timers.c vdr-1.4.7/timers.c
+--- vdr-1.4.7~/timers.c 2007-08-24 00:07:30.000000000 +0200
++++ vdr-1.4.7/timers.c 2007-08-24 00:09:09.000000000 +0200
+@@ -14,6 +14,7 @@
+ #include "i18n.h"
+ #include "libsi/si.h"
+ #include "remote.h"
++#include "childlock.h"
+
+ // IMPORTANT NOTE: in the 'sscanf()' calls there is a blank after the '%d'
+ // format characters in order to allow any number of blanks after a numeric
+@@ -23,6 +24,7 @@
+
+ cTimer::cTimer(bool Instant, bool Pause, cChannel *Channel)
+ {
++ aux = NULL;
+ startTime = stopTime = 0;
+ lastSetEvent = 0;
+ recording = pending = inVpsMargin = false;
+@@ -43,7 +45,6 @@
+ priority = Pause ? Setup.PausePriority : Setup.DefaultPriority;
+ lifetime = Pause ? Setup.PauseLifetime : Setup.DefaultLifetime;
+ *file = 0;
+- aux = NULL;
+ event = NULL;
+ if (Instant && channel)
+ snprintf(file, sizeof(file), "%s%s", Setup.MarkInstantRecord ? "@" : "", *Setup.NameInstantRecord ? Setup.NameInstantRecord : channel->Name());
+@@ -51,6 +52,7 @@
+
+ cTimer::cTimer(const cEvent *Event)
+ {
++ aux = NULL;
+ startTime = stopTime = 0;
+ lastSetEvent = 0;
+ recording = pending = inVpsMargin = false;
+@@ -79,8 +81,8 @@
+ const char *Title = Event->Title();
+ if (!isempty(Title))
+ strn0cpy(file, Event->Title(), sizeof(file));
+- aux = NULL;
+ event = NULL; // let SetEvent() be called to get a log message
++ PinPatch::ChildLock::NotifyTimerCreation(this, Event);
+ }
+
+ cTimer::cTimer(const cTimer &Timer)
+@@ -246,6 +248,8 @@
+ return ""; // not NULL, so the caller can always use the result
+ }
+
++#define AUX_STR_PROTECTED "<pin-plugin><protected>yes</protected></pin-plugin>"
++
+ bool cTimer::Parse(const char *s)
+ {
+ char *channelbuffer = NULL;
+@@ -288,6 +292,8 @@
+ result = false;
+ }
+ }
++ if (aux && strstr(aux, AUX_STR_PROTECTED))
++ SetFlags(tfProtected);
+ free(channelbuffer);
+ free(daybuffer);
+ free(filebuffer);
+@@ -557,6 +563,26 @@
+ void cTimer::SetFlags(uint Flags)
+ {
+ flags |= Flags;
++
++ char* tmp = NULL;
++ char* position;
++
++ if (HasFlags(tfProtected)) {
++ if (!aux || !strstr(aux, AUX_STR_PROTECTED)) {
++ if (aux) {
++ tmp = strdup(aux);
++ free(aux);
++ }
++ asprintf(&aux,"%s%s", tmp ? tmp : "", AUX_STR_PROTECTED);
++ }
++ }
++ else if (aux && (position = strstr(aux, AUX_STR_PROTECTED))) {
++ asprintf(&tmp, "%.*s%s", position-aux, aux, position+strlen(AUX_STR_PROTECTED));
++ free(aux);
++ aux = strdup(tmp);
++ }
++
++ free(tmp);
+ }
+
+ void cTimer::ClrFlags(uint Flags)
+diff -urNad vdr-1.4.7~/timers.h vdr-1.4.7/timers.h
+--- vdr-1.4.7~/timers.h 2007-08-24 00:07:30.000000000 +0200
++++ vdr-1.4.7/timers.h 2007-08-24 00:09:09.000000000 +0200
+@@ -20,6 +20,7 @@
+ tfInstant = 0x0002,
+ tfVps = 0x0004,
+ tfRecording = 0x0008,
++ tfProtected = 0x8000,
+ tfAll = 0xFFFF,
+ };
+ enum eTimerMatch { tmNone, tmPartial, tmFull };
+diff -urNad vdr-1.4.7~/vdr.c vdr-1.4.7/vdr.c
+--- vdr-1.4.7~/vdr.c 2007-08-24 00:09:08.000000000 +0200
++++ vdr-1.4.7/vdr.c 2007-08-24 00:09:09.000000000 +0200
+@@ -62,6 +62,7 @@
+ #include "tools.h"
+ #include "transfer.h"
+ #include "videodir.h"
++#include "childlock.h"
+
+ #define MINCHANNELWAIT 10 // seconds to wait between failed channel switchings
+ #define ACTIVITYTIMEOUT 60 // seconds before starting housekeeping
+@@ -882,6 +883,7 @@
+ cOsdObject *Interact = Menu ? Menu : cControl::Control();
+ eKeys key = Interface->GetKey((!Interact || !Interact->NeedsFastResponse()) && time(NULL) - LastCamMenu > LASTCAMMENUTIMEOUT);
+ if (NORMALKEY(key) != kNone) {
++ PinPatch::ChildLock::NotifyUserAction(key, Interact);
+ EITScanner.Activity();
+ LastActivity = time(NULL);
+ }
+@@ -947,10 +949,12 @@
+ cControl::Control()->Hide();
+ cPlugin *plugin = cPluginManager::GetPlugin(PluginName);
+ if (plugin) {
++ if (!PinPatch::ChildLock::IsPluginProtected(plugin)) {
+ Menu = plugin->MainMenuAction();
+ if (Menu)
+ Menu->Show();
+ }
++ }
+ else
+ esyslog("ERROR: unknown plugin '%s'", PluginName);
+ }
+@@ -1154,9 +1158,11 @@
+ // Instant resume of the last viewed recording:
+ case kPlay:
+ if (cReplayControl::LastReplayed()) {
++ if (PinPatch::ChildLock::IsRecordingProtected(0, cReplayControl::LastReplayed(), 0, false) == false) {
+ cControl::Shutdown();
+ cControl::Launch(new cReplayControl);
+ }
++ }
+ break;
+ default: break;
+ }
Propchange: vdr/vdr/trunk/debian/patches/opt-48_pin.dpatch
('svn:executable' removed)
Added: vdr/vdr/trunk/debian/patches/opt-50_graphtft-0.1.dpatch
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/opt-50_graphtft-0.1.dpatch?rev=5638&op=file
==============================================================================
--- vdr/vdr/trunk/debian/patches/opt-50_graphtft-0.1.dpatch (added)
+++ vdr/vdr/trunk/debian/patches/opt-50_graphtft-0.1.dpatch Mon Oct 29 19:27:05 2007
@@ -1,0 +1,313 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## opt-50_graphtft.dpatch by Jörg Wendel (Horchi)
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Patch from teh Graphtft plugin version 0.0.15
+## DP: http://www.jwendel.de/vdr/
+
+ at DPATCH@
+diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
+--- vdr-1.4.7~/menu.c 2007-08-22 21:25:48.000000000 +0200
++++ vdr-1.4.7/menu.c 2007-08-22 21:25:48.000000000 +0200
+@@ -228,6 +228,9 @@
+ public:
+ cMenuEditChannel(cChannel *Channel, bool New = false);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuEditChannel"; }
++//#endif /* GRAPHTFT */
+ };
+
+ cMenuEditChannel::cMenuEditChannel(cChannel *Channel, bool New)
+@@ -453,6 +456,9 @@
+ cMenuChannels(void);
+ ~cMenuChannels();
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuChannels"; }
++//#endif /* GRAPHTFT */
+ };
+
+ cMenuChannels::cMenuChannels(void)
+@@ -945,6 +951,9 @@
+ virtual ~cMenuTimers();
+ virtual void Display(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuTimers"; }
++//#endif /* GRAPHTFT */
+ };
+
+ cMenuTimers::cMenuTimers(void)
+@@ -1309,6 +1318,9 @@
+ static void SetCurrentChannel(int ChannelNr) { currentChannel = ChannelNr; }
+ static const cEvent *ScheduleEvent(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return now ? "MenuWhatsOnNow" : "MenuWhatsOnNext"; }
++//#endif /* GRAPHTFT */
+ };
+
+ int cMenuWhatsOn::currentChannel = 0;
+@@ -1475,6 +1487,9 @@
+ cMenuSchedule(void);
+ virtual ~cMenuSchedule();
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuSchedule"; }
++//#endif /* GRAPHTFT */
+ };
+
+ cMenuSchedule::cMenuSchedule(void)
+@@ -1982,6 +1997,9 @@
+ cMenuRecording(const cRecording *Recording, bool WithButtons = false);
+ virtual void Display(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuRecording"; }
++//#endif /* GRAPHTFT */
+ };
+
+ cMenuRecording::cMenuRecording(const cRecording *Recording, bool WithButtons)
+@@ -2542,6 +2560,9 @@
+ cMenuSetupOSD(void);
+ virtual ~cMenuSetupOSD();
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuSetupOsd"; }
++//#endif
+ };
+
+ cMenuSetupOSD::cMenuSetupOSD(void)
+@@ -2645,6 +2666,9 @@
+ public:
+ cMenuSetupEPG(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuSetupEpg"; }
++//#endif
+ };
+
+ cMenuSetupEPG::cMenuSetupEPG(void)
+@@ -2741,6 +2765,9 @@
+ public:
+ cMenuSetupDVB(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuSetupDvb"; }
++//#endif
+ };
+
+ cMenuSetupDVB::cMenuSetupDVB(void)
+@@ -2834,6 +2861,9 @@
+ public:
+ cMenuSetupLNB(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuSetupLnb"; }
++//#endif
+ };
+
+ cMenuSetupLNB::cMenuSetupLNB(void)
+@@ -2898,6 +2928,9 @@
+ public:
+ cMenuSetupCICAM(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuSetupCiCam"; }
++//#endif
+ };
+
+ cMenuSetupCICAM::cMenuSetupCICAM(void)
+@@ -3060,6 +3093,9 @@
+ public:
+ cMenuSetupPlugins(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuSetupPlugins"; }
++//#endif /* GRAPHTFT */
+ };
+
+ cMenuSetupPlugins::cMenuSetupPlugins(void)
+@@ -3113,6 +3149,9 @@
+ public:
+ cMenuSetup(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuSetup"; }
++//#endif /* GRAPHTFT */
+ };
+
+ cMenuSetup::cMenuSetup(void)
+diff -urNad vdr-1.4.7~/menu.h vdr-1.4.7/menu.h
+--- vdr-1.4.7~/menu.h 2007-08-22 21:25:48.000000000 +0200
++++ vdr-1.4.7/menu.h 2007-08-22 21:25:48.000000000 +0200
+@@ -29,6 +29,9 @@
+ void SetText(const char *Text);
+ virtual void Display(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuText"; }
++//#endif /* GRAPHTFT */
+ };
+
+ class cMenuEditTimer : public cOsdMenu {
+@@ -45,6 +48,9 @@
+ cMenuEditTimer(cTimer *Timer, bool New = false);
+ virtual ~cMenuEditTimer();
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuTimerEdit"; }
++//#endif /* GRAPHTFT */
+ };
+
+ class cMenuEvent : public cOsdMenu {
+@@ -54,6 +60,9 @@
+ cMenuEvent(const cEvent *Event, bool CanSwitch = false, bool Buttons = false);
+ virtual void Display(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuEvent"; }
++//#endif /* GRAPHTFT */
+ };
+
+ class cMenuMain : public cOsdMenu {
+@@ -72,6 +81,9 @@
+ cMenuMain(eOSState State = osUnknown);
+ virtual eOSState ProcessKey(eKeys Key);
+ static cOsdObject *PluginOsdObject(void);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuMain"; }
++//#endif /* GRAPHTFT */
+ };
+
+ class cDisplayChannel : public cOsdObject {
+@@ -141,6 +153,9 @@
+ cMenuCam(cCiMenu *CiMenu);
+ virtual ~cMenuCam();
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuCam"; }
++//#endif /* GRAPHTFT */
+ };
+
+ class cMenuCamEnquiry : public cOsdMenu {
+@@ -153,6 +168,9 @@
+ cMenuCamEnquiry(cCiEnquiry *CiEnquiry);
+ virtual ~cMenuCamEnquiry();
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuCamEnquiry"; }
++//#endif /* GRAPHTFT */
+ };
+
+ cOsdObject *CamControl(void);
+@@ -180,6 +198,9 @@
+ cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false);
+ ~cMenuRecordings();
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuRecordings"; }
++//#endif /* GRAPHTFT */
+ };
+
+ class cRecordControl {
+diff -urNad vdr-1.4.7~/menuitems.h vdr-1.4.7/menuitems.h
+--- vdr-1.4.7~/menuitems.h 2007-08-22 21:25:48.000000000 +0200
++++ vdr-1.4.7/menuitems.h 2007-08-22 21:25:48.000000000 +0200
+@@ -179,6 +179,9 @@
+ cMenuSetupPage(void);
+ virtual eOSState ProcessKey(eKeys Key);
+ void SetPlugin(cPlugin *Plugin);
++//#ifdef USE_GRAPHTFT
++ const char* MenuKind() { return "MenuSetupPage"; }
++//#endif /* GRAPHTFT */
+ };
+
+ #endif //__MENUITEMS_H
+diff -urNad vdr-1.4.7~/osdbase.c vdr-1.4.7/osdbase.c
+--- vdr-1.4.7~/osdbase.c 2007-08-22 21:25:48.000000000 +0200
++++ vdr-1.4.7/osdbase.c 2007-08-22 21:25:48.000000000 +0200
+@@ -100,6 +100,9 @@
+ free(status);
+ displayMenu->Clear();
+ cStatus::MsgOsdClear();
++//#ifdef USE_GRAPHTFT
++ cStatus::MsgOsdMenuDestroy();
++//#endif /* GRAPHTFT */
+ if (!--displayMenuCount)
+ DELETENULL(displayMenu);
+ }
+@@ -195,6 +198,9 @@
+ displayMenu->SetMessage(mtStatus, NULL);
+ displayMenu->Clear();
+ cStatus::MsgOsdClear();
++//#ifdef USE_GRAPHTFT
++ cStatus::MsgOsdMenuDisplay(MenuKind());
++//#endif /* GRAPHTFT */
+ displayMenu->SetTabs(cols[0], cols[1], cols[2], cols[3], cols[4]);//XXX
+ displayMenu->SetTitle(title);
+ cStatus::MsgOsdTitle(title);
+diff -urNad vdr-1.4.7~/osdbase.h vdr-1.4.7/osdbase.h
+--- vdr-1.4.7~/osdbase.h 2007-08-22 21:25:48.000000000 +0200
++++ vdr-1.4.7/osdbase.h 2007-08-22 21:25:48.000000000 +0200
+@@ -127,6 +127,9 @@
+ void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
+ virtual void Display(void);
+ virtual eOSState ProcessKey(eKeys Key);
++//#ifdef USE_GRAPHTFT
++ virtual const char* MenuKind() { return "MenuUnknown"; }
++//#endif /* GRAPHTFT */
+ };
+
+ #endif //__OSDBASE_H
+diff -urNad vdr-1.4.7~/status.c vdr-1.4.7/status.c
+--- vdr-1.4.7~/status.c 2007-08-22 21:25:42.000000000 +0200
++++ vdr-1.4.7/status.c 2007-08-22 21:25:48.000000000 +0200
+@@ -112,3 +112,19 @@
+ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
+ sm->OsdProgramme(PresentTime, PresentTitle, PresentSubtitle, FollowingTime, FollowingTitle, FollowingSubtitle);
+ }
++
++
++//#ifdef USE_GRAPHTFT
++void cStatus::MsgOsdMenuDisplay(const char* kind)
++{
++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
++ sm->OsdMenuDisplay(kind);
++}
++
++void cStatus::MsgOsdMenuDestroy()
++{
++ for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
++ sm->OsdMenuDestroy();
++}
++//#endif /* GRAPHTFT */
++
+diff -urNad vdr-1.4.7~/status.h vdr-1.4.7/status.h
+--- vdr-1.4.7~/status.h 2007-08-22 21:25:42.000000000 +0200
++++ vdr-1.4.7/status.h 2007-08-22 21:28:34.000000000 +0200
+@@ -67,6 +67,12 @@
+ // The OSD displays the single line Text with the current channel information.
+ virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle) {}
+ // The OSD displays the given programme information.
++//#ifdef USE_GRAPHTFT
++ virtual void OsdMenuDisplay(const char* kind) {}
++ // report menu creation
++ virtual void OsdMenuDestroy() {}
++ // report menu destruvtion
++//#endif /* GRAPHTFT */
+ public:
+ cStatus(void);
+ virtual ~cStatus();
+@@ -86,6 +92,10 @@
+ static void MsgOsdTextItem(const char *Text, bool Scroll = false);
+ static void MsgOsdChannel(const char *Text);
+ static void MsgOsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle);
++//#ifdef USE_GRAPHTFT
++ static void MsgOsdMenuDisplay(const char* kind);
++ static void MsgOsdMenuDestroy();
++//#endif /* GRAPHTFT */
+ };
+
+ #endif //__STATUS_H
Added: vdr/vdr/trunk/debian/patches/opt-51_cuttime.dpatch
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/opt-51_cuttime.dpatch?rev=5638&op=file
==============================================================================
--- vdr/vdr/trunk/debian/patches/opt-51_cuttime.dpatch (added)
+++ vdr/vdr/trunk/debian/patches/opt-51_cuttime.dpatch Mon Oct 29 19:27:05 2007
@@ -1,0 +1,139 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## opt-32_cuttime.dpatch by Udo Richter <udo_richter at gmx.de>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Modifies the start time of recordings to the first cutting mark..
+## DP:
+## DP: 2007-07-01 Tobias Grimm <tg at e-tobi.net>
+## DP: - Added setup option to enable/disable CutTime
+
+ at DPATCH@
+diff -urNad vdr-1.4.7~/config.c vdr-1.4.7/config.c
+--- vdr-1.4.7~/config.c 2007-08-05 10:28:22.000000000 +0200
++++ vdr-1.4.7/config.c 2007-08-05 10:31:33.000000000 +0200
+@@ -250,6 +250,7 @@
+
+ cSetup::cSetup(void)
+ {
++ CutTimePatchEnabled = 0;
+ OSDLanguage = 0;
+ strcpy(OSDSkin, "sttng");
+ strcpy(OSDTheme, "default");
+@@ -550,6 +551,7 @@
+ else if (!strcasecmp(Name, "ShowRecLength")) ShowRecLength = atoi(Value);
+ else if (!strcasecmp(Name, "ShowProgressBar")) ShowProgressBar = atoi(Value);
+ else if (!strcasecmp(Name, "MenuCmdPosition")) MenuCmdPosition = atoi(Value);
++ else if (!strcasecmp(Name, "CutTimePatchEnabled")) CutTimePatchEnabled= atoi(Value);
+ else
+ return false;
+ return true;
+@@ -635,6 +637,7 @@
+ Store("ShowRecLength", ShowRecLength);
+ Store("ShowProgressBar", ShowProgressBar);
+ Store("MenuCmdPosition", MenuCmdPosition);
++ Store("CutTimePatchEnabled",CutTimePatchEnabled);
+
+ Sort();
+
+diff -urNad vdr-1.4.7~/config.h vdr-1.4.7/config.h
+--- vdr-1.4.7~/config.h 2007-08-05 10:28:22.000000000 +0200
++++ vdr-1.4.7/config.h 2007-08-05 10:28:23.000000000 +0200
+@@ -293,6 +293,7 @@
+ int InitialChannel;
+ int InitialVolume;
+ int ShowRecDate, ShowRecTime, ShowRecLength, ShowProgressBar, MenuCmdPosition;
++ int CutTimePatchEnabled;
+ int __EndData__;
+ cSetup(void);
+ cSetup& operator= (const cSetup &s);
+diff -urNad vdr-1.4.7~/cutter.c vdr-1.4.7/cutter.c
+--- vdr-1.4.7~/cutter.c 2006-07-30 12:22:08.000000000 +0200
++++ vdr-1.4.7/cutter.c 2007-08-05 10:28:23.000000000 +0200
+@@ -190,6 +190,14 @@
+ error = false;
+ ended = false;
+ cRecording Recording(FileName);
++
++ if (Setup.CutTimePatchEnabled) {
++ cMarks FromMarks;
++ FromMarks.Load(FileName);
++ cMark *First=FromMarks.First();
++ if (First) Recording.SetStartTime(Recording.start+((First->position/FRAMESPERSEC+30)/60)*60);
++ }
++
+ const char *evn = Recording.PrefixFileName('%');
+ if (evn && RemoveVideoFile(evn) && MakeDirs(evn, true)) {
+ // XXX this can be removed once RenameVideoFile() follows symlinks (see videodir.c)
+diff -urNad vdr-1.4.7~/i18n.c vdr-1.4.7/i18n.c
+--- vdr-1.4.7~/i18n.c 2007-08-05 10:28:22.000000000 +0200
++++ vdr-1.4.7/i18n.c 2007-08-05 10:28:23.000000000 +0200
+@@ -4367,6 +4367,28 @@
+ "Opdel redigerede filer",
+ "Dìlit editované soubory",
+ },
++ { "Setup.CutTimePatch$Adapt start time to cutting marks",
++ "Startzeit an Schnittmarken anpassen",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ "",
++ },
+ { "Setup.Replay$Multi speed mode",
+ "Mehrstufiger Vor-/Rücklauf",
+ "Re¾im z veè hitrostmi",
+diff -urNad vdr-1.4.7~/menu.c vdr-1.4.7/menu.c
+--- vdr-1.4.7~/menu.c 2007-08-05 10:28:22.000000000 +0200
++++ vdr-1.4.7/menu.c 2007-08-05 10:28:23.000000000 +0200
+@@ -3028,6 +3028,7 @@
+ Add(new cMenuEditBoolItem(tr("Setup.Recording$Show date"), &data.ShowRecDate));
+ Add(new cMenuEditBoolItem(tr("Setup.Recording$Show time"), &data.ShowRecTime));
+ Add(new cMenuEditBoolItem(tr("Setup.Recording$Show length"), &data.ShowRecLength));
++ Add(new cMenuEditBoolItem(tr("Setup.CutTimePatch$Adapt start time to cutting marks"), &data.CutTimePatchEnabled));
+ }
+
+ // --- cMenuSetupReplay ------------------------------------------------------
+diff -urNad vdr-1.4.7~/recording.c vdr-1.4.7/recording.c
+--- vdr-1.4.7~/recording.c 2007-08-05 10:28:22.000000000 +0200
++++ vdr-1.4.7/recording.c 2007-08-05 10:28:23.000000000 +0200
+@@ -796,6 +796,15 @@
+ return titleBuffer;
+ }
+
++void cRecording::SetStartTime(time_t Start)
++{
++ start=Start;
++ if (fileName) {
++ free(fileName);
++ fileName = NULL;
++ }
++}
++
+ const char *cRecording::PrefixFileName(char Prefix)
+ {
+ cString p = PrefixVideoFileName(FileName(), Prefix);
+diff -urNad vdr-1.4.7~/recording.h vdr-1.4.7/recording.h
+--- vdr-1.4.7~/recording.h 2007-08-05 10:28:22.000000000 +0200
++++ vdr-1.4.7/recording.h 2007-08-05 10:28:23.000000000 +0200
+@@ -87,6 +87,7 @@
+ const char *FileName(void) const;
+ const char *Title(char Delimiter = ' ', bool NewIndicator = false, int Level = -1, bool Original = true) const;
+ const cRecordingInfo *Info(void) const { return info; }
++ void SetStartTime(time_t Start);
+ const char *PrefixFileName(char Prefix);
+ int HierarchyLevels(void) const;
+ void ResetResume(void) const;
Modified: vdr/vdr/trunk/debian/patches/patchtest
URL: http://svn.debian.org/wsvn/pkg-vdr-dvb/vdr/vdr/trunk/debian/patches/patchtest?rev=5638&op=diff
==============================================================================
--- vdr/vdr/trunk/debian/patches/patchtest (original)
+++ vdr/vdr/trunk/debian/patches/patchtest Mon Oct 29 19:27:05 2007
@@ -21,7 +21,9 @@
opt-27_subtitles-ttxtsubs \
opt-27-x_subtitles-ttxtsubs-volumebar-fix \
opt-30-x_analogtv \
- opt-37_submenu \
+ opt-31-x_reelchannelscan \
+ opt-32_iptv \
+ opt-37-x_menuorg \
opt-38_disableDoubleEpgEntrys \
opt-39_noepg \
opt-40_wareagle-icons \
@@ -29,20 +31,20 @@
opt-42-x_MainMenuHooks \
opt-44_rotor \
opt-45_yaepg \
- opt-46_dvdarchive \
- opt-46_dmh-dvd-archive \
- opt-46-x_dmh-dvd-archive-debian \
opt-47_sourcecaps \
- opt-48_pin \
- opt-50_graphtft"
+ opt-48-x_pin \
+ opt-50_graphtft-0.1 \
+ opt-51_cuttime"
testpatch="$standard \
opt-20_liemikuutio \
opt-24_jumpplay \
opt-27_subtitles-ttxtsubs \
opt-27-x_subtitles-ttxtsubs-volumebar-fix \
opt-30-x_analogtv \
+ opt-31-x_reelchannelscan \
+ opt-32_iptv \
opt-36_CutterQueue-AutoDelete \
- opt-37_submenu \
+ opt-37-x_menuorg \
opt-38_disableDoubleEpgEntrys \
opt-39_noepg \
opt-41-x_timer-info \
@@ -52,9 +54,9 @@
opt-46_dvdarchive \
opt-46_dmh-dvd-archive \
opt-46-x_dmh-dvd-archive-debian \
- opt-48_pin \
+ opt-48-x_pin \
opt-49_sharelnb \
- opt-50_graphtft"
+ opt-50_graphtft-0.1"
mustfail_patch="XX_patchtest-patch-error"
mustfail_compile="XX_patchtest-compile-error"
More information about the pkg-vdr-dvb-changes
mailing list