From 2307fc6682ed53c995b1c879c90bec4a7843c077 Mon Sep 17 00:00:00 2001 From: CvH Date: Fri, 2 Aug 2019 22:45:18 +0200 Subject: [PATCH] vdr: update to 2.4.1 --- packages/addons/addon-depends/vdr/package.mk | 6 +- ...0-upstream-fix-01-svdrp-modt-recflag.patch | 46 ---------- ...ream-fix-02-invalid-locking-sequence.patch | 48 ---------- ...tream-fix-03-locking-channel-display.patch | 89 ------------------- ...eam-fix-04-locking-channel-display-2.patch | 18 ---- .../vdr-10-upstream-fix-05-shutdown.patch | 33 ------- ...dr-10-upstream-fix-06-channel-switch.patch | 31 ------- ...vdr-10-upstream-fix-07-disabling-mtd.patch | 13 --- 8 files changed, 3 insertions(+), 281 deletions(-) delete mode 100644 packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-01-svdrp-modt-recflag.patch delete mode 100644 packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-02-invalid-locking-sequence.patch delete mode 100644 packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-03-locking-channel-display.patch delete mode 100644 packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-04-locking-channel-display-2.patch delete mode 100644 packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-05-shutdown.patch delete mode 100644 packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-06-channel-switch.patch delete mode 100644 packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-07-disabling-mtd.patch diff --git a/packages/addons/addon-depends/vdr/package.mk b/packages/addons/addon-depends/vdr/package.mk index 1d1029c8f2..ba1849775f 100644 --- a/packages/addons/addon-depends/vdr/package.mk +++ b/packages/addons/addon-depends/vdr/package.mk @@ -4,11 +4,11 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="vdr" -PKG_VERSION="2.4.0" -PKG_SHA256="93af49fe87048073dc38ef5e6c71e9704344d730f21c261afac69e3c937f8cce" +PKG_VERSION="2.4.1" +PKG_SHA256="25c3f835c4f3ff92cd2db10c004439ef22c2e895193c77fbe8cc7eac4858a1dc" PKG_LICENSE="GPL" PKG_SITE="http://www.tvdr.de" -PKG_URL="ftp://ftp.tvdr.de/vdr/vdr-$PKG_VERSION.tar.bz2" +PKG_URL="http://ftp.tvdr.de/vdr-$PKG_VERSION.tar.bz2" PKG_DEPENDS_TARGET="toolchain bzip2 fontconfig freetype libcap libiconv libjpeg-turbo" PKG_LONGDESC="A DVB TV server application." PKG_TOOLCHAIN="manual" diff --git a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-01-svdrp-modt-recflag.patch b/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-01-svdrp-modt-recflag.patch deleted file mode 100644 index 999fe2b264..0000000000 --- a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-01-svdrp-modt-recflag.patch +++ /dev/null @@ -1,46 +0,0 @@ -ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/ - -# This patch fixes a bug in handling the tfRecording flag in the SVDRP commands MODT -# and UPDT. The tfRecording flag must only be handled by the VDR that actually hosts -# and processes the timer. -# ---- a/svdrp.c 2018/03/19 12:16:33 5.0 -+++ b/svdrp.c 2018/04/19 09:45:08 -@@ -2036,6 +2036,7 @@ - LOCK_TIMERS_WRITE; - Timers->SetExplicitModify(); - if (cTimer *Timer = Timers->GetById(Id)) { -+ bool IsRecording = Timer->HasFlags(tfRecording); - cTimer t = *Timer; - if (strcasecmp(tail, "ON") == 0) - t.SetFlags(tfActive); -@@ -2046,6 +2047,10 @@ - return; - } - *Timer = t; -+ if (IsRecording) -+ Timer->SetFlags(tfRecording); -+ else -+ Timer->ClrFlags(tfRecording); - Timers->SetModified(); - isyslog("SVDRP %s < %s modified timer %s (%s)", Setup.SVDRPHostName, *clientName, *Timer->ToDescr(), Timer->HasFlags(tfActive) ? "active" : "inactive"); - Reply(250, "%d %s", Timer->Id(), *Timer->ToText(true)); -@@ -2478,12 +2483,18 @@ - if (Timer->Parse(Option)) { - LOCK_TIMERS_WRITE; - if (cTimer *t = Timers->GetTimer(Timer)) { -+ bool IsRecording = t->HasFlags(tfRecording); - t->Parse(Option); - delete Timer; - Timer = t; -+ if (IsRecording) -+ Timer->SetFlags(tfRecording); -+ else -+ Timer->ClrFlags(tfRecording); - isyslog("SVDRP %s < %s updated timer %s", Setup.SVDRPHostName, *clientName, *Timer->ToDescr()); - } - else { -+ Timer->ClrFlags(tfRecording); - Timers->Add(Timer); - isyslog("SVDRP %s < %s added timer %s", Setup.SVDRPHostName, *clientName, *Timer->ToDescr()); - } diff --git a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-02-invalid-locking-sequence.patch b/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-02-invalid-locking-sequence.patch deleted file mode 100644 index 00db568013..0000000000 --- a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-02-invalid-locking-sequence.patch +++ /dev/null @@ -1,48 +0,0 @@ -# This patch fixes a possible invalid locking sequence in case a remote timer handling error message -# is displayed on the OSD and the skin tries to lock the Recordings or DeletedRecordings -# list in its Flush() function (for instance by calling cVideoDiskUsage::HasChanged()). -# To do this, the call to Skins.Message() in menu.c's HandleRemoteModifications() has -# been changed to Skins.QueueMessage(), and cSkins::ProcessQueuedMessages() is now called -# unconditionally in the main loop, and checks whether the current cSkinDisplay object -# (if any) implements SetMessage(). -# ---- 1/menu.c 2018/04/14 10:24:41 5.0 -+++ 1/menu.c 2018/04/28 12:09:45 -@@ -1075,7 +1075,7 @@ - { - cString ErrorMessage; - if (!HandleRemoteTimerModifications(NewTimer, OldTimer, &ErrorMessage)) { -- Skins.Message(mtError, ErrorMessage); -+ Skins.QueueMessage(mtError, ErrorMessage); - return false; - } - return true; ---- 1/skins.c 2013/08/18 12:07:22 5.0 -+++ 1/skins.c 2018/04/28 12:13:01 -@@ -352,6 +352,14 @@ - dsyslog("cSkins::ProcessQueuedMessages() called from background thread - ignored!"); - return; - } -+ // Check whether there is a cSkinDisplay object (if any) that implements SetMessage(): -+ if (cSkinDisplay *sd = cSkinDisplay::Current()) { -+ if (!(dynamic_cast(sd) || -+ dynamic_cast(sd) || -+ dynamic_cast(sd) || -+ dynamic_cast(sd))) -+ return; -+ } - cSkinQueuedMessage *msg = NULL; - // Get the first waiting message: - queueMessageMutex.Lock(); ---- 1/vdr.c 2018/04/10 13:24:43 5.0 -+++ 1/vdr.c 2018/04/28 11:27:48 -@@ -1176,8 +1176,7 @@ - if (!Menu && !cOsd::IsOpen()) - Menu = CamControl(); - // Queued messages: -- if (!Skins.IsOpen()) -- Skins.ProcessQueuedMessages(); -+ Skins.ProcessQueuedMessages(); - // User Input: - cOsdObject *Interact = Menu ? Menu : cControl::Control(); - eKeys key = Interface->GetKey(!Interact || !Interact->NeedsFastResponse()); diff --git a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-03-locking-channel-display.patch b/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-03-locking-channel-display.patch deleted file mode 100644 index b2c1c710bf..0000000000 --- a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-03-locking-channel-display.patch +++ /dev/null @@ -1,89 +0,0 @@ -# Fixed locking the Channels list in cDisplayChannel, where the lock was still held -# when Flush() was called. -# ---- 1/menu.c 2018/04/28 12:09:45 5.1 -+++ 1/menu.c 2018/05/06 09:30:11 -@@ -4626,14 +4626,17 @@ - cOsdProvider::OsdSizeChanged(osdState); // just to get the current state - positioner = NULL; - channel = NULL; -- LOCK_CHANNELS_READ; -- channel = Channels->GetByNumber(Number); -- lastPresent = lastFollowing = NULL; -- if (channel) { -- DisplayChannel(); -- DisplayInfo(); -+ { -+ LOCK_CHANNELS_READ; -+ channel = Channels->GetByNumber(Number); -+ lastPresent = lastFollowing = NULL; -+ if (channel) { -+ DisplayChannel(); -+ DisplayInfo(); -+ } -+ } -+ if (channel) - displayChannel->Flush(); -- } - lastTime.Set(); - } - -@@ -4868,31 +4871,33 @@ - } - }; - if (positioner || !timeout || lastTime.Elapsed() < (uint64_t)(Setup.ChannelInfoTime * 1000)) { -- LOCK_CHANNELS_READ; -- if (Key == kNone && !number && group < 0 && !NewChannel && channel && channel->Number() != cDevice::CurrentChannel()) { -- // makes sure a channel switch through the SVDRP CHAN command is displayed -- channel = Channels->GetByNumber(cDevice::CurrentChannel()); -- Refresh(); -- lastTime.Set(); -- } -- DisplayInfo(); -- if (NewChannel) { -- SetTrackDescriptions(NewChannel->Number()); // to make them immediately visible in the channel display -- Channels->SwitchTo(NewChannel->Number()); -- SetTrackDescriptions(NewChannel->Number()); // switching the channel has cleared them -- channel = NewChannel; -- } -- const cPositioner *Positioner = cDevice::ActualDevice()->Positioner(); -- bool PositionerMoving = Positioner && Positioner->IsMoving(); -- SetNeedsFastResponse(PositionerMoving); -- if (!PositionerMoving) { -- if (positioner) -- lastTime.Set(); // to keep the channel display up a few seconds after the target position has been reached -- Positioner = NULL; -- } -- if (Positioner || positioner) // making sure we call SetPositioner(NULL) if there is a switch from "with" to "without" positioner -- displayChannel->SetPositioner(Positioner); -- positioner = Positioner; -+ { -+ LOCK_CHANNELS_READ; -+ if (Key == kNone && !number && group < 0 && !NewChannel && channel && channel->Number() != cDevice::CurrentChannel()) { -+ // makes sure a channel switch through the SVDRP CHAN command is displayed -+ channel = Channels->GetByNumber(cDevice::CurrentChannel()); -+ Refresh(); -+ lastTime.Set(); -+ } -+ DisplayInfo(); -+ if (NewChannel) { -+ SetTrackDescriptions(NewChannel->Number()); // to make them immediately visible in the channel display -+ Channels->SwitchTo(NewChannel->Number()); -+ SetTrackDescriptions(NewChannel->Number()); // switching the channel has cleared them -+ channel = NewChannel; -+ } -+ const cPositioner *Positioner = cDevice::ActualDevice()->Positioner(); -+ bool PositionerMoving = Positioner && Positioner->IsMoving(); -+ SetNeedsFastResponse(PositionerMoving); -+ if (!PositionerMoving) { -+ if (positioner) -+ lastTime.Set(); // to keep the channel display up a few seconds after the target position has been reached -+ Positioner = NULL; -+ } -+ if (Positioner || positioner) // making sure we call SetPositioner(NULL) if there is a switch from "with" to "without" positioner -+ displayChannel->SetPositioner(Positioner); -+ positioner = Positioner; -+ } - displayChannel->Flush(); - return osContinue; - } diff --git a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-04-locking-channel-display-2.patch b/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-04-locking-channel-display-2.patch deleted file mode 100644 index 3311e664a3..0000000000 --- a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-04-locking-channel-display-2.patch +++ /dev/null @@ -1,18 +0,0 @@ -# Fixed locking the Channels list in cDisplayChannel, where the lock was still held -# when Flush() was called (cont'd). -# ---- 1/menu.c 2018/05/06 09:30:11 5.2 -+++ 1/menu.c 2018/05/27 09:51:56 5.3 -@@ -4654,8 +4654,10 @@ - displayChannel = Skins.Current()->DisplayChannel(withInfo); - positioner = NULL; - channel = NULL; -- LOCK_CHANNELS_READ; -- channel = Channels->GetByNumber(cDevice::CurrentChannel()); -+ { -+ LOCK_CHANNELS_READ; -+ channel = Channels->GetByNumber(cDevice::CurrentChannel()); -+ } - ProcessKey(FirstKey); - } - diff --git a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-05-shutdown.patch b/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-05-shutdown.patch deleted file mode 100644 index 746ec34fb2..0000000000 --- a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-05-shutdown.patch +++ /dev/null @@ -1,33 +0,0 @@ -# Fixed shutdown after user inactivity in case a plugin is keeping the OSD open. -# ---- a/vdr.c 2018/04/28 11:27:48 5.1 -+++ b/vdr.c 2018/07/16 08:52:40 5.2 -@@ -1514,9 +1514,7 @@ - ShutdownHandler.countdown.Cancel(); - } - -- if ((Now - LastInteract) > ACTIVITYTIMEOUT && !cRecordControls::Active() && !RecordingsHandler.Active() && (Now - cRemote::LastActivity()) > ACTIVITYTIMEOUT) { -- // Handle housekeeping tasks -- -+ if (!cRecordControls::Active() && !RecordingsHandler.Active() && (Now - cRemote::LastActivity()) > ACTIVITYTIMEOUT) { - // Shutdown: - // Check whether VDR will be ready for shutdown in SHUTDOWNWAIT seconds: - time_t Soon = Now + SHUTDOWNWAIT; -@@ -1535,7 +1533,8 @@ - // Do this again a bit later: - ShutdownHandler.SetRetry(SHUTDOWNRETRY); - } -- -+ // Handle housekeeping tasks -+ if ((Now - LastInteract) > ACTIVITYTIMEOUT) { - // Disk housekeeping: - RemoveDeletedRecordings(); - ListGarbageCollector.Purge(); -@@ -1543,6 +1542,7 @@ - // Plugins housekeeping: - PluginManager.Housekeeping(); - } -+ } - - ReportEpgBugFixStats(); - diff --git a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-06-channel-switch.patch b/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-06-channel-switch.patch deleted file mode 100644 index 9a8662b10c..0000000000 --- a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-06-channel-switch.patch +++ /dev/null @@ -1,31 +0,0 @@ -# Fixed switching through encrypted channels with the Up/Down keys -# ---- a/device.c 2018/03/24 09:49:14 5.0 -+++ b/device.c 2018/07/16 09:29:57 -@@ -787,6 +787,7 @@ - if (LiveView) { - isyslog("switching to channel %d %s (%s)", Channel->Number(), *Channel->GetChannelID().ToString(), Channel->Name()); - cControl::Shutdown(); // prevents old channel from being shown too long if GetDevice() takes longer -+ // and, if decrypted, this removes the now superflous PIDs from the CAM, too - } - for (int i = 3; i--;) { - switch (SetChannel(Channel, LiveView)) { -@@ -809,6 +810,7 @@ - Direction = sgn(Direction); - if (Direction) { - cControl::Shutdown(); // prevents old channel from being shown too long if GetDevice() takes longer -+ // and, if decrypted, this removes the now superflous PIDs from the CAM, too - int n = CurrentChannel() + Direction; - int first = n; - LOCK_CHANNELS_READ; ---- a/menu.c 2018/05/27 09:51:56 5.3 -+++ b/menu.c 2018/07/16 09:29:57 -@@ -4704,6 +4704,8 @@ - const cChannel *cDisplayChannel::NextAvailableChannel(const cChannel *Channel, int Direction) - { - if (Direction) { -+ cControl::Shutdown(); // prevents old channel from being shown too long if GetDevice() takes longer -+ // and, if decrypted, this removes the now superflous PIDs from the CAM, too - LOCK_CHANNELS_READ; - while (Channel) { - Channel = Direction > 0 ? Channels->Next(Channel) : Channels->Prev(Channel); diff --git a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-07-disabling-mtd.patch b/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-07-disabling-mtd.patch deleted file mode 100644 index 4e97a6c598..0000000000 --- a/packages/addons/addon-depends/vdr/patches/vdr-10-upstream-fix-07-disabling-mtd.patch +++ /dev/null @@ -1,13 +0,0 @@ -# Now deactivating MTD support if a non MCD capable CAM is inserted after removing -# a previously used CAM that is MCD capable. -# ---- a/ci.c 2018/03/19 16:37:03 5.0 -+++ b/ci.c 2018/09/23 10:17:20 -@@ -1213,6 +1213,7 @@ - } - else { - dsyslog("CAM %d: doesn't reply to QUERY - only a single channel can be decrypted", CamSlot()->SlotNumber()); -+ CamSlot()->MtdActivate(false); - state = 4; // normal operation - } - }