From d7462ae5adb392d1a17472b22d1d2fa850d90b6a Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 4 Nov 2013 10:11:51 +0100 Subject: [PATCH] Changes in the teletext PID no longer cause retuning --- HISTORY | 4 +++- channels.c | 9 ++++++--- channels.h | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index 529a8996..240d6880 100644 --- a/HISTORY +++ b/HISTORY @@ -8032,7 +8032,7 @@ Video Disk Recorder Revision History the last replayed recording (if any) by pressing Ok repeatedly in the Recordings menu. -2013-11-03: Version 2.1.3 +2013-11-04: Version 2.1.3 - Changed the return value of cPositioner::HorizonLongitude() to 0 in case the latitude of the antenna location is beyond +/-81 degrees. @@ -8055,3 +8055,5 @@ Video Disk Recorder Revision History Strasser). - The new menu category mcRecordingEdit is now used to mark menus that edit recording properties (suggested by Stefan Braun). +- Changes in the teletext PID no longer cause retuning (and thus interrupting a + recording). diff --git a/channels.c b/channels.c index 7cb7e883..0c9dcedc 100644 --- a/channels.c +++ b/channels.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.c 3.1 2013/10/11 11:03:26 kls Exp $ + * $Id: channels.c 3.2 2013/11/04 10:11:51 kls Exp $ */ #include "channels.h" @@ -330,8 +330,10 @@ static int IntArrayToString(char *s, const int *a, int Base = 10, const char n[] void cChannel::SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid) { int mod = CHANNELMOD_NONE; - if (vpid != Vpid || ppid != Ppid || vtype != Vtype || tpid != Tpid) + if (vpid != Vpid || ppid != Ppid || vtype != Vtype) mod |= CHANNELMOD_PIDS; + if (tpid != Tpid) + mod |= CHANNELMOD_AUX; int m = IntArraysDiffer(apids, Apids, alangs, ALangs) | IntArraysDiffer(atypes, Atypes) | IntArraysDiffer(dpids, Dpids, dlangs, DLangs) | IntArraysDiffer(dtypes, Dtypes) | IntArraysDiffer(spids, Spids, slangs, SLangs); if (m & STRDIFF) mod |= CHANNELMOD_LANGS; @@ -388,7 +390,8 @@ void cChannel::SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, c spids[MAXSPIDS] = 0; tpid = Tpid; modification |= mod; - Channels.SetModified(); + if (Number()) + Channels.SetModified(); } } diff --git a/channels.h b/channels.h index 815cb479..f719f1e5 100644 --- a/channels.h +++ b/channels.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.h 2.16 2012/06/17 11:21:33 kls Exp $ + * $Id: channels.h 3.1 2013/11/04 09:52:02 kls Exp $ */ #ifndef __CHANNELS_H @@ -22,6 +22,7 @@ #define CHANNELMOD_NAME 0x01 #define CHANNELMOD_PIDS 0x02 #define CHANNELMOD_ID 0x04 +#define CHANNELMOD_AUX 0x08 #define CHANNELMOD_CA 0x10 #define CHANNELMOD_TRANSP 0x20 #define CHANNELMOD_LANGS 0x40