# Fixed switching through encrypted channels with the Up/Down keys # --- device.c 2018/03/24 09:49:14 5.0 +++ 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; --- menu.c 2018/05/27 09:51:56 5.3 +++ 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);