summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS25
-rw-r--r--HISTORY29
-rw-r--r--MANUAL3
-rw-r--r--Make.config.template3
-rw-r--r--Makefile5
-rw-r--r--channels.conf6
-rw-r--r--ci.c4
-rw-r--r--config.h6
-rw-r--r--device.c39
-rw-r--r--i18n.c19
-rw-r--r--menu.c64
-rw-r--r--menu.h4
-rw-r--r--recorder.c8
-rw-r--r--svdrp.c4
-rw-r--r--vdr.c14
-rw-r--r--videodir.c4
16 files changed, 182 insertions, 55 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 7e5886d..6b199f2 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -518,6 +518,7 @@ Gerhard Steiner <steiner@mail.austria.com>
for fixing resume file handling in case the resume.vdr file can't be written
for reporting a problem with newly created timers in case they are not confirmed
with "Ok"
+ for reporting an occasional "Broken pipe" error in SVDRP connections
Jaakko Hyvätti <jaakko@hyvatti.iki.fi>
for translating OSD texts to the Finnish language
@@ -525,12 +526,16 @@ Jaakko Hyvätti <jaakko@hyvatti.iki.fi>
for fixing recording overlapping timers on the same channel in case
DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and/or DO_MULTIPLE_RECORDINGS is not defined
for fixing the minimum lifespan of deleted recordings
+ for suggesting to improve channel switching in case of numerical input by switching
+ as soon as the channel is unique
Dennis Noordsij <dennis.noordsij@wiral.com>
for reporting a small glitch when switching channels
Steffen Barszus <st_barszus@gmx.de>
for reporting a bug in switching audio tracks in 'Transfer Mode' on the primary DVB device
+ for making the program use the values of VIDEODIR and PLUGINDIR defined in Makefile
+ or Makefile.config as defaults
Peter Seyringer <e9425234@student.tuwien.ac.at>
for reporting a bug in saving the polarization parameter of channels that have a
@@ -550,6 +555,8 @@ Guy Roussin <guy.roussin@teledetection.fr>
for suggesting not to display channel group delimiters without text
for reporting a bug in handling channels in the "Channels" menu in case there are
':@nnn' group separators without names
+ for suggesting to clear the channel info display when entering numeric keys to
+ switch channels
Georg Hitsch <georg@hitsch.at>
for his help in keeping 'channels.conf' up to date
@@ -561,6 +568,8 @@ Clemens Kirchgatterer <clemens@thf.ath.cx>
Emil Naepflein <Emil.Naepflein@philosys.de>
for suggesting to take an active SVDRP connection into account when doing shutdown or
housekeeping
+ for fixing selecting the device, because sometimes an FTA recording terminated a
+ CA recording
Gerald Berwolf <genka@genka.de>
for suggesting to deactivate some templates in tools.h in case some plugin needs to
@@ -719,3 +728,19 @@ Jon Burgess <mplayer@jburgess.uklinux.net>
Thomas Schmidt <thomas.schmidt@in.stud.tu-ilmenau.de>
for reporting a crash when cancelling a newly created timer
+
+Michael Walle <michael.walle@web.de>
+ for reporting a bug in channel switching after Left/Right has been pressed
+
+Thomas Keil <tk@commedia-group.com>
+ for suggesting to change the behaviour of the '0' key in normal viewing mode so
+ that a channel only qualifies as "previous" if it has been selected for at least
+ 3 seconds
+ for reporting a bug in handling the color buttons in the "Edit channel" menu
+
+Kenneth Aafløy <ke-aa@frisurf.no>
+ for fixing checking CA capabilities with the dvb-kernel driver
+
+Ernst Fürst <ernstfuerst@swissonline.ch>
+ for reporting a crash in case a VFAT file system is used without compiling VDR
+ with VFAT=1
diff --git a/HISTORY b/HISTORY
index c1a8222..52a3005 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2253,3 +2253,32 @@ Video Disk Recorder Revision History
channel (thanks to Malcolm Caldwell for reporting this one).
- Some corrections to the Finnish OSD texts (thanks to Niko Tarnanen and Rolf
Ahrenberg).
+
+2003-08-03: Version 1.2.2
+
+- Fixed a bug in channel switching after Left/Right has been pressed (thanks to
+ Michael Walle for reporting this one).
+- Improved channel switching in case of numerical input by switching as soon as
+ the channel is unique (suggested by Jaakko Hyvätti).
+- Fixed creating a new channel in the "Channels" menu in case the 'channels.conf'
+ contains ':@nnn' lines with no text (thanks to Guy Roussin for reporting this
+ one).
+- Changed the behaviour of the '0' key in normal viewing mode so that a channel
+ only qualifies as "previous" if it has been selected for at least 3 seconds
+ (suggested by Thomas Keil).
+- Now clearing the channel info display when entering numeric keys to switch
+ channels (suggested by Guy Roussin).
+- Added missing I18N entry for "Ppid" (thanks to Rolf Ahrenberg).
+- Fixed handling the color buttons in the "Edit channel" menu (thanks to Thomas
+ Keil for reporting this one).
+- Fixed an occasional "Broken pipe" error in SVDRP connections (thanks to Gerhard
+ Steiner for reporting this one).
+- Fixed checking CA capabilities with the dvb-kernel driver (thanks to Kenneth
+ Aafløy).
+- Fixed selecting the device, because sometimes an FTA recording terminated a
+ CA recording (thanks to Emil Naepflein).
+- Fixed a possible crash in case a VFAT file system is used without compiling VDR
+ with VFAT=1 (thanks to Ernst Fürst for reporting this one).
+- Now the program uses the values of VIDEODIR and PLUGINDIR defined in Makefile
+ or Makefile.config as defaults (thanks to Steffen Barszus).
+- Added the usual menu timeout to the CAM menus.
diff --git a/MANUAL b/MANUAL
index 742b743..46389af 100644
--- a/MANUAL
+++ b/MANUAL
@@ -154,7 +154,8 @@ Version 1.2
menu) by pressing the "Blue" button.
Pressing the '0' key in normal viewing mode toggles between the current and
- the previous channel.
+ the previous channel. A channel is considered "previous" if it has been
+ selected for at least 3 seconds.
After switching to a different channel the channel number and name, as well
as the current time are displayed at the top of the screen. If available, the
diff --git a/Make.config.template b/Make.config.template
index 774abbf..ff5946f 100644
--- a/Make.config.template
+++ b/Make.config.template
@@ -6,7 +6,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
-# $Id: Make.config.template 1.1 2002/11/01 14:05:36 kls Exp $
+# $Id: Make.config.template 1.2 2003/08/02 14:25:53 kls Exp $
### The C compiler and options:
@@ -22,4 +22,5 @@ DVBDIR = ../DVB
MANDIR = /usr/local/man
BINDIR = /usr/local/bin
+PLUGINDIR= ./PLUGINS
VIDEODIR = /video
diff --git a/Makefile b/Makefile
index efeed0d..f27fb41 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
-# $Id: Makefile 1.56 2003/01/06 12:28:09 kls Exp $
+# $Id: Makefile 1.57 2003/08/02 14:27:21 kls Exp $
.DELETE_ON_ERROR:
@@ -49,6 +49,9 @@ DEFINES += -DREMOTE_$(REMOTE)
DEFINES += -D_GNU_SOURCE
+DEFINES += -DVIDEODIR=\"$(VIDEODIR)\"
+DEFINES += -DPLUGINDIR=\"$(PLUGINDIR)/lib\"
+
ifdef DEBUG_OSD
DEFINES += -DDEBUG_OSD
NCURSESLIB = -lncurses
diff --git a/channels.conf b/channels.conf
index 03b71aa..5bc0e8a 100644
--- a/channels.conf
+++ b/channels.conf
@@ -85,9 +85,9 @@ Premiere Direkt 3D:12070:h:S19.2E:27500:511:512:0:101:212:0:0:0
:PW Erotic
Beate-Uhse.TV:12071:h:S19.2E:27500:1023:1024:0:101:21:0:0:0
Premiere Erotik 1:12031:h:S19.2E:27500:1279:1280:2:101:513:0:0:0
-Premiere Erotik 2:12070:h:0:27500:1535:1536:0:101:778:0:0:0
-Premiere Erotik 3:12070:h:0:27500:1791:1792:0:101:779:0:0:0
-Premiere Erotik 4:12070:h:0:27500:3583:3584:0:101:780:0:0:0
+Premiere Erotik 2:12070:h:S19.2E:27500:1535:1536:0:101:778:0:0:0
+Premiere Erotik 3:12070:h:S19.2E:27500:1791:1792:0:101:779:0:0:0
+Premiere Erotik 4:12070:h:S19.2E:27500:3583:3584:0:101:780:0:0:0
:Sportsworld
Premiere Sport 1:11720:h:S19.2E:27500:255:256,257:0:101:17:0:0:0
Premiere Sport 2:12031:h:S19.2E:27500:3839:3840:0:101:27:0:0:0
diff --git a/ci.c b/ci.c
index 3575d14..e94c20a 100644
--- a/ci.c
+++ b/ci.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: ci.c 1.15 2003/05/25 11:45:11 kls Exp $
+ * $Id: ci.c 1.16 2003/08/02 10:00:01 kls Exp $
*/
/* XXX TODO
@@ -1314,7 +1314,7 @@ cCiHandler *cCiHandler::CreateCiHandler(const char *FileName)
int NumSlots = Caps.slot_num;
if (NumSlots > 0) {
//XXX dsyslog("CAM: found %d CAM slots", NumSlots); // TODO let's do this only once we can be sure that there _really_ is a CAM adapter!
- if (Caps.slot_type == CA_CI_LINK)
+ if ((Caps.slot_type & CA_CI_LINK) != 0)
return new cCiHandler(fd_ca, NumSlots);
else
isyslog("CAM doesn't support link layer interface");
diff --git a/config.h b/config.h
index 29c058e..40aead2 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: config.h 1.164 2003/06/06 12:28:20 kls Exp $
+ * $Id: config.h 1.165 2003/06/12 20:37:14 kls Exp $
*/
#ifndef __CONFIG_H
@@ -19,8 +19,8 @@
#include "device.h"
#include "tools.h"
-#define VDRVERSION "1.2.1"
-#define VDRVERSNUM 10201 // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION "1.2.2"
+#define VDRVERSNUM 10202 // Version * 10000 + Major * 100 + Minor
#define MAXPRIORITY 99
#define MAXLIFETIME 99
diff --git a/device.c b/device.c
index f43870a..242f59c 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 1.45 2003/06/08 09:19:59 kls Exp $
+ * $Id: device.c 1.46 2003/08/02 11:44:28 kls Exp $
*/
#include "device.h"
@@ -142,23 +142,34 @@ cDevice *cDevice::GetDevice(int Index)
cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers)
{
cDevice *d = NULL;
+ int select = 7, pri;
+
for (int i = 0; i < numDevices; i++) {
bool ndr;
- if (device[i]->ProvidesChannel(Channel, Priority, &ndr) // this device is basicly able to do the job
- && (!d // we don't have a device yet, or...
- || (device[i]->Receiving() && !ndr) // ...this one is already receiving and allows additional receivers, or...
- || !d->Receiving() // ...the one we have is not receiving...
- && (device[i]->Priority() < d->Priority() // ...this one has an even lower Priority, or...
- || device[i]->Priority() == d->Priority() // ...same Priority...
- && device[i]->ProvidesCa(Channel->Ca()) < d->ProvidesCa(Channel->Ca()) // ...but this one provides fewer Ca values
- )
- )
- ) {
- d = device[i];
- if (NeedsDetachReceivers)
- *NeedsDetachReceivers = ndr;
+ if (device[i]->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basicly able to do the job
+ if (device[i]->Receiving() && !ndr)
+ pri = 0; // receiving and allows additional receivers
+ else if (d && !device[i]->Receiving() && device[i]->ProvidesCa(Channel->Ca()) < d->ProvidesCa(Channel->Ca()))
+ pri = 1; // free and fewer Ca's
+ else if (!device[i]->Receiving() && !device[i]->IsPrimaryDevice())
+ pri = 2; // free and not the primary device
+ else if (!device[i]->Receiving())
+ pri = 3; // free
+ else if (d && device[i]->Priority() < d->Priority())
+ pri = 4; // receiving but priority is lower
+ else if (d && device[i]->Priority() == d->Priority() && device[i]->ProvidesCa(Channel->Ca()) < d->ProvidesCa(Channel->Ca()))
+ pri = 5; // receiving with same priority but fewer Ca's
+ else
+ pri = 6; // all others
+ if (pri < select) {
+ select = pri;
+ d = device[i];
+ if (NeedsDetachReceivers)
+ *NeedsDetachReceivers = ndr;
+ }
}
}
+
/*XXX+ too complex with multiple recordings per device
if (!d && Ca > MAXDEVICES) {
// We didn't find one the easy way, so now we have to try harder:
diff --git a/i18n.c b/i18n.c
index f50a230..0363e9f 100644
--- a/i18n.c
+++ b/i18n.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: i18n.c 1.128 2003/06/09 09:49:29 kls Exp $
+ * $Id: i18n.c 1.129 2003/07/13 15:03:07 kls Exp $
*
* Translations provided by:
*
@@ -1044,6 +1044,23 @@ const tI18nPhrase Phrases[] = {
"Vpid",
"PID Vídeo",
},
+ { "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Aikatieto PID",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ "Ppid",
+ },
{ "Apid1",
"Apid1",
"Apid1",
diff --git a/menu.c b/menu.c
index 5a50934..b29961e 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.c 1.256 2003/06/07 12:31:57 kls Exp $
+ * $Id: menu.c 1.264 2003/08/03 09:38:37 kls Exp $
*/
#include "menu.h"
@@ -713,6 +713,8 @@ void cMenuChannels::Propagate(void)
eOSState cMenuChannels::Switch(void)
{
+ if (HasSubMenu())
+ return osContinue;
cChannel *ch = GetChannel(Current());
if (ch)
cDevice::PrimaryDevice()->SwitchChannel(ch, true);
@@ -733,12 +735,12 @@ eOSState cMenuChannels::New(void)
{
if (HasSubMenu())
return osContinue;
- return AddSubMenu(new cMenuEditChannel(Channels.Get(Current()), true));
+ return AddSubMenu(new cMenuEditChannel(GetChannel(Current()), true));
}
eOSState cMenuChannels::Delete(void)
{
- if (Count() > 0) {
+ if (!HasSubMenu() && Count() > 0) {
int Index = Current();
cChannel *channel = GetChannel(Current());
int DeletedChannel = channel->Number();
@@ -793,7 +795,9 @@ eOSState cMenuChannels::ProcessKey(eKeys Key)
case kRed: return Edit();
case kGreen: return New();
case kYellow: return Delete();
- case kBlue: Mark(); break;
+ case kBlue: if (!HasSubMenu())
+ Mark();
+ break;
default: break;
}
}
@@ -1558,6 +1562,7 @@ cMenuCam::cMenuCam(cCiMenu *CiMenu)
Add(new cOsdItem(ciMenu->BottomText()));
Display();
dsyslog("CAM: Menu - %s", ciMenu->TitleText());
+ lastActivity = time(NULL);
}
cMenuCam::~cMenuCam()
@@ -1586,6 +1591,10 @@ eOSState cMenuCam::ProcessKey(eKeys Key)
default: break;
}
}
+ if (Key != kNone)
+ lastActivity = time(NULL);
+ else if (time(NULL) - lastActivity > MENUTIMEOUT)
+ state = osEnd;
return state;
}
@@ -1603,6 +1612,7 @@ cMenuCamEnquiry::cMenuCamEnquiry(cCiEnquiry *CiEnquiry)
SetTitle(ciEnquiry->Text() ? ciEnquiry->Text() : "CAM");
Add(new cMenuEditNumItem("Input", input, Length, ciEnquiry->Blind()));
Display();
+ lastActivity = time(NULL);
}
cMenuCamEnquiry::~cMenuCamEnquiry()
@@ -1631,6 +1641,10 @@ eOSState cMenuCamEnquiry::ProcessKey(eKeys Key)
default: break;
}
}
+ if (Key != kNone)
+ lastActivity = time(NULL);
+ else if (time(NULL) - lastActivity > MENUTIMEOUT)
+ state = osEnd;
return state;
}
@@ -2740,8 +2754,28 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
number = number * 10 + Key - k0;
if (number > 0) {
cChannel *channel = Channels.GetByNumber(number);
+ Interface->Clear();
+ withInfo = false;
DisplayChannel(channel);
lastTime = time_ms();
+ // Lets see if there can be any useful further input:
+ int n = channel ? number * 10 : 0;
+ while (channel && (channel = Channels.Next(channel)) != NULL) {
+ if (!channel->GroupSep()) {
+ if (n <= channel->Number() && channel->Number() <= n + 9) {
+ n = 0;
+ break;
+ }
+ if (channel->Number() > n)
+ n *= 10;
+ }
+ }
+ if (n > 0) {
+ // This channel is the only one that fits the input, so let's take it right away:
+ Interface->Flush(); // makes sure the user sees his last input
+ Channels.SwitchTo(number);
+ return osEnd;
+ }
}
}
break;
@@ -2783,6 +2817,7 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
case kChanUp:
case kChanDn|k_Repeat:
case kChanDn:
+ group = -1;
Refresh();
break;
case kNone:
@@ -2968,16 +3003,19 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
}
cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName);
- const cChannel *ch = timer->Channel();
- recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2());
- if (device->AttachReceiver(recorder)) {
- Recording.WriteSummary();
- cStatus::MsgRecording(device, Recording.Name());
- if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo()
- cReplayControl::SetRecording(fileName, Recording.Name());
+ isyslog("record %s", fileName);
+ if (MakeDirs(fileName, true)) {
+ const cChannel *ch = timer->Channel();
+ recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2());
+ if (device->AttachReceiver(recorder)) {
+ Recording.WriteSummary();
+ cStatus::MsgRecording(device, Recording.Name());
+ if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo()
+ cReplayControl::SetRecording(fileName, Recording.Name());
+ }
+ else
+ DELETENULL(recorder);
}
- else
- DELETENULL(recorder);
}
cRecordControl::~cRecordControl()
diff --git a/menu.h b/menu.h
index 5dd4080..e304ea3 100644
--- a/menu.h
+++ b/menu.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.h 1.56 2003/05/24 16:35:52 kls Exp $
+ * $Id: menu.h 1.57 2003/08/03 09:37:18 kls Exp $
*/
#ifndef __MENU_H
@@ -62,6 +62,7 @@ public:
class cMenuCam : public cOsdMenu {
private:
cCiMenu *ciMenu;
+ time_t lastActivity;
bool selected;
eOSState Select(void);
public:
@@ -73,6 +74,7 @@ public:
class cMenuCamEnquiry : public cOsdMenu {
private:
cCiEnquiry *ciEnquiry;
+ time_t lastActivity;
char *input;
bool replied;
eOSState Reply(void);
diff --git a/recorder.c b/recorder.c
index d7cc9c3..2583bae 100644
--- a/recorder.c
+++ b/recorder.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recorder.c 1.6 2003/05/16 13:33:04 kls Exp $
+ * $Id: recorder.c 1.7 2003/08/02 13:01:19 kls Exp $
*/
#include <stdarg.h>
@@ -34,12 +34,6 @@ cRecorder::cRecorder(const char *FileName, int Ca, int Priority, int VPid, int A
fileSize = 0;
active = false;
lastDiskSpaceCheck = time(NULL);
- isyslog("record %s", FileName);
-
- // Create directories if necessary:
-
- if (!MakeDirs(FileName, true))
- return;
// Make sure the disk is up and running:
diff --git a/svdrp.c b/svdrp.c
index e9f2216..625b7f8 100644
--- a/svdrp.c
+++ b/svdrp.c
@@ -10,7 +10,7 @@
* and interact with the Video Disk Recorder - or write a full featured
* graphical interface that sits on top of an SVDRP connection.
*
- * $Id: svdrp.c 1.52 2003/06/06 13:30:52 kls Exp $
+ * $Id: svdrp.c 1.53 2003/07/26 10:57:33 kls Exp $
*/
#include "svdrp.h"
@@ -1100,7 +1100,7 @@ bool cSVDRP::Process(void)
}
lastActivity = time(NULL);
}
- else if (r <= 0) {
+ else if (r < 0) {
isyslog("lost connection to SVDRP client");
Close();
}
diff --git a/vdr.c b/vdr.c
index 6a6c35d..16e8bdd 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/vdr
*
- * $Id: vdr.c 1.160 2003/05/29 12:27:26 kls Exp $
+ * $Id: vdr.c 1.162 2003/08/02 14:01:32 kls Exp $
*/
#include <getopt.h>
@@ -57,6 +57,7 @@
#define ACTIVITYTIMEOUT 60 // seconds before starting housekeeping
#define SHUTDOWNWAIT 300 // seconds to wait in user prompt before automatic shutdown
#define MANUALSTART 600 // seconds the next timer must be in the future to assume manual start
+#define ZAPTIMEOUT 3 // seconds until a channel counts as "previous" for switching with '0'
static int Interrupted = 0;
@@ -92,7 +93,7 @@ int main(int argc, char *argv[])
#define DEFAULTSVDRPPORT 2001
#define DEFAULTWATCHDOG 0 // seconds
-#define DEFAULTPLUGINDIR "./PLUGINS/lib"
+#define DEFAULTPLUGINDIR PLUGINDIR
int SVDRPport = DEFAULTSVDRPPORT;
const char *AudioCommand = NULL;
@@ -455,6 +456,8 @@ int main(int argc, char *argv[])
int LastChannel = -1;
int LastTimerChannel = -1;
int PreviousChannel = cDevice::CurrentChannel();
+ int LastLastChannel = PreviousChannel;
+ time_t LastChannelChanged = time(NULL);
time_t LastActivity = 0;
int MaxLatencyTime = 0;
bool ForceShutdown = false;
@@ -492,9 +495,12 @@ int main(int argc, char *argv[])
if (!EITScanner.Active() && cDevice::CurrentChannel() != LastChannel) {
if (!Menu)
Menu = Temp = new cDisplayChannel(cDevice::CurrentChannel(), LastChannel > 0);
- if (LastChannel > 0)
- PreviousChannel = LastChannel;
LastChannel = cDevice::CurrentChannel();
+ LastChannelChanged = time(NULL);
+ }
+ if (LastLastChannel != LastChannel && time(NULL) - LastChannelChanged >= ZAPTIMEOUT) {
+ PreviousChannel = LastLastChannel;
+ LastLastChannel = LastChannel;
}
// Timers and Recordings:
if (!Timers.BeingEdited()) {
diff --git a/videodir.c b/videodir.c
index 4078fdf..94e7141 100644
--- a/videodir.c
+++ b/videodir.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: videodir.c 1.9 2002/08/11 13:31:02 kls Exp $
+ * $Id: videodir.c 1.10 2003/08/02 13:43:28 kls Exp $
*/
#include "videodir.h"
@@ -18,7 +18,7 @@
#include <unistd.h>
#include "tools.h"
-const char *VideoDirectory = "/video";
+const char *VideoDirectory = VIDEODIR;
class cVideoDirectory {
private: