mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.3.26
- Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Updated the Finnish OSD texts (thanks to Rolf Ahrenberg). - Fixed handling 'summary.vdr' files with more than two empty lines (thanks to Christian Jacobsen for reporting this one). - Improved resetting CAM connections (thanks to Marco Schlüßler). - Implemented cVideoRepacker in remux.c to make sure every PES packet contains only data from one frame (thanks to Reinhard Nissl). NOTE: currently this doesn't work with MPEG1, so if you use MPEG1 you may want to change line 1158 in remux.c to ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS); as it was before. - EPG events without a title now display "No title" instead of "(null)" (thanks to Rolf Ahrenberg). - A device can now detach all receivers for a given PID, as is necessary, e.g., for the bitstreamout plugin (thanks to Werner Fink). - Added the year (two digits) to recording dates in LSTR, and thus also in menus (suggested by Jan Ekholm). - Fixed the call to Channels.Unlock() in cEITScanner::Process() (thanks to Reinhard Nissl). - Fixed handling timers with a day given as MTWTF--@6, i.e. a repeating timer with first day not as full date, but just day of month (thanks to Henrik Niehaus for reporting this one). - Removed an unnecessary #include from osd.c (thanks to Wolfgang Rohdewald). - Fixed dropping EPG events that have a zero start time or duration, in case it's an NVOD event (thanks to Chris Warren). - Fixed handling page up/down in menu lists in case there are several non selectable items in a row (thanks to Udo Richter for reporting this one). - Added cOsdMenu::SetCols() to allow adjusting the menu columns. - Modified cEITScanner::Process() so that it works on systems with only budget cards or a mix of DVB-S, DVB-C or DVB-T cards.
This commit is contained in:
53
eitscan.c
53
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 1.24 2005/05/05 13:05:00 kls Exp $
|
||||
* $Id: eitscan.c 1.26 2005/06/12 14:09:45 kls Exp $
|
||||
*/
|
||||
|
||||
#include "eitscan.h"
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "channels.h"
|
||||
#include "dvbdevice.h"
|
||||
#include "skins.h"
|
||||
#include "transfer.h"
|
||||
|
||||
// --- cScanData -------------------------------------------------------------
|
||||
|
||||
@@ -139,51 +140,47 @@ void cEITScanner::Process(void)
|
||||
transponderList = NULL;
|
||||
}
|
||||
}
|
||||
for (bool AnyDeviceSwitched = false; !AnyDeviceSwitched; ) {
|
||||
cScanData *ScanData = NULL;
|
||||
for (int i = 0; i < cDevice::NumDevices(); i++) {
|
||||
if (ScanData || (ScanData = scanList->First()) != NULL) {
|
||||
cDevice *Device = cDevice::GetDevice(i);
|
||||
if (Device) {
|
||||
if (Device != cDevice::PrimaryDevice() || (cDevice::NumDevices() == 1 && Setup.EPGScanTimeout && now - lastActivity > Setup.EPGScanTimeout * 3600)) {
|
||||
if (!(Device->Receiving(true) || Device->Replaying())) {
|
||||
const cChannel *Channel = ScanData->GetChannel();
|
||||
if (Channel) {
|
||||
if ((!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= 0x0100) && Device->ProvidesTransponder(Channel)) {
|
||||
if (Device == cDevice::PrimaryDevice() && !currentChannel) {
|
||||
bool AnyDeviceSwitched = false;
|
||||
for (int i = 0; i < cDevice::NumDevices(); i++) {
|
||||
cDevice *Device = cDevice::GetDevice(i);
|
||||
if (Device) {
|
||||
for (cScanData *ScanData = scanList->First(); ScanData; ScanData = scanList->Next(ScanData)) {
|
||||
const cChannel *Channel = ScanData->GetChannel();
|
||||
if (Channel) {
|
||||
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= 0x0100) {
|
||||
if (Device->ProvidesTransponder(Channel)) {
|
||||
if (!Device->Receiving()) {
|
||||
if (Device != cDevice::ActualDevice() || (Device->ProvidesTransponderExclusively(Channel) && Setup.EPGScanTimeout && now - lastActivity > Setup.EPGScanTimeout * 3600)) {
|
||||
if (Device == cDevice::ActualDevice() && !currentChannel) {
|
||||
if (cTransferControl::ReceiverDevice())
|
||||
cDevice::PrimaryDevice()->StopReplay(); // stop transfer mode
|
||||
currentChannel = Device->CurrentChannel();
|
||||
Skins.Message(mtInfo, tr("Starting EPG scan"));
|
||||
}
|
||||
currentDevice = Device;//XXX see also dvbdevice.c!!!
|
||||
//dsyslog("EIT scan: device %d source %-8s tp %5d", Device->DeviceNumber() + 1, *cSource::ToString(Channel->Source()), Channel->Transponder());
|
||||
Device->SwitchChannel(Channel, false);
|
||||
currentDevice = NULL;
|
||||
scanList->Del(ScanData);
|
||||
ScanData = NULL;
|
||||
AnyDeviceSwitched = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
if (ScanData && !AnyDeviceSwitched) {
|
||||
scanList->Del(ScanData);
|
||||
ScanData = NULL;
|
||||
}
|
||||
if (!scanList->Count()) {
|
||||
delete scanList;
|
||||
scanList = NULL;
|
||||
if (lastActivity == 0) // this was a triggered scan
|
||||
Activity();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!scanList->Count() || !AnyDeviceSwitched) {
|
||||
delete scanList;
|
||||
scanList = NULL;
|
||||
if (lastActivity == 0) // this was a triggered scan
|
||||
Activity();
|
||||
}
|
||||
Channels.Unlock();
|
||||
}
|
||||
lastScan = time(NULL);
|
||||
Channels.Unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user