CI-Zuweisung kollidiert mit Kanallisten Anzeige Einstellung

  • innerhalb der Kanalliste


    Aus der CI-Zuweisung kann man die Kanallisten Anzeige Einstellung nicht aufrufen


    Das es da abhängigeiten gibt sieht man ja auch daran, das Änderungen in der Kanallisten Anzeige Einstellung auch Auswirkung auf die CI-Zuweisung haben.

    DM 920 UHD sss :smiling_face_with_heart_eyes:

  • Durch die nutzung der serviceliste im plugin geht irgendwie mode verloren. Ich denke, der fehler ist eher im plugin als in der kanalliste selbst. Dort wirkt es sich einfach aus.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Ich habe mich heute mit dem Problem befasst. Vorweg: Der Crash lässt sich mit jedem Plugin provozieren, welches eine Senderauswahl via ServiceList beinhaltet (z.B. PiPServiceRelation, AutoTimer).


    Hier nochmal die Schritte, wie der Crash provoziert werden kann (Danke an Arki):

    Code
    in der CI zuweisung zB. Taste grün "Service hinzufügen" -> ein Bouquet öffnen, so das die Kanalliste erscheint 
    - mit Exit - Exit ... zurück bis zum TV Bild
    - Kanalliste mit zB. Taste TV öffnen
    - dann Taste Menü -> Kanallisten Anzeige Einstellungen
    - dann versucht -> Picon Pfad zu änder -> crash (Dre: der Crash tritt erst auf, wenn von 50x30 auf 100x60 picons gewechselt wird in der Config)
    - nach dem fälligen reboot kann man den Pfad dann ändern


    In einem ersten Schritt hab ich den Code in ServiceList.py wie folgt angepasst:


    Dann komme ich zwar über das if hinweg, es crasht jedoch bei


    Code
    self.l.setItemHeight(60)


    Fehlermeldung:

    Code
    AttributeError: 'ServiceList' object has no attribute 'l'


    D.h. hier wird wohl was beim Beenden der Plugins abgeräumt, was nicht abgeräumt werden sollte.


    Ich kann den Crash umgehen, wenn ich den Code wie folgt anpasse:


    Ich mache also nochmal ein __init__() der ServiceList. Dies sollte doch anders zu lösen sein? Das try/except-Konstrukt ist ebenfalls sehr hässlich.


    Wie oben geschrieben, glaube ich, dass beim Beenden des Plugins etwas zu viel abgeräumt wird.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Hier nochmal das Vorgehen (hier am Beispiel von PiPServiceRelation):
    Menu > Erweiterungen > Setup PipServiceRelation > Gelbe Taste > OK > OK > Exit > Exit > Exit > Exit > Exit (dann bist du wieder raus aus allen Menüs) > Pfeil nach oben Taste > Menu > Kanallisten Anzeige Einstellungen selektieren > OK > Zeige Picons auf Ja stellen > Picon Pfad solange ändern, bis der Ordner von picon_50x30 auf picon wechselt. Dann crasht es.


    picon sind dann die 100x60.


    Es gibt zwei Einstellungen in den Kanallisten Anzeige Einstellungen, die den Crash provozieren:
    - Zeige Picons auf Ja stellen und dann von /usr/share/enigma2/picon_50x30 auf /usr/share/enigma2/picon wechseln. Zum Crash kommt es erst, wenn der Ordner von picon_50x30 auf picon wechselt. Das sind dann die 100x60 picons.
    - Spalten Stil auf Ja stellen und dann 2te Zeile Informationen ändern

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Hm, hab aber grad die .py aus dem oe angeschaut. Hat auch 50x30 und 100x60. Weiss jetzt grad nicht, ob /usr/share/enigma2, aber der pfad ist ja egal. Der crash geschieht beim übergang von bigpicons von False auf True

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • auf der 7080 das neuste image via online recovery geflasht, aktualisiert und es crasht tatsächlich nicht. dann muss ich mal unsere ServiceList.py mit eurer vergleichen. So viel kann da ja nicht unterschiedlich sein.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Hm, ich habs einfach auf der 7080 getestet.


    Aber wenn du es mit oe2.0 auch hast, dann bin ich beruhigt. Somit mal die unterschiede anschauen.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Bin grad unterwegs, aber ich glaub, ich weiss, warum es bei der 7080 nicht crasht: es steht nur ein pfad zur verfügung (/usr/share/enigma2). Daher ist die bedingung >2 nie erfüllt (die kanalliste wäre aber auch nicht korrekt in der darstellung). Ich prüfe das nachher noch kurz.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • dm7080:
    UsageConfig.py:

    Code
    config.usage.configselection_piconspath = ConfigSelection(default = eEnv.resolve('${datadir}/enigma2/picon_50x30/'), choices = [
    				(eEnv.resolve('${datadir}/enigma2/picon_50x30/'), eEnv.resolve('${datadir}/enigma2/picon_50x30')),
    				(eEnv.resolve('${datadir}/enigma2/picon/'), eEnv.resolve('${datadir}/enigma2/picon')),
    				])


    ChannelSelectionDisplaySettings.py:


    Somit haben wir wie erwartet eine fehlerhafte Darstellung:



    Wenn ich if self.piconpath.getIndex() > 2 auf > 0 ändere, dann passt die Darstellung wieder.



    und wenn ich nun von /usr/share/enigma2/picon_50x30 auf /usr/share/enigma2/picon wechsle, gibt es den bekannten crash.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

    • Offizieller Beitrag

    Hi,


    ich habs gefixt....


    für die, die es interessiert:

    Diff
    --- a/lib/python/Components/ServiceList.py
    +++ b/lib/python/Components/ServiceList.py
    @@ -579,6 +579,7 @@ class ServiceList(HTMLComponent, GUIComponent):
                    instance.setContent(None)
                    instance.selectionChanged.get().remove(self.selectionChanged)
                    config.usage.configselection_showrecordings.removeNotifier(self.getRecordingList)
    +               config.usage.configselection_bigpicons.removeNotifier(self.setItemHeight)
     
            def getRoot(self):
                    return self.root


    cya