Fixed locking the Channels list in cDisplayChannel, where the lock was still held when Flush() was called (cont'd)

This commit is contained in:
Klaus Schmidinger 2018-05-27 09:55:30 +02:00
parent d380b57d28
commit 30eb01ef37
3 changed files with 9 additions and 5 deletions

View File

@ -283,6 +283,8 @@ Uwe Scheffler <linux_dvb@uni.de>
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 <matjaz.thaler@guest.arnes.si>
for improving AC3 decoding when replaying DVDs

View File

@ -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).

8
menu.c
View File

@ -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);
}