1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed switching through encrypted channels with the Up/Down keys

This commit is contained in:
Klaus Schmidinger 2018-07-16 09:33:21 +02:00
parent 5543f13051
commit 336822f672
4 changed files with 9 additions and 2 deletions

View File

@ -3566,6 +3566,7 @@ Onur Sent
Helmut Binder <cco@aon.at> Helmut Binder <cco@aon.at>
for improving calculating signal strength and quality for improving calculating signal strength and quality
for fixing switching through encrypted channels with the Up/Down keys
Ulrich Eckhardt <uli@uli-eckhardt.de> Ulrich Eckhardt <uli@uli-eckhardt.de>
for reporting a problem with shutdown after user inactivity in case a plugin is for reporting a problem with shutdown after user inactivity in case a plugin is

View File

@ -9363,3 +9363,5 @@ Video Disk Recorder Revision History
when Flush() was called (reported by Matthias Senzel and Uwe Scheffler). 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 - Fixed shutdown after user inactivity in case a plugin is keeping the OSD open
(reported by Ulrich Eckhardt). (reported by Ulrich Eckhardt).
- Fixed switching through encrypted channels with the Up/Down keys (thanks to Helmut
Binder).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "device.h"
@ -787,6 +787,7 @@ bool cDevice::SwitchChannel(const cChannel *Channel, bool LiveView)
if (LiveView) { if (LiveView) {
isyslog("switching to channel %d %s (%s)", Channel->Number(), *Channel->GetChannelID().ToString(), Channel->Name()); 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 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--;) { for (int i = 3; i--;) {
switch (SetChannel(Channel, LiveView)) { switch (SetChannel(Channel, LiveView)) {
@ -809,6 +810,7 @@ bool cDevice::SwitchChannel(int Direction)
Direction = sgn(Direction); Direction = sgn(Direction);
if (Direction) { if (Direction) {
cControl::Shutdown(); // prevents old channel from being shown too long if GetDevice() takes longer 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 n = CurrentChannel() + Direction;
int first = n; int first = n;
LOCK_CHANNELS_READ; LOCK_CHANNELS_READ;

4
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "menu.h"
@ -4704,6 +4704,8 @@ void cDisplayChannel::Refresh(void)
const cChannel *cDisplayChannel::NextAvailableChannel(const cChannel *Channel, int Direction) const cChannel *cDisplayChannel::NextAvailableChannel(const cChannel *Channel, int Direction)
{ {
if (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; LOCK_CHANNELS_READ;
while (Channel) { while (Channel) {
Channel = Direction > 0 ? Channels->Next(Channel) : Channels->Prev(Channel); Channel = Direction > 0 ? Channels->Next(Channel) : Channels->Prev(Channel);