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.000000000 +0200 +++ loadepg-0.1.11/loadepg.c 2007-07-26 19:55:16.363010000 +0200 @@ -936,6 +936,10 @@ Timeout = 0; LoadepgConfig.OldUpdateChannels = Setup.UpdateChannels; Setup.UpdateChannels = 0; + EpgDevice=NULL; + for (int i=0; i<cDevice::NumDevices() && EpgDevice==NULL; i++) + if (cDevice::GetDevice(i)->CardIndex()==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( 2000000 ); - 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.000000000 +0200 +++ loadepg-0.1.11/loadepg.h 2007-07-26 19:41:09.433010000 +0200 @@ -380,6 +380,7 @@ cLoadepgFilter *Filter; cChannel *OldChannel; cChannel *EpgChannel; + cDevice *EpgDevice; int Margin; int StatusKey; int Padding;
_______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr