From patchwork Thu Jul 26 18:12:00 2007 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Olivetti X-Patchwork-Id: 12493 Received: from 61.pool85-52-226.static.orange.es ([85.52.226.61] helo=ventoso.org) by www.linuxtv.org with esmtp (Exim 4.63) (envelope-from ) id 1IE7pP-0001eE-7x for vdr@linuxtv.org; Thu, 26 Jul 2007 20:12:47 +0200 Received: from [192.168.10.30] (unknown [192.168.10.30]) by ventoso.org (Postfix) with ESMTP id 2C509C44C0A for ; Thu, 26 Jul 2007 20:12:14 +0200 (CEST) Message-ID: <46A8E3F0.6020101@ventoso.org> Date: Thu, 26 Jul 2007 20:12:00 +0200 From: Luca Olivetti User-Agent: Thunderbird 2.0.0.4 (X11/20070620) MIME-Version: 1.0 To: VDR Mailing List References: <276534.2527.qm@web34810.mail.mud.yahoo.com> In-Reply-To: <276534.2527.qm@web34810.mail.mud.yahoo.com> Subject: Re: [vdr] Announce LoadEPG 0.1.11 X-BeenThere: vdr@linuxtv.org X-Mailman-Version: 2.1.9 Precedence: list Reply-To: VDR Mailing List List-Id: VDR Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jul 2007 18:12:47 -0000 Status: O X-Status: X-Keywords: X-UID: 13594 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 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; 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( 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;