En/na lukkinosat ha escrit:
Hello
On site http://www.kikko77.altervista.org/ in the
section download, is available the new version of
LoadEPG.
History:
2007-07-26: Version 0.1.11
- Fixed for new format epg of Digital+ (S19.2E Spain)
Since vdr 1.5.x changed the numbering of the cards if there are
softdevices, I changed it to look for the card using the CardIndex
(patch attached, in case you want to take a look), but it doesn't work
anyway: it switches to the transponder with the epg, then it switches
back instantly to the previous one, so it obviously doesn't get any data.
If I change the function cLoadepgOsd::SwitchToEpgChannel (and only that
function) to use cDevice::PrimaryDevice() to do the switching then
everything works as expected (well, special characters show up as little
squares in accents in the epg, but I'll look into that).
Bye
--
Luca
diff --unified --recursive --exclude='*.o' --exclude='*~' loadepg-0.1.11.orig/loadepg.c loadepg-0.1.11/loadepg.c
--- loadepg-0.1.11.orig/loadepg.c 2007-07-26 18:32:05.0 +0200
+++ loadepg-0.1.11/loadepg.c 2007-07-26 19:55:16.36301 +0200
@@ -936,6 +936,10 @@
Timeout = 0;
LoadepgConfig.OldUpdateChannels = Setup.UpdateChannels;
Setup.UpdateChannels = 0;
+EpgDevice=NULL;
+for (int i=0; iCardIndex()==LoadepgConfig.DeviceNumber -1)
+EpgDevice=cDevice::GetDevice(i);
}
cLoadepgOsd::~cLoadepgOsd( void )
@@ -947,7 +951,7 @@
Setup.UpdateChannels = LoadepgConfig.OldUpdateChannels;
if( Filter )
{
-cDevice::GetDevice( LoadepgConfig.DeviceNumber - 1 )->Detach( Filter );
+EpgDevice->Detach( Filter );
delete Filter;
}
if( Osd )
@@ -967,7 +971,7 @@
if( SwitchToEpgChannel() )
{
Filter = new cLoadepgFilter();
- cDevice::GetDevice( LoadepgConfig.DeviceNumber - 1 )->AttachFilter( Filter );
+ EpgDevice->AttachFilter( Filter );
}
else
{
@@ -1009,6 +1013,7 @@
void cLoadepgOsd::Show( void )
{
+if ( EpgDevice == NULL) return;
Osd = cOsdProvider::NewOsd( 160, 88 );
if( Osd )
{
@@ -1026,7 +1031,8 @@
bool cLoadepgOsd::SaveOldChannel( void )
{
-OldChannel = Channels.GetByNumber( cDevice::GetDevice( LoadepgConfig.DeviceNumber - 1 )->CurrentChannel() );
+if (EpgDevice == NULL) return false;
+OldChannel = Channels.GetByNumber( EpgDevice->CurrentChannel() );
if( OldChannel )
{
return true;
@@ -1038,7 +1044,7 @@
{
if( OldChannel )
{
- cDevice::GetDevice( LoadepgConfig.DeviceNumber - 1 )->SwitchChannel( OldChannel, true );
+ EpgDevice->SwitchChannel( OldChannel, true );
}
}
@@ -1055,9 +1061,9 @@
*EpgChannel = *OldChannel;
sscanf( EpgProviderValue1[MenuItem], "%[^:]:%[^:]:%[^:]:%[^:]:%[^:]", ProviderName, Frequency, Polarization, SourceName, SymbolRate );
EpgChannel->cChannel::SetSatTransponderData( cSource::FromString( SourceName ), atoi( Frequency ), Polarization[0], atoi( SymbolRate ), FEC_AUTO );
- cDevice::GetDevice( LoadepgConfig.DeviceNumber - 1 )->SwitchChannel( EpgChannel, true );
+ EpgDevice->SwitchChannel( EpgChannel, true );
usleep( 200 );
- if( cDevice::GetDevice( LoadepgConfig.DeviceNumber - 1 )->HasLock() )
+ if( EpgDevice->HasLock() )
{
return true;
}
@@ -1071,6 +1077,10 @@
eOSState cLoadepgOsd::ProcessKey( eKeys Key )
{
+if (EpgDevice == NULL ) {
+ Skins.Message(mtError,tr("Card not available"));
+ return osEnd;
+}
eOSState state = cOsdObject::ProcessKey( Key );
StatusKey = 0;
if( state == osUnknown )
diff --unified --recursive --exclude='*.o' --exclude='*~' loadepg-0.1.11.orig/loadepg.h loadepg-0.1.11/loadepg.h
--- loadepg-0.1.11.orig/loadepg.h 2007-07-26 18:32:23.0 +0200
+++ loadepg-0.1.11/loadepg.h 2007-07-26 19:41:09.43301 +0200
@@ -380,6 +380,7 @@
cLoadepgFilter *Filter;
cChannel *OldChannel;
cChannel *EpgChannel;
+ cDevice *EpgDevice;
int Margin;
int StatusKey;
int Padding;
___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr