diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d62e3c47..f20563c0 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3566,6 +3566,7 @@ Onur Sent Helmut Binder for improving calculating signal strength and quality + for fixing switching through encrypted channels with the Up/Down keys Ulrich Eckhardt for reporting a problem with shutdown after user inactivity in case a plugin is diff --git a/HISTORY b/HISTORY index 2b3d2c20..0e2a07f9 100644 --- a/HISTORY +++ b/HISTORY @@ -9363,3 +9363,5 @@ Video Disk Recorder Revision History when Flush() was called (reported by Matthias Senzel and Uwe Scheffler). - Fixed shutdown after user inactivity in case a plugin is keeping the OSD open (reported by Ulrich Eckhardt). +- Fixed switching through encrypted channels with the Up/Down keys (thanks to Helmut + Binder). diff --git a/device.c b/device.c index 626495dc..b112ae04 100644 --- a/device.c +++ b/device.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.c 4.27 2018/03/24 09:49:14 kls Exp $ + * $Id: device.c 4.28 2018/07/16 09:29:57 kls Exp $ */ #include "device.h" @@ -787,6 +787,7 @@ bool cDevice::SwitchChannel(const cChannel *Channel, bool LiveView) 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 @@ bool cDevice::SwitchChannel(int Direction) 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; diff --git a/menu.c b/menu.c index b44f36cc..b9133456 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 4.77 2018/05/27 09:51:56 kls Exp $ + * $Id: menu.c 4.78 2018/07/16 09:29:57 kls Exp $ */ #include "menu.h" @@ -4704,6 +4704,8 @@ void cDisplayChannel::Refresh(void) 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);