mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
The EIT scanner now checks whether there is a proper device before adding a channel to the scan list
This commit is contained in:
parent
2b495e0f87
commit
0360b0d0e7
4
HISTORY
4
HISTORY
@ -9919,7 +9919,7 @@ Video Disk Recorder Revision History
|
||||
- A device is now always kept occupied if a timer is in VPS margin or needs the
|
||||
transponder (thanks to Markus Ehrnsperger).
|
||||
|
||||
2024-06-24:
|
||||
2024-06-27:
|
||||
|
||||
- Updated the Italian OSD texts (thanks to Diego Pierotto).
|
||||
- Fixed a possible access of a deleted object in the EIT scanner.
|
||||
@ -9930,3 +9930,5 @@ Video Disk Recorder Revision History
|
||||
Note that the string version of strreplace() has been modified, so that it
|
||||
replaces all occurrences of the search string, not just the first one.
|
||||
- Removed leftover cMenuRecordings::SetPath().
|
||||
- The EIT scanner now checks whether there is a proper device before adding a
|
||||
channel to the scan list.
|
||||
|
16
eitscan.c
16
eitscan.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: eitscan.c 5.4 2024/05/19 14:55:57 kls Exp $
|
||||
* $Id: eitscan.c 5.5 2024/06/27 10:49:34 kls Exp $
|
||||
*/
|
||||
|
||||
#include "eitscan.h"
|
||||
@ -44,11 +44,23 @@ int cScanData::Compare(const cListObject &ListObject) const
|
||||
// --- cScanList -------------------------------------------------------------
|
||||
|
||||
class cScanList : public cList<cScanData> {
|
||||
private:
|
||||
bool HasDeviceForChannelEIT(const cChannel *Channel) const;
|
||||
public:
|
||||
void AddTransponders(const cList<cChannel> *Channels);
|
||||
void AddTransponder(const cChannel *Channel);
|
||||
};
|
||||
|
||||
bool cScanList::HasDeviceForChannelEIT(const cChannel *Channel) const
|
||||
{
|
||||
for (int i = 0; i < cDevice::NumDevices(); i++) {
|
||||
cDevice *Device = cDevice::GetDevice(i);
|
||||
if (Device && Device->ProvidesEIT() && Device->ProvidesTransponder(Channel))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void cScanList::AddTransponders(const cList<cChannel> *Channels)
|
||||
{
|
||||
for (const cChannel *ch = Channels->First(); ch; ch = Channels->Next(ch))
|
||||
@ -59,6 +71,8 @@ void cScanList::AddTransponders(const cList<cChannel> *Channels)
|
||||
void cScanList::AddTransponder(const cChannel *Channel)
|
||||
{
|
||||
if (Channel->Source() && Channel->Transponder() && (Setup.EPGScanMaxChannel <= 0 || Channel->Number() < Setup.EPGScanMaxChannel)) {
|
||||
if (!HasDeviceForChannelEIT(Channel))
|
||||
return;
|
||||
for (cScanData *sd = First(); sd; sd = Next(sd)) {
|
||||
if (sd->Source() == Channel->Source() && ISTRANSPONDER(sd->Transponder(), Channel->Transponder()))
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user