summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY11
-rw-r--r--osdmenu.c20
2 files changed, 21 insertions, 10 deletions
diff --git a/HISTORY b/HISTORY
index da33736..8088f8a 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,11 +1,16 @@
VDR Plugin 'neutrinoepg' Revision History
-2013-04-XX: Version 0.3.2
+2013-04-12: Version 0.3.3
- [Fix] komplette Neuimplementierung der Kanal- und Gruppenbehandlung innerhalb des Plugins.
weniger Speicherverbrauch, schneller, keine SegFaults mehr!
- Es werden die Kanal-Indexe genommen und nicht mehr die Kanal-Nummern.
-- [Fix] Hide Radio Channels Fehler behoben (hatte zuvor zu viele Kanäle gefiltert)
+ Es werden Kanal-Indexe genommen und nicht mehr die Kanal-Nummern.
+- [Fix] Implementierung der Option 'MiddleMenuEntry' komplett Neu.
+ Dadurch effizienter, es werden nicht mehr alle Kanäle durchlaufen wenn die Option gesetzt ist.
+- [Fix] 'HideRadioChannels' Fehler behoben (hatte zuvor zu viele Kanäle gefiltert)
+- [Fix] Die Einstellungen 'HideRadioChannels' & 'HideEncrytedChannels' wurden nur beim
+ Start des Plugins geladen und auf die Anzeige gesetzt. Jetzt bei jeder Änderung.
- [Fix] Fehler behoben beim behandeln der channels.conf (wenn der erste Eintrag keine Kanalgruppe ist)
+- [Fix] Wenn die erste oder letzte Kanalgruppe keine Kanäle hat
- [Fix] kleinere Fehler behoben
- [Fix] Parameter 'switchgroupkey' wurde nicht richtig geladen
- [Fix] Bewegung links/rechts hoch/runter innerhalb der Liste
diff --git a/osdmenu.c b/osdmenu.c
index 39cfb3d..c6aa001 100644
--- a/osdmenu.c
+++ b/osdmenu.c
@@ -76,7 +76,7 @@ myOsdMenu::myOsdMenu() : cOsdMenu("")
LastGroupChannel[i] = -1;
}
}
-
+
// what is the current watching channel?
int CurrentChannelNr = cDevice::CurrentChannel();
cChannel *CurrentChannel = Channels.GetByNumber(CurrentChannelNr);
@@ -90,6 +90,8 @@ myOsdMenu::myOsdMenu() : cOsdMenu("")
CurrentGroup = GetGroupFromChannel( CurrentChannel->Index() );
CurrentGroupChannel[CurrentGroup] = CurrentChannel->Index();
+ //syslog(LOG_ERR, "neutrinoepg: Group %d Channel %d", CurrentGroup, CurrentGroupChannel[CurrentGroup]);
+
for( int Group = 0; Group < MaxGroup; Group++)
{
if( CurrentGroupChannel[Group] == -1 )
@@ -115,6 +117,9 @@ myOsdMenu::~myOsdMenu()
int myOsdMenu::GetGroupIndex(int Group)
{
+ if( Group < 0 )
+ return -1;
+
if( FirstChannelsHasGroup() == false && Group == 0)
return -1;
@@ -176,10 +181,10 @@ int myOsdMenu::GetFirstChannelOfGroup(int Group)
if( !(isRadio && hideradiochannels) && !(Channel->Ca() && hideencryptedchannels) )
return Channel->Index();
- return GetNextChannel( Channel->Index() );
+ return GetNextChannelOfGroup( Channel->Index(), Group );
}
- return GetNextChannel( GetGroupIndex(Group) );
+ return GetNextChannelOfGroup( GetGroupIndex(Group), Group );
}
int myOsdMenu::GetLastChannelOfGroup(int Group)
@@ -187,18 +192,21 @@ int myOsdMenu::GetLastChannelOfGroup(int Group)
int NextGroup = Channels.GetNextGroup( GetGroupIndex(Group) );
// next group -> get prev channel of next group
if( NextGroup != -1 )
- return GetPrevChannel(NextGroup);
+ return GetPrevChannelOfGroup(NextGroup, Group);
else // no next group -> get last channel
{
cChannel *Channel;
Channel = Channels.Last();
if( Channel == NULL )
return -1;
+ if( isChannelInGroup( Channel->Index(), Group ) == false )
+ return -1;
+
bool isRadio = ( (!Channel->Vpid()) && (Channel->Apid(0)) ) ? true : false;
if( !(isRadio && hideradiochannels) && !(Channel->Ca() && hideencryptedchannels) )
return Channel->Index();
- return GetPrevChannel( Channel->Index() );
+ return GetPrevChannelOfGroup( Channel->Index(), Group );
}
}
@@ -718,8 +726,6 @@ eOSState myOsdMenu::ProcessKey(eKeys Key)
}
}
- //syslog(LOG_ERR, "neutrinoepg: left after Group: %d Channel: %d", CurrentGroup, CurrentGroupChannel[CurrentGroup]);
-
if( middlemenuentry ) // if middlemenuentry hack is set do own page up
{
LoadSchedules(0);