From 30eb01ef3792e3fb75eabc34e8258d66197ec75d Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 27 May 2018 09:55:30 +0200 Subject: Fixed locking the Channels list in cDisplayChannel, where the lock was still held when Flush() was called (cont'd) --- CONTRIBUTORS | 2 ++ HISTORY | 4 ++-- menu.c | 8 +++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 73162045..baaae827 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -283,6 +283,8 @@ Uwe Scheffler for reporting a problem in handling the PrimaryLimit when requesting a device for live viewing for reporting a black screen while a "Recording started" message is displayed + for reporting a problem with the lock on the Channels list in cDisplayChannel still + being held when Flush() was called Matjaz Thaler for improving AC3 decoding when replaying DVDs diff --git a/HISTORY b/HISTORY index 23dfa28a..fafc0620 100644 --- a/HISTORY +++ b/HISTORY @@ -9348,7 +9348,7 @@ Video Disk Recorder Revision History Senzel). - Official release. -2018-05-06: Version 2.4.1 +2018-05-27: Version 2.4.1 - Fixed handling the tfRecording flag in the SVDRP commands MODT and UPDT (reported by Johann Friedrichs). @@ -9360,4 +9360,4 @@ Video Disk Recorder Revision History unconditionally in the main loop, and checks whether the current cSkinDisplay object (if any) implements SetMessage(). - Fixed locking the Channels list in cDisplayChannel, where the lock was still held - when Flush() was called (reported by Matthias Senzel). + when Flush() was called (reported by Matthias Senzel and Uwe Scheffler). diff --git a/menu.c b/menu.c index a9ea49d2..b44f36cc 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.76 2018/05/06 09:30:11 kls Exp $ + * $Id: menu.c 4.77 2018/05/27 09:51:56 kls Exp $ */ #include "menu.h" @@ -4654,8 +4654,10 @@ cDisplayChannel::cDisplayChannel(eKeys FirstKey) 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); } -- cgit v1.2.3