betonme / e2openplugin-EnhancedMovieCenter

EMC is an enhanced movielist replacement for Linux based receivers.
36 stars 61 forks source link

[MovieSelection.py] showEventInformation - Absturz wenn Verzeichnis gewählt #271

Open QuarkFermion opened 4 years ago

QuarkFermion commented 4 years ago

Wenn in der MovieSelection die Auswahl auf einem Verzeichnis steht und man ruft über die Info-Taste die Event-Informationen auf, so stürzt EMC ab, eine Bedienung der Box ist nicht mehr möglich und man muss einen Reboot durchführen.

Wenn das versehentlich passiert ist das sehr unangenehm.

Ich habe meine MovieSelection.py geändert und or self["list"].currentSelIsDirectory() hinzugefügt, so dass in diesem Fall nichts passiert, sobald ein Verzeichnis gewählt wurde.

    def showEventInformation(self):
        from ServiceReference import ServiceReference

        # Get our customized event
        # first we check if the first entry is "..", securitly for possible BSOD on openXTA-image
        try:
            if self["list"].getCurrentSelDir().endswith("/..") or self["list"].currentSelIsDirectory():
                pass
            else:

Mein System: VUDuo4K, OpenPLI 7.2 (aktuell), EMC git20191219

Swiss-MAD commented 4 years ago

Das liegt am OpenXXX Image. Unter DreamOS funktioniert das wie es soll, und der Pfad wird in der Info angezeigt.

dhwz commented 4 years ago

Wundert mich dass es überhaupt crasht weil es schon in einem try, except hängt. Aber ich hab ja auch schon in der Vergangenheit angedroht keine Frickeleien mehr für Fremdimages einzubauen...

QuarkFermion commented 4 years ago

Danke für die schnellen Antworten, ich habe die Situation nun verstanden.

Nur noch eine Anmerkung, falls jemand hierauf stößt.

Meine Änderung für OpenPLi scheitert noch für den Papierkorb, es erfolgt noch immer ein Absturz.

Mangels besserer Informationen habe ich self["list"].currentSelIsPlayable() verwendet, um einen Absturz zu vermeiden. Sicherlich nicht elegant und man könnte die erste Prüfung damit auch weg lassen, aber für meine Zwecke ok, um einen versehentlichen Absturz von EMC unter OpenPLi zu vermeiden.


    def showEventInformation(self):
        from ServiceReference import ServiceReference

        # Get our customized event
        # first we check if the first entry is "..", securitly for possible BSOD on openXTA-image
        try:
            if self["list"].getCurrentSelDir().endswith("/..") or not self["list"].currentSelIsPlayable():
                pass
            else:
                evt = self["list"].getCurrentEvent()