Plugin Cleanup Function Aufruf bei Shutdown

  • gibt es eigentlich die moeglichkeit, eine funktion eines selbst gebasteltes plugins aufrufen zu lassen, wenn/bevor die box runterfaehrt?
    danke.

  • Ja, klar geht das.


    siehe z.B. im EPGRefresh:

    Gruss
    Dre


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

  • Meine Erwartungshaltung ist schon, dass man das dann kurz selbst nachschauen kann.

    Gruss
    Dre


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

  • so weit, so gut.. :winking_face:

    jetzt habe ich versucht, den enigma2 shut "zu unterbrechen" bis ein thread im hintergrund fertig ist, aber irgendwie scheint e2 den thread einfach zu stoppen und den shutdown fortzusetzen.

    fuer einen tipp waere ich dankbar.

  • Entweder die TryQuitMainloop in deinen Code umbiegen und nach deiner Prüfung dann wieder an die originale TryQuitMainloop weiterleiten.


    Wobei, wenn man sich den Code der TryQuitMainloop anschaut, gibt es da eine job-Verwaltung, wo geprüft wird, ob noch offene Jobs vorhanden sind.


    jobs = len(job_manager.getPendingJobs())

    Code
                   if jobs:
                              if jobs == 1:
                                     job = job_manager.getPendingJobs()[0]
                                     reason += "%s: %s (%d%%)\n" % (job.getStatustext(), job.name, int(100*job.progress/float(job.end)))
                              else:
                                     reason += (_("%d jobs are running in the background!") % jobs) + '\n'

    Vielleicht kannst du ja den Thread beim Start im Job-Manager hinterlegen und beim Ende wieder rausnehmen.

    Dann geht das mit der Meldung zu dem Thread vermutlich automatisch.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • danke fuer den tipp. denke, es macht sogar sinn, dass ich statt einen extra thread zu implementieren, den job_manager direkt nutze. im browser gibt es einen downloadmanager, der den job_manager verwendet und iin etwa so funktioniert wie das, was ich eigentlich mit dem thread implementieren wollte.

  • das mit dem job manager funktioniert prima. beim power-off wird die message angezeigt... und wenn man sie so stehen laesst, dann schaltet sich die box aus, wenn die jobs fertig sind. genau so, wie ich es wollte. :smiling_face:

    danke nochmal fuer den tipp.

  • das funktioniert prima. allerdings habe ich jetzt die originale ../Screens/Standby.py geaendert... und das ist ja nicht update sicher. d.h. nach jedem update muss ich die datei wieder ueberschreiben.

    kann ich eigentlich die class TryQuitMainloop irgendwie im plugin überschreiben, sodass das ganze upgrades ueberlebt? danke.

  • Hab es nur mal auf die Schnelle probiert :winking_face:


    Die geänderte Standby.py als myStandby.py in deinen Plugin-Ordner legen.

    Den nachfolgenden Code irgendwo in die plugin.py deines Plugins (ganz links ohne Einrückung).

    Python
    #replace Standby.TryQuitMainloop ========================
    from Screens import Standby
    import myStandby
    Standby.TryQuitMainloop = myStandby.TryQuitMainloop
    #========================================================

    Nutzung auf eigene Gefahr :smiling_face_with_sunglasses: (für den privaten Gebrauch bestimmt nutzbar)

    Das Überschreiben von Klassen/Methoden kann auch nach hinten losgehen, wenn mehrere Plugins das gleiche vorhaben.

    Dann gewinnt meist ein Plugin und das andere geht leer aus.


    Falls es bessere Lösungen gibt, bin ich daran natürlich auch interessiert :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP