Ab wann (nach Start des VDR) kann ein Plugin OSD Meldungen ausgeben?

  • Hi,

    das Plugin dynamite wartet zur Zeit bis zum ersten Aufruf von MainThreadHook, bevor OSD Meldungen ausgegeben werden.

    Kann man das anders lösen? Bzw, worauf sollte ein Plugin vor der Ausgabe der ersten OSD Meldung warten?

    ~Markus

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • War es jemals definiert, wann ein Plugin Meldungen senden darf? Und warum sollte ein Plugin so mit Meldungen um sich werfen?

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Auf jeden Fall nicht vor dem Aufruf von cPlugin::Start().

    Eventuell könnte man auch auf den ersten Aufruf von cPlugin::Housekeeping() warten.

    Falls das wirklich eine kritische Info ist (wobei ich die zweite Frage von wirbel durchaus für gerechtfertigt halte), könnte ich mir auch vorstellen, eine neue Funktion cPlugin::Ready() (Name nur als Vorschlag) zu machen, die unmittelbar vor der Hauptschleife einmalig aufgerufen wird (aber nur im äußersten Notfall, falls es wirklich nicht anders geht).

  • Die Frage von Markus war sicherlich, wie man den Aufruf von MainThreadHook in dynamite durch neue Lösungen ersetzt.

    Eine halbwegs sinnvolle Möglichkeit wäre einen Timer von 30 sec zu starten, sobald cPlugin::Start() aufgerufen wird. Nach 30 sec sind spätestens alle Plugins durch mit starten. Natürlich nicht absolut schuss-sicher. Tendenziell würde ich ja auf einen solchen Check eher ganz verzichten..

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Was passiert denn, wenn ein Plugin

    Quote

    Skins.QueueMessage(mtInfo, *osdMsg);

    zu früh aufruft?

    Wird das dann einfach ignoriert (also es passiert nichts) oder gibt es Probleme (VDR bleibt stehen, stürzt ab, ...)?

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • > dass nichts passiert.

    Dann würde ich dynamite so ändern, dass nach

    Code
    cPlugin::Start().

    OSD Meldungen ausgegeben werden (also Skins.QueueMessage() aufgerufen wird). Wenn diese Meldungen dann einfach nicht erscheinen, ist das kein Problem. Falls es doch Probleme gibt, müssen wir dafür eben eine Lösung finden.

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Ich glaube sogar, dass sich andere Plugins gar nicht darum kümmern.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • cPlugin::Housekeeping() wird bei mir nur nach Inactivity-Timeout aufgerufen, sonst nie (auch nicht beim normalen Runterfahren nach HITK Power).

    cPlugin::Ready() würde für epgsearch und m.E. auch für alle softhddevice-Varianten reichen (bis auf X11-Ready), weil nur auf den ersten Aufruf von MainThreadHook() gewartet wird. Bei epgsearch, um sicher zu sein, dass vdr READY ist und svdrpsend funktioniert. Ich hatte schon eine konfigurierbare Zeitverzögerung eingebaut, damit nicht gleich der erste Suchtimer-Thread losläuft, aber diese Zeit nach dem Plugin::Start() laufen zu lassen, gefällt mir weniger.

    Ich habe aber eine Reihe Plugins gefunden, die duch MainThreadHook() jede Sekunde eine Statusüberprüfung machen (dbus2vdr, restfulapi, web, graphtftng,...) . Dafür einen eigenen Thread laufen zu lassen, der immer wieder eine Sekunde schläft, ist auf jeden Fall Aufwand.

    vdr-2.7.3

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver

    ubuntu focal, yavdr-ansible, linux-5.15 ,AsRock J4105, CIne CT-V7 DVB-C

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!