summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2018-07-16 09:33:21 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2018-07-16 09:33:21 +0200
commit336822f6724dd3a2dbc4fbd5db357fc7b2a2ae39 (patch)
tree791e42102c2543010d05e870f5d9dd51a1cdfd7c
parent5543f130510fba24c369d04a515415024be331b9 (diff)
downloadvdr-336822f6724dd3a2dbc4fbd5db357fc7b2a2ae39.tar.gz
vdr-336822f6724dd3a2dbc4fbd5db357fc7b2a2ae39.tar.bz2
Fixed switching through encrypted channels with the Up/Down keys
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY2
-rw-r--r--device.c4
-rw-r--r--menu.c4
4 files changed, 9 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index d62e3c47..f20563c0 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3566,6 +3566,7 @@ Onur Sentürk <onur@sentek.org>
Helmut Binder <cco@aon.at>
for improving calculating signal strength and quality
+ for fixing switching through encrypted channels with the Up/Down keys
Ulrich Eckhardt <uli@uli-eckhardt.de>
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);