summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY4
-rw-r--r--device.c4
3 files changed, 7 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 0db5f2ab..a2eeaed2 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3397,6 +3397,7 @@ Dietmar Spingler <d_spingler@gmx.de>
for suggesting to cache the channel/CAM relations in the file 'cam.data'
for suggesting to optionally list the channels with channel ids in the SVDRP command LSTC
for suggesting to include the channel ID in log messages about switching channels
+ for reporting a problem with the SVDRP command CHAN while the channel display is open
Stefan Schallenberg <infos@nafets.de>
for adding the functions IndexOf(), InsertUnique(), AppendUnique() and RemoveElement()
diff --git a/HISTORY b/HISTORY
index 76d3ee1c..2e19fed4 100644
--- a/HISTORY
+++ b/HISTORY
@@ -8991,7 +8991,7 @@ Video Disk Recorder Revision History
current channel is listed.
- Fixed a possible crash when pulling the CAM while decrypting a channel with MTD.
-2017-05-17: Version 2.3.5
+2017-05-18: Version 2.3.5
- CAMs are now sent a generated EIT packet that contains a single 'present event' for
the current SID, in order to avoid any parental rating dialogs.
@@ -9026,3 +9026,5 @@ Video Disk Recorder Revision History
presence is required by some CAMs).
- Fixed a crash in case the bottom text of a CAM menu is empty.
- Extended the CI API to allow plugins to implement additional CAM resources.
+- Fixed a race between SVDRP CHAN and cDevice::HasProgramme() (reported by Dietmar
+ Spingler).
diff --git a/device.c b/device.c
index a090afb1..b957658e 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.20 2017/05/18 09:05:46 kls Exp $
+ * $Id: device.c 4.21 2017/05/18 09:16:41 kls Exp $
*/
#include "device.h"
@@ -834,6 +834,7 @@ bool cDevice::SwitchChannel(int Direction)
eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
{
+ cMutexLock MutexLock(&mutexReceiver); // to avoid a race between SVDRP CHAN and HasProgramme()
cStatus::MsgChannelSwitch(this, 0, LiveView);
if (LiveView) {
@@ -946,6 +947,7 @@ bool cDevice::HasLock(int TimeoutMs) const
bool cDevice::HasProgramme(void) const
{
+ cMutexLock MutexLock(&mutexReceiver); // to avoid a race between SVDRP CHAN and HasProgramme()
return Replaying() || pidHandles[ptAudio].pid || pidHandles[ptVideo].pid;
}