Fixed setting the source value of newly created channels, in case the NIT is received from a different, but very close satellite position

This commit is contained in:
Klaus Schmidinger 2015-03-13 12:12:33 +01:00
parent 52b1e2a9ff
commit 70eb639c41
4 changed files with 20 additions and 4 deletions

View File

@ -8596,7 +8596,7 @@ Video Disk Recorder Revision History
- Bumped all version numbers to 2.2.0. - Bumped all version numbers to 2.2.0.
- Official release. - Official release.
2015-03-12: Version 2.3.1 2015-03-13: Version 2.3.1
- The new function cOsd::MaxPixmapSize() can be called to determine the maximum size - The new function cOsd::MaxPixmapSize() can be called to determine the maximum size
a cPixmap may have on the current OSD. The 'osddemo' example has been modified a cPixmap may have on the current OSD. The 'osddemo' example has been modified
@ -8611,3 +8611,5 @@ Video Disk Recorder Revision History
You can get the latest version of this plugin from the author's repository at You can get the latest version of this plugin from the author's repository at
https://bitbucket.org/powARman/dvbhddevice. https://bitbucket.org/powARman/dvbhddevice.
- Added a section about Output Devices to the INSTALL file. - Added a section about Output Devices to the INSTALL file.
- Fixed setting the source value of newly created channels, in case the NIT is
received from a different, but very close satellite position.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: channels.c 3.8 2015/02/01 13:47:05 kls Exp $ * $Id: channels.c 4.1 2015/03/13 11:34:28 kls Exp $
*/ */
#include "channels.h" #include "channels.h"
@ -229,6 +229,18 @@ bool cChannel::SetTransponderData(int Source, int Frequency, int Srate, const ch
return true; return true;
} }
void cChannel::SetSource(int Source)
{
if (source != Source) {
if (Number()) {
dsyslog("changing source of channel %d (%s) from %s to %s", Number(), name, *cSource::ToString(source), *cSource::ToString(Source));
modification |= CHANNELMOD_TRANSP;
Channels.SetModified();
}
source = Source;
}
}
void cChannel::SetId(int Nid, int Tid, int Sid, int Rid) void cChannel::SetId(int Nid, int Tid, int Sid, int Rid)
{ {
if (nid != Nid || tid != Tid || sid != Sid || rid != Rid) { if (nid != Nid || tid != Tid || sid != Sid || rid != Rid) {

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: channels.h 3.3 2015/02/01 13:30:26 kls Exp $ * $Id: channels.h 4.1 2015/03/13 11:20:50 kls Exp $
*/ */
#ifndef __CHANNELS_H #ifndef __CHANNELS_H
@ -193,6 +193,7 @@ public:
time_t Seen(void) { return seen; } time_t Seen(void) { return seen; }
void CopyTransponderData(const cChannel *Channel); void CopyTransponderData(const cChannel *Channel);
bool SetTransponderData(int Source, int Frequency, int Srate, const char *Parameters, bool Quiet = false); bool SetTransponderData(int Source, int Frequency, int Srate, const char *Parameters, bool Quiet = false);
void SetSource(int Source);
void SetId(int Nid, int Tid, int Sid, int Rid = 0); void SetId(int Nid, int Tid, int Sid, int Rid = 0);
void SetLcn(int Lcn); void SetLcn(int Lcn);
void SetName(const char *Name, const char *ShortName, const char *Provider); void SetName(const char *Name, const char *ShortName, const char *Provider);

3
sdt.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: sdt.c 3.4 2015/01/04 14:33:35 kls Exp $ * $Id: sdt.c 4.1 2015/03/13 11:39:42 kls Exp $
*/ */
#include "sdt.h" #include "sdt.h"
@ -105,6 +105,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
} }
else if (*pn && Setup.UpdateChannels >= 4) { else if (*pn && Setup.UpdateChannels >= 4) {
channel = Channels.NewChannel(Channel(), pn, ps, pp, sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId()); channel = Channels.NewChannel(Channel(), pn, ps, pp, sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId());
channel->SetSource(source); // in case this comes from a satellite with a slightly different position
patFilter->Trigger(SiSdtService.getServiceId()); patFilter->Trigger(SiSdtService.getServiceId());
} }
} }