[vdr] Update to 1.7.28.
Ville Skyttä
scop at fedoraproject.org
Wed Jun 27 20:47:02 UTC 2012
commit f1dcdafa0203b07c0abfdfd8c7b7e5672a322f26
Author: Ville Skyttä <ville.skytta at iki.fi>
Date: Wed Jun 27 22:00:22 2012 +0300
Update to 1.7.28.
- Add softhdddevice to sysconfig's VDR_PLUGIN_ORDER.
sources | 5 +-
vdr-1.7.27-legacy-receiver.patch | 12 --
vdr-1.7.28-epghandledexternally.diff | 118 ++++++++++++++++++++
...ch => vdr-1.7.28-vasarajanauloja-jumpplay.patch | 66 ++++++-----
vdr-timer-info-1.7.28.patch | 12 ++
vdr.spec | 21 +++-
vdr.sysconfig | 1 +
7 files changed, 184 insertions(+), 51 deletions(-)
---
diff --git a/sources b/sources
index be48417..09daafe 100644
--- a/sources
+++ b/sources
@@ -4,6 +4,7 @@ fae3698214bd45de1f675c2b037d5f3b vdr-1.7.21-ttxtsubs.patch
04511ae02243eb1bab94f3f45b59e574 vdr-timer-info-0.5-1.7.13.diff
71f7281d55eba1957f4267f596b11e29 vdr.epgsearch-exttimeredit-0.0.2.diff
d40db7bea1b9af94d7625e611ef3dae2 vdr_1.7.23-1.debian.tar.bz2
-bfeaa79a9e55144bca2b69139c45f1bb vdr-1.7.27.tar.bz2
-b2fac5d9ee86abb8abf294839bdf2fbf vdr-1.7.27-liemikuutio-1.34.patch.gz
ef7a35dc23c5ed700e1ce873274f7793 vdr-1.7.27-hlcutter-0.2.3.diff
+bed5d492fa7faf2065f6b2cc44e841a3 vdr-1.7.28-vasarajanauloja.patch.gz
+a086781712c57ab6c255035201fb508b vdr-1.7.28-finnish.patch.gz
+3ccff2dcc42d112e23dd64f2c39f02f1 vdr-1.7.28.tar.bz2
diff --git a/vdr-1.7.28-epghandledexternally.diff b/vdr-1.7.28-epghandledexternally.diff
new file mode 100644
index 0000000..52dfab6
--- /dev/null
+++ b/vdr-1.7.28-epghandledexternally.diff
@@ -0,0 +1,118 @@
+--- ./eit.c 2012/06/02 14:05:22 2.17
++++ ./eit.c 2012/06/04 10:10:11
+@@ -45,6 +45,7 @@
+ return;
+ }
+
++ bool handledExternally = EpgHandlers.HandledExternally(channel);
+ cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(channel, true);
+
+ bool Empty = true;
+@@ -70,7 +71,7 @@
+ cEvent *newEvent = NULL;
+ cEvent *rEvent = NULL;
+ cEvent *pEvent = (cEvent *)pSchedule->GetEvent(SiEitEvent.getEventId(), StartTime);
+- if (!pEvent) {
++ if (!pEvent || handledExternally) {
+ if (OnlyRunningStatus)
+ continue;
+ // If we don't have that event yet, we create a new one.
+@@ -78,7 +79,8 @@
+ pEvent = newEvent = new cEvent(SiEitEvent.getEventId());
+ newEvent->SetStartTime(StartTime);
+ newEvent->SetDuration(Duration);
+- pSchedule->AddEvent(newEvent);
++ if (!handledExternally)
++ pSchedule->AddEvent(newEvent);
+ }
+ else {
+ // We have found an existing event, either through its event ID or its start time.
+@@ -290,11 +292,8 @@
+ channel->SetLinkChannels(LinkChannels);
+ Modified = true;
+ EpgHandlers.HandleEvent(pEvent);
+-
+- if (EpgHandlers.DeleteEvent(pEvent)) {
+- pSchedule->DelEvent(pEvent);
+- pEvent = NULL;
+- }
++ if (handledExternally)
++ delete pEvent;
+ }
+ if (Tid == 0x4E) {
+ if (Empty && getSectionNumber() == 0)
+--- ./epg.c 2012/06/02 14:08:12 2.14
++++ ./epg.c 2012/06/04 10:06:22
+@@ -1331,6 +1331,15 @@
+ return false;
+ }
+
++bool cEpgHandlers::HandledExternally(const cChannel *Channel)
++{
++ for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
++ if (eh->HandledExternally(Channel))
++ return true;
++ }
++ return false;
++}
++
+ void cEpgHandlers::SetEventID(cEvent *Event, tEventID EventID)
+ {
+ for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
+@@ -1429,15 +1438,6 @@
+ }
+ }
+
+-bool cEpgHandlers::DeleteEvent(const cEvent *Event)
+-{
+- for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
+- if (eh->DeleteEvent(Event))
+- return true;
+- }
+- return false;
+-}
+-
+ void cEpgHandlers::SortSchedule(cSchedule *Schedule)
+ {
+ for (cEpgHandler *eh = First(); eh; eh = Next(eh)) {
+--- ./epg.h 2012/06/02 14:07:51 2.10
++++ ./epg.h 2012/06/04 10:05:21
+@@ -244,6 +244,12 @@
+ ///< EPG handlers are queried to see if any of them would like to do the
+ ///< complete processing by itself. TableID and Version are from the
+ ///< incoming section data.
++ virtual bool HandledExternally(const cChannel *Channel) { return false; }
++ ///< If any EPG handler returns true in this function, it is assumed that
++ ///< the EPG for the given Channel is handled completely from some external
++ ///< source. Incoming EIT data is processed as usual, but any new EPG event
++ ///< will not be added to the respective schedule. It's up to the EPG
++ ///< handler to take care of this.
+ virtual bool SetEventID(cEvent *Event, tEventID EventID) { return false; }
+ virtual bool SetTitle(cEvent *Event, const char *Title) { return false; }
+ virtual bool SetShortText(cEvent *Event, const char *ShortText) { return false; }
+@@ -258,9 +264,6 @@
+ virtual bool HandleEvent(cEvent *Event) { return false; }
+ ///< After all modifications of the Event have been done, the EPG handler
+ ///< can take a final look at it.
+- virtual bool DeleteEvent(const cEvent *Event) { return false; }
+- ///< After the complete processing of the Event is finished, an EPG handler
+- ///< can decide that this Event shall be deleted from its schedule.
+ virtual bool SortSchedule(cSchedule *Schedule) { return false; }
+ ///< Sorts the Schedule after the complete table has been processed.
+ virtual bool DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version) { return false; }
+@@ -272,6 +275,7 @@
+ public:
+ bool IgnoreChannel(const cChannel *Channel);
+ bool HandleEitEvent(cSchedule *Schedule, const SI::EIT::Event *EitEvent, uchar TableID, uchar Version);
++ bool HandledExternally(const cChannel *Channel);
+ void SetEventID(cEvent *Event, tEventID EventID);
+ void SetTitle(cEvent *Event, const char *Title);
+ void SetShortText(cEvent *Event, const char *ShortText);
+@@ -283,7 +287,6 @@
+ void SetVps(cEvent *Event, time_t Vps);
+ void FixEpgBugs(cEvent *Event);
+ void HandleEvent(cEvent *Event);
+- bool DeleteEvent(const cEvent *Event);
+ void SortSchedule(cSchedule *Schedule);
+ void DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version);
+ };
diff --git a/vdr-1.7.27-jumpplay.patch b/vdr-1.7.28-vasarajanauloja-jumpplay.patch
similarity index 82%
rename from vdr-1.7.27-jumpplay.patch
rename to vdr-1.7.28-vasarajanauloja-jumpplay.patch
index 564ca36..717d263 100644
--- a/vdr-1.7.27-jumpplay.patch
+++ b/vdr-1.7.28-vasarajanauloja-jumpplay.patch
@@ -1,7 +1,7 @@
-diff -up vdr-1.7.25/config.c~ vdr-1.7.25/config.c
---- vdr-1.7.25/config.c~ 2012-02-29 12:15:54.000000000 +0200
-+++ vdr-1.7.25/config.c 2012-03-04 19:47:50.695755608 +0200
-@@ -454,6 +454,9 @@ cSetup::cSetup(void)
+diff -up vdr-1.7.28/config.c~ vdr-1.7.28/config.c
+--- vdr-1.7.28/config.c~ 2012-05-11 14:06:57.000000000 +0300
++++ vdr-1.7.28/config.c 2012-06-03 21:38:49.494966365 +0300
+@@ -455,6 +455,9 @@ cSetup::cSetup(void)
ShowReplayMode = 0;
ShowRemainingTime = 0;
ResumeID = 0;
@@ -11,7 +11,7 @@ diff -up vdr-1.7.25/config.c~ vdr-1.7.25/config.c
CurrentChannel = -1;
CurrentVolume = MAXVOLUME;
CurrentDolby = 0;
-@@ -648,6 +651,9 @@ bool cSetup::Parse(const char *Name, con
+@@ -650,6 +653,9 @@ bool cSetup::Parse(const char *Name, con
else if (!strcasecmp(Name, "ShowReplayMode")) ShowReplayMode = atoi(Value);
else if (!strcasecmp(Name, "ShowRemainingTime")) ShowRemainingTime = atoi(Value);
else if (!strcasecmp(Name, "ResumeID")) ResumeID = atoi(Value);
@@ -21,7 +21,7 @@ diff -up vdr-1.7.25/config.c~ vdr-1.7.25/config.c
else if (!strcasecmp(Name, "CurrentChannel")) CurrentChannel = atoi(Value);
else if (!strcasecmp(Name, "CurrentVolume")) CurrentVolume = atoi(Value);
else if (!strcasecmp(Name, "CurrentDolby")) CurrentDolby = atoi(Value);
-@@ -745,6 +751,9 @@ bool cSetup::Save(void)
+@@ -748,6 +754,9 @@ bool cSetup::Save(void)
Store("ShowReplayMode", ShowReplayMode);
Store("ShowRemainingTime", ShowRemainingTime);
Store("ResumeID", ResumeID);
@@ -31,15 +31,19 @@ diff -up vdr-1.7.25/config.c~ vdr-1.7.25/config.c
Store("CurrentChannel", CurrentChannel);
Store("CurrentVolume", CurrentVolume);
Store("CurrentDolby", CurrentDolby);
-diff -up vdr-1.7.25/config.h~ vdr-1.7.25/config.h
---- vdr-1.7.25/config.h~ 2012-02-29 14:28:01.000000000 +0200
-+++ vdr-1.7.25/config.h 2012-03-04 19:47:50.264715834 +0200
-@@ -32,2 +32,4 @@
+diff -up vdr-1.7.28/config.h~ vdr-1.7.28/config.h
+--- vdr-1.7.28/config.h~ 2012-04-15 13:45:32.000000000 +0300
++++ vdr-1.7.28/config.h 2012-06-03 21:38:48.350980409 +0300
+@@ -30,6 +30,8 @@
+ #define APIVERSION "1.7.28"
+ #define APIVERSNUM 10728 // Version * 10000 + Major * 100 + Minor
+#define JUMPPLAYVERSNUM 100
+
// When loading plugins, VDR searches them by their APIVERSION, which
-@@ -307,6 +309,9 @@ public:
+ // may be smaller than VDRVERSION in case there have been no changes to
+ // VDR header files since the last APIVERSION. This allows compiled
+@@ -318,6 +320,9 @@ public:
int ShowReplayMode;
int ShowRemainingTime;
int ResumeID;
@@ -49,9 +53,9 @@ diff -up vdr-1.7.25/config.h~ vdr-1.7.25/config.h
int CurrentChannel;
int CurrentVolume;
int CurrentDolby;
-diff -up vdr-1.7.25/dvbplayer.c~ vdr-1.7.25/dvbplayer.c
---- vdr-1.7.25/dvbplayer.c~ 2012-02-21 13:34:04.000000000 +0200
-+++ vdr-1.7.25/dvbplayer.c 2012-03-04 19:47:49.845677163 +0200
+diff -up vdr-1.7.28/dvbplayer.c~ vdr-1.7.28/dvbplayer.c
+--- vdr-1.7.28/dvbplayer.c~ 2012-06-03 21:34:11.678840928 +0300
++++ vdr-1.7.28/dvbplayer.c 2012-06-03 21:38:47.111995584 +0300
@@ -204,6 +204,7 @@ private:
cNonBlockingFileReader *nonBlockingFileReader;
cRingBufferFrame *ringBuffer;
@@ -68,18 +72,18 @@ diff -up vdr-1.7.25/dvbplayer.c~ vdr-1.7.25/dvbplayer.c
}
cDvbPlayer::~cDvbPlayer()
-@@ -364,6 +366,10 @@ bool cDvbPlayer::Save(void)
- if (index) {
+@@ -365,6 +367,10 @@ bool cDvbPlayer::Save(void)
int Index = ptsIndex.FindIndex(DeviceGetSTC());
if (Index >= 0) {
+ int backup = int(round(RESUMEBACKUP * framesPerSecond));
+ // set resume position to 0 if replay stops at the first mark
+ if (Setup.PlayJump && marks.First() &&
-+ abs(Index - marks.First()->Position()) <= int(round(RESUMEBACKUP * framesPerSecond)))
++ abs(Index - marks.First()->Position()) <= backup)
+ Index = 0;
- Index -= int(round(RESUMEBACKUP * framesPerSecond));
- if (Index > 0)
- Index = index->GetNextIFrame(Index, false);
-@@ -390,11 +396,26 @@ void cDvbPlayer::Action(void)
+ if (Index >= index->Last() - backup)
+ Index = 0;
+ else {
+@@ -395,11 +401,26 @@ void cDvbPlayer::Action(void)
{
uchar *p = NULL;
int pc = 0;
@@ -106,7 +110,7 @@ diff -up vdr-1.7.25/dvbplayer.c~ vdr-1.7.25/dvbplayer.c
nonBlockingFileReader = new cNonBlockingFileReader;
int Length = 0;
bool Sleep = false;
-@@ -421,7 +442,7 @@ void cDvbPlayer::Action(void)
+@@ -426,7 +447,7 @@ void cDvbPlayer::Action(void)
// Read the next frame from the file:
@@ -115,7 +119,7 @@ diff -up vdr-1.7.25/dvbplayer.c~ vdr-1.7.25/dvbplayer.c
if (!readFrame && (replayFile || readIndex >= 0)) {
if (!nonBlockingFileReader->Reading()) {
if (!SwitchToPlayFrame && (playMode == pmFast || (playMode == pmSlow && playDir == pdBackward))) {
-@@ -458,6 +479,44 @@ void cDvbPlayer::Action(void)
+@@ -463,6 +484,44 @@ void cDvbPlayer::Action(void)
else if (index) {
uint16_t FileNumber;
off_t FileOffset;
@@ -160,7 +164,7 @@ diff -up vdr-1.7.25/dvbplayer.c~ vdr-1.7.25/dvbplayer.c
if (index->Get(readIndex + 1, &FileNumber, &FileOffset, &readIndependent, &Length) && NextFile(FileNumber, FileOffset))
readIndex++;
else
-@@ -502,6 +561,13 @@ void cDvbPlayer::Action(void)
+@@ -507,6 +566,13 @@ void cDvbPlayer::Action(void)
// Store the frame in the buffer:
if (readFrame) {
@@ -174,7 +178,7 @@ diff -up vdr-1.7.25/dvbplayer.c~ vdr-1.7.25/dvbplayer.c
if (ringBuffer->Put(readFrame))
readFrame = NULL;
else
-@@ -567,8 +633,13 @@ void cDvbPlayer::Action(void)
+@@ -572,8 +638,13 @@ void cDvbPlayer::Action(void)
p = NULL;
}
}
@@ -189,10 +193,10 @@ diff -up vdr-1.7.25/dvbplayer.c~ vdr-1.7.25/dvbplayer.c
// Handle hitting begin/end of recording:
-diff -up vdr-1.7.25/menu.c~ vdr-1.7.25/menu.c
---- vdr-1.7.25/menu.c~ 2012-03-02 12:33:17.000000000 +0200
-+++ vdr-1.7.25/menu.c 2012-03-04 19:47:49.414637381 +0200
-@@ -3125,6 +3125,9 @@ cMenuSetupReplay::cMenuSetupReplay(void)
+diff -up vdr-1.7.28/menu.c~ vdr-1.7.28/menu.c
+--- vdr-1.7.28/menu.c~ 2012-06-03 21:34:11.681840873 +0300
++++ vdr-1.7.28/menu.c 2012-06-03 21:38:47.814986979 +0300
+@@ -3285,6 +3285,9 @@ cMenuSetupReplay::cMenuSetupReplay(void)
Add(new cMenuEditBoolItem(tr("Setup.Replay$Show replay mode"), &data.ShowReplayMode));
Add(new cMenuEditBoolItem(tr("Setup.Replay$Show remaining time"), &data.ShowRemainingTime));
Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99));
@@ -202,7 +206,7 @@ diff -up vdr-1.7.25/menu.c~ vdr-1.7.25/menu.c
}
void cMenuSetupReplay::Store(void)
-@@ -4711,8 +4714,17 @@ void cReplayControl::MarkJump(bool Forwa
+@@ -4906,8 +4909,17 @@ void cReplayControl::MarkJump(bool Forwa
if (GetIndex(Current, Total)) {
cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current);
if (m) {
@@ -222,7 +226,7 @@ diff -up vdr-1.7.25/menu.c~ vdr-1.7.25/menu.c
}
}
}
-@@ -4768,7 +4780,7 @@ void cReplayControl::EditTest(void)
+@@ -4963,7 +4975,7 @@ void cReplayControl::EditTest(void)
if (!m)
m = marks.GetNext(Current);
if (m) {
diff --git a/vdr-timer-info-1.7.28.patch b/vdr-timer-info-1.7.28.patch
new file mode 100644
index 0000000..4c79ab8
--- /dev/null
+++ b/vdr-timer-info-1.7.28.patch
@@ -0,0 +1,12 @@
+diff -up vdr-1.7.28/menu.c~ vdr-1.7.28/menu.c
+--- vdr-1.7.28/menu.c~ 2012-06-03 21:50:53.576250772 +0300
++++ vdr-1.7.28/menu.c 2012-06-03 21:51:27.215801834 +0300
+@@ -1304,7 +1304,7 @@ void cMenuTimers::ActualiseDiskStatus(vo
+ // compute free disk space
+ int freeMB, freeMinutes, runshortMinutes;
+ VideoDiskSpace(&freeMB);
+- freeMinutes = int(double(freeMB) * 1.1 / MB_PER_MINUTE); // overestimate by 10 percent
++ freeMinutes = int(double(freeMB) * 1.1 / 25.75); // overestimate by 10 percent
+ runshortMinutes = freeMinutes / 5; // 20 Percent
+
+ // fill entries list
diff --git a/vdr.spec b/vdr.spec
index 7a89da5..3d6a262 100644
--- a/vdr.spec
+++ b/vdr.spec
@@ -25,8 +25,8 @@
%global migrfile %{_var}/run/systemd-migr_%{name}-%{version}-%{release}.%{_arch}
Name: vdr
-Version: 1.7.27
-Release: 2%{?dist}
+Version: 1.7.28
+Release: 1%{?dist}
Summary: Video Disk Recorder
License: GPLv2+
@@ -54,7 +54,7 @@ Source19: %{name}-check-setup.sh
Source20: %{name}-rcu.conf
Patch0: %{name}-channel+epg.patch
Patch1: http://zap.tartarus.org/~ds/debian/dists/stable/main/source/vdr_1.4.5-2.ds.diff.gz
-Patch2: http://www.saunalahti.fi/~rahrenbe/vdr/patches/vdr-1.7.27-liemikuutio-1.34.patch.gz
+Patch2: http://www.saunalahti.fi/~rahrenbe/vdr/patches/vdr-1.7.28-vasarajanauloja.patch.gz
# Extracted from http://copperhead.htpc-forum.de/downloads/extensionpatch/extpngvdr1.7.21v1.diff.gz
Patch3: %{name}-1.7.21-plugin-missing.patch
Patch4: %{name}-1.7.22-paths.patch
@@ -64,7 +64,7 @@ Patch6: %{name}-1.5.18-syncearly.patch
Patch7: http://projects.vdr-developer.org/projects/plg-ttxtsubs/repository/revisions/master/raw/patches/vdr-1.7.21-ttxtsubs.patch
# Extracted from http://copperhead.htpc-forum.de/downloads/extensionpatch/extpngvdr1.7.21v1.diff.gz
# Original at http://toms-cafe.de/vdr/download/vdr-jumpplay-1.0-1.7.6.diff
-Patch8: %{name}-1.7.27-jumpplay.patch
+Patch8: %{name}-1.7.28-vasarajanauloja-jumpplay.patch
# http://www.udo-richter.de/vdr/patches.en.html#hlcutter
Patch9: http://www.udo-richter.de/vdr/files/vdr-1.7.27-hlcutter-0.2.3.diff
Patch10: %{name}-1.7.27-libhdffcmd-cflags.patch
@@ -74,12 +74,15 @@ Patch11: %{name}-1.7.25-mainmenuhooks101.patch
# Modified so that it applies over the timer-info patch
Patch12: %{name}-1.7.21-timercmd.patch
Patch13: http://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/plain/patches/vdr-1.5.17-progressbar-support-0.0.1.diff
+Patch14: http://www.saunalahti.fi/~rahrenbe/vdr/patches/vdr-1.7.28-finnish.patch.gz
Patch15: %{name}-1.7.21-fedora-pkgconfig.patch
Patch16: %{name}-1.7.21-jumpplay-finnish.patch
Patch17: http://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/plain/patches/vdr.epgsearch-exttimeredit-0.0.2.diff
-Patch18: %{name}-1.7.27-legacy-receiver.patch
+Patch18: %{name}-timer-info-1.7.28.patch
# http://projects.vdr-developer.org/issues/819
Patch19: %{name}-1.7.22-ttxtsubs-on.patch
+# http://www.linuxtv.org/pipermail/vdr/2012-June/026400.html
+Patch20: %{name}-1.7.28-epghandledexternally.diff
BuildRequires: libjpeg-devel
BuildRequires: libcap-devel
@@ -194,7 +197,7 @@ sed \
-e 's|__VARDIR__|%{vardir}|' \
-e 's|__VIDEODIR__|%{videodir}|' \
%{PATCH4} | patch -F 0 -p1
-%patch5 -p1
+%patch5 -p1 -F 2
# TODO: does not apply
#patch6 -p0
%patch7 -p1 -F 2
@@ -205,12 +208,14 @@ sed \
%patch12 -p1
# TODO: does not apply
#patch13 -p1
+%patch14 -p1
%patch15 -p0
%patch16 -p1
# TODO: build failure
#patch17 -p0 -F 3
%patch18 -p1
%patch19 -p1
+%patch20 -p1
for f in CONTRIBUTORS HISTORY UPDATE-1.4.0 README.timer-info ; do
iconv -f iso-8859-1 -t utf-8 -o $f.utf8 $f && mv $f.utf8 $f
@@ -547,6 +552,10 @@ rm -f %{migrfile} &>/dev/null || :
%changelog
+* Wed Jun 27 2012 Ville Skyttä <ville.skytta at iki.fi> - 1.7.28-1
+- Update to 1.7.28.
+- Add softhdddevice to sysconfig's VDR_PLUGIN_ORDER.
+
* Mon Apr 23 2012 Ville Skyttä <ville.skytta at iki.fi> - 1.7.27-2
- Build with hardening flags on.
- Update hlcutter patch to 0.2.3.
diff --git a/vdr.sysconfig b/vdr.sysconfig
index 62da91b..b4b1573 100644
--- a/vdr.sysconfig
+++ b/vdr.sysconfig
@@ -20,6 +20,7 @@ VDR_OPTIONS=(--lirc --vfat --shutdown=vdr-shutdown.sh)
VDR_PLUGIN_ORDER="
dxr3
softdevice
+softhddevice
streamdev-client
xine
xineliboutput
More information about the scm-commits
mailing list