Mehrere Instanzen für ein Plugin zulassen???

  • Hallo,


    derzeit benutze ich einige Devices zum Steuern des VDR.
    z.B.
    serial -> Limit an Tasten = 15
    powermate -> Limit an events = 6
    touchtft -> Limit an Touchtfts =1 (OK - das Beispiel ist evtl. zu akademisch)


    Meine Frage/ Anregung läßt sich sicherlich noch allgemeiner fassen:


    Gibt es derzeit Überlegungen, Plugins in mehreren Instanzen durch den vdr zuzulassen? Das hätte zur Folge, dass man z.B mit zwei Griffins (powermate) 2x6 Events benutzen könnte, um den VDR zu steuern. Mit zwei serial Instanzen (COM1 und COM2) könnte man 30 Taster benutzen usw. usw. Die beiden genannten Plugins sollen wiklich nur als Beispiele dienen. (Mit einigem Basteln könnte ich schon irgendwie 2x Griffin zum Laufen bekommen - das währe aber nicht sauber implementiert und nicht allgemein anwendbar.)


    Ich bin der Meinung, dass diese Frage einfacher klingt, als die Implementierung im VDR wiklich sein würde.


    Was meint Ihr zu dieser Überlegung ?


    Gruß Frank
    :portal1

  • Technisch spricht schon jetzt nichts dagegen, ein Plugin zwei mal zu laden. VDR kommt damit gut zurecht.


    Ob ein Plugin mit dieser Doppel-Existenz zurecht kommt (beide Plugins verwenden gemeinsame globale Variablen), und ob es gelingt, beide Plugins eine unterschiedliche Konfiguration mit zu geben, hängt dagegen davon ab, ob das Plugin dementsprechend geschrieben wurde.


    Gruß,


    Udo

  • Ich habe u.a. mal an die setup.conf/ remotes.conf gedacht. Wenn man z.B Plugin serial zwei mal startet, dann braucht man auch zwei Sets an serial-Konfiguration. Eventuell könnte man (in der Kopie) des betroffenen Plugins einen anderen Plugin-Namen vergeben und die settings bzgl. setup.conf ändern - Aus meiner Sicht währe das aber wilde Bastelei. Ich habe eher an eine generelle Unterstützung von mehreren Instanzen durch vdr gedacht.


    Gruß Frank

  • Hallo,


    dann oute ich mich mal als wilder Bastler:-)


    Ich habe zweimal das remoteosd-plugin laufen, um von einem VDR auf zwei Server zugreifen zu können. Vom Prinzip her hab ich das so gemacht, wie du es beschrieben hast.
    Eine Kopie der remoteosd.so...mit anderem Namen im Pluginverzeichnis abgelegt und den Pluginaufruf in den Startbefehl für VDR eingefügt. Die Kopie lässt sich dann getrennt über das OSD konfigurieren und die Einstellungen erscheinen auch mit eigenem Namen in der setup.conf.
    Einziger Nachteil bisher ist, dass ich im Menü des VDR zweimal den Eintrag "Server Menü" habe. Hab schon versucht das Problem zu umgehen, indem ich vor einem zweiten Kompilieren des Plugins in der i18n.c einfach die deutsche Übersetzung für den Hauptmenüeintrag geändert habe. Das hat aber nichts gebracht. In der remoteosd.so... erscheint zwar der geänderte Eintrag, aber im Menü des VDR wird trotzdem der Eintrag der zuerst geladenen "pluginversion" für beide angezeigt.


    Ansonsten funktioniert die Sache zumindest beim remoteosd-plugin einwandfrei.


    Gruß tomas

  • Zitat

    Einziger Nachteil bisher ist, dass ich im Menü des VDR zweimal den Eintrag "Server Menü" habe. Hab schon versucht das Problem zu umgehen, indem ich vor einem zweiten Kompilieren des Plugins in der i18n.c einfach die deutsche Übersetzung für den Hauptmenüeintrag geändert habe. Das hat aber nichts gebracht. In der remoteosd.so... erscheint zwar der geänderte Eintrag, aber im Menü des VDR wird trotzdem der Eintrag der zuerst geladenen "pluginversion" für beide angezeigt.


    Damit Du verschiedene Texte bekommst, müsstest Du das Plugin umbennenen. Angenommen es soll remoteosd2 heißen, dann im Sourcen-Verzeichnis das Makefile ändern:

    Code
    PLUGIN = remoteosd2


    und die "Haupt-Datei" umbenennen:

    Code
    mv remoteosd.c remoteosd2.c
  • Oh, ich kenne mindestens ein Plugin das globale Variablen benutzt ;)


    Aber globale Variablen sollten kein Problem für das mehrmalige Laden von Plugins sein, die Plugins werden nämlich mit der "RTLD_LOCAL" Option geladen, d.h. die Symbole eines Plugins sind nur genau für diese Instanz des Plugin erreichbar. Das kann man in der Man-Page von dlopen nachlesen...


    Tschüss,


    Martin

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!