Version 1.3.36

- Fixed a NULL pointer access with the cUnbufferedFile when a replay session runs
  all the way until the end of the recording (thanks to Joachim Wilke).
- A menu is no longer automatically closed when a replay ends (reported by
  Marko Mäkelä).
- Removed '\n' from several syslog() calls (reported by Sascha Volkenandt).
- Fixed missing '&' in the SetAreas() example in PLUGINS.html (reported by
  Sascha Volkenandt).
- Fixed a memory leak in cString::operator=() (reported by Sascha Volkenandt).
- Updated the Dutch OSD texts (thanks to Maarten Wisse).
- cReadLine now dynamically allocates its buffer, so that it can handle lines
  of any length.
- Changed cConfig::Load() to use cReadLine instead of a fixed buffer (thanks
  to Andreas Mair for reporting a problem with extremely long summary fields
  in timers).
- cSVDRP now dynamically allocates its command buffer in order to handle
  commands of any length. The MAXPARSEBUFFER macro is now obsolete and has
  been removed. If a plugin has used that macro, it should either define
  a buffer size of its own, or use cReadLine when reading files.
- Fixed a race condition in the SPU decoder (thanks to Marco Schlüßler).
- The EPG scan no longer disturbs players that have also set live PIDs
  (reported by Stefan Huelswitt).
- Fixed setting the help key display in the Recordings menu in case of several
  layers of subdirectories.
- Removed EPG bugfix #0, because it removed actually important data.
This commit is contained in:
Klaus Schmidinger
2005-11-06 18:00:00 +01:00
parent 99e3c093f4
commit 812ab9018c
24 changed files with 167 additions and 113 deletions

View File

@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: eitscan.c 1.28 2005/08/26 15:37:06 kls Exp $
* $Id: eitscan.c 1.29 2005/11/05 15:24:36 kls Exp $
*/
#include "eitscan.h"
@@ -150,13 +150,14 @@ void cEITScanner::Process(void)
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= 0x0100) {
if (Device->ProvidesTransponder(Channel)) {
if (!Device->Receiving()) {
bool IsPrimaryDeviceReplaying = Device == cDevice::PrimaryDevice() && Device->Replaying() && cTransferControl::ReceiverDevice() != cDevice::PrimaryDevice();
if (Device != cDevice::ActualDevice() || (Device->ProvidesTransponderExclusively(Channel) && (IsPrimaryDeviceReplaying || now - lastActivity > Setup.EPGScanTimeout * 3600))) {
if (!IsPrimaryDeviceReplaying && Device == cDevice::ActualDevice() && !currentChannel) {
if (cTransferControl::ReceiverDevice())
bool MaySwitchTransponder = Device->MaySwitchTransponder();
if (MaySwitchTransponder || Device->ProvidesTransponderExclusively(Channel) && now - lastActivity > Setup.EPGScanTimeout * 3600) {
if (!MaySwitchTransponder) {
if (Device == cDevice::ActualDevice() && !currentChannel) {
cDevice::PrimaryDevice()->StopReplay(); // stop transfer mode
currentChannel = Device->CurrentChannel();
Skins.Message(mtInfo, tr("Starting EPG scan"));
currentChannel = Device->CurrentChannel();
Skins.Message(mtInfo, tr("Starting EPG scan"));
}
}
currentDevice = Device;//XXX see also dvbdevice.c!!!
//dsyslog("EIT scan: device %d source %-8s tp %5d", Device->DeviceNumber() + 1, *cSource::ToString(Channel->Source()), Channel->Transponder());