From c9a5d8ea5328e4a8bcb0c3423b825c02cb0c3b27 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 7 Apr 2002 18:00:00 +0200 Subject: Version 1.0.0 - Fixed a problem with wrong EPG data in the Schedules menu (thanks to Tobias Kerner, problem was initially reported by Michel Moster, but somehow I had misplaced his message...). - Added Spanish language texts (thanks to Ruben Nunez Francisco). - Fixed resetting the "First day" timer parameter once the timer actually starts recording. - Fixed the still picture workaround in case the progress display is active (thanks to Gerald Raaf). - Fixed a problem with accessing the epg.data file before it is fully written (thanks to Thilo Wunderlich for reporting this one). - Now the EPG scan skips channels that have their 'Ca' parameter explicitly set to an other DVB card (suggested by Sergei Haller). - Fixed a possible hangup when reading a broken epg.data file (thanks to Henning Holtschneider for pointing this one out). - Fixed a bug in the editing process in case a previously edited file with the same name was manually deleted on a system with more than one video directory (thanks to Dirk Wiebel for reporting this one). --- dvbapi.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'dvbapi.c') diff --git a/dvbapi.c b/dvbapi.c index d990618..9d59d90 100644 --- a/dvbapi.c +++ b/dvbapi.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.c 1.166 2002/03/29 11:32:47 kls Exp $ + * $Id: dvbapi.c 1.170 2002/04/07 09:35:51 kls Exp $ */ #include "dvbapi.h" @@ -1194,8 +1194,10 @@ void cReplayBuffer::DisplayFrame(uchar *b, int Length) CHECK(ioctl(videoDev, VIDEO_STILLPICTURE, &sp)); #else #define MIN_IFRAME 400000 - for (int i = MIN_IFRAME / Length + 1; i > 0; i--) + for (int i = MIN_IFRAME / Length + 1; i > 0; i--) { safe_write(videoDev, b, Length); + usleep(1); // allows the buffer to be displayed in case the progress display is active + } #endif } @@ -1612,6 +1614,18 @@ bool cVideoCutter::Start(const char *FileName) cRecording Recording(FileName); const char *evn = Recording.PrefixFileName('%'); if (evn && RemoveVideoFile(evn) && MakeDirs(evn, true)) { + // XXX this can be removed once RenameVideoFile() follows symlinks (see videodir.c) + // remove a possible deleted recording with the same name to avoid symlink mixups: + char *s = strdup(evn); + char *e = strrchr(s, '.'); + if (e) { + if (strcmp(e, ".rec") == 0) { + strcpy(e, ".del"); + RemoveVideoFile(s); + } + } + delete s; + // XXX editedVersionName = strdup(evn); Recording.WriteSummary(); cuttingBuffer = new cCuttingBuffer(FileName, editedVersionName); @@ -2803,12 +2817,16 @@ void cEITScanner::Process(void) numTransponders = 0; } cChannel *Channel = Channels.GetByNumber(ch); - if (Channel && Channel->pnr && !TransponderScanned(Channel)) { - if (DvbApi == cDvbApi::PrimaryDvbApi && !currentChannel) - currentChannel = DvbApi->Channel(); - Channel->Switch(DvbApi, false); - lastChannel = ch; - break; + if (Channel) { + if (Channel->ca <= MAXDVBAPI && !DvbApi->ProvidesCa(Channel->ca)) + break; // the channel says it explicitly needs a different card + if (Channel->pnr && !TransponderScanned(Channel)) { + if (DvbApi == cDvbApi::PrimaryDvbApi && !currentChannel) + currentChannel = DvbApi->Channel(); + Channel->Switch(DvbApi, false); + lastChannel = ch; + break; + } } ch++; } -- cgit v1.2.3