skindesigner plugin lässt sich mit vdr-2.5.4 nicht kompilieren

  • Mit VDR größer Version 2.5.2 bekomme ich beim Kompilieren des skindesigner Plugins folgende Fehlermeldung:

    Es sind noch weitere Stellen, aber immer der gleiche Fehler.

    Mit vdr-2.4.6 kommt noch kein Fehler.


    Vermutlich liegt es an der Änderung hier in der recording.h vom vdr in Version 2.5.2:


    Diff
    @@ -150,7 +153,7 @@ public:
            ///< Returns the full path name to the recording directory, including the
            ///< video directory and the actual '*.rec'. For disk file access use.
       const char *Title(char Delimiter = ' ', bool NewIndicator = false, int Level = -1) const;
    -  const cRecordingInfo *Info(void) const { return info; }
    +  cRecordingInfo *Info(void) const { return info; }
       const char *PrefixFileName(char Prefix);
       int HierarchyLevels(void) const;
       void ResetResume(void) const;:q


    Ich hoffe, dass der Patch hier das Ganze korrigiert und auch ein paar falsche "if defined" entfernt:


    Gehäuse: Intertech 4U 4416, Board: Supermicro X11SAE; Kathrein EXIP418; OS: Ubuntu 18.04; Plugins: xineliboutput, satip, burn, femon, live, streamdev-server, text2skin:anthra-1920

    2x RPI2/3; Plugins: rpihddevice; videodir via NFS


  • Warum nicht anstelle von

    Code
    +#if defined (APIVERSNUM) && (APIVERSNUM >= 20502)
    +    cRecordingInfo *info = recording->Info();
    +#else
    +    const cRecordingInfo *info = recording->Info();
    +#endif

    ohne #if (..) #endif

    Code
    const cRecordingInfo *info = dynamic_cast<const cRecordingInfo*>(recording->Info());
  • Warum nicht anstelle von

    Code
    +#if defined (APIVERSNUM) && (APIVERSNUM >= 20502)
    +    cRecordingInfo *info = recording->Info();
    +#else
    +    const cRecordingInfo *info = recording->Info();
    +#endif

    ohne #if (..) #endif

    Code
    const cRecordingInfo *info = dynamic_cast<const cRecordingInfo*>(recording->Info());

    ...weil meine C++ Kenntnisse eher spärlich gesät sind und ich genau das wusste/konnte. Dein Vorschlag kompiliert und scheint zu funktionieren. Danke, hab wieder was gelernt.
    In meiner Version sieht man allerdings aufgrund welcher VDR Version hier etwas angepasst werden musste.

    Wie es am Ende in den Code kommt und für alle nutzbar wird, ist mir ziemlich Schnuppe....

    Gehäuse: Intertech 4U 4416, Board: Supermicro X11SAE; Kathrein EXIP418; OS: Ubuntu 18.04; Plugins: xineliboutput, satip, burn, femon, live, streamdev-server, text2skin:anthra-1920

    2x RPI2/3; Plugins: rpihddevice; videodir via NFS


  • Zitat

    weil meine C++ Kenntnisse eher spärlich gesät sind

    Das ist bei fast allen von uns so.

  • Es sind noch weitere Stellen, aber immer der gleiche Fehler.

    Das ist eine Funktion, die mit VDR-2.5.4 neu eingeführt wurde.

    Bis VDR-2.5.3 sollte es keine Probleme beim Übersetzen geben.


    Die Lösung für dieses Problem gibt es hier:

    [skindesigner] Aktuelle Version


    Grüße

    kamel5

    VDR 2.6.6: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 39 Kernel 6.8 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Das ist eine Funktion, die mit VDR-2.5.4 neu eingeführt wurde.

    Bis VDR-2.5.3 sollte es keine Probleme beim Übersetzen geben.


    Die Lösung für dieses Problem gibt es hier:

    [skindesigner] Aktuelle Version



    Ich hab mir das diff aus obigem Thread angesehen und verstehe nicht, warum ihr das so gelöst habt.
    Wenn ich das richtig sehe, dann wird "cRecordingInfo" nur nicht mehr als "const" deklariert seit Version 2.5.2.

    siehe "git diff 2.5.1 2.5.2 recording.h":

    Wie schon gesagt, meine C++ Kenntnissen sind nicht so prall. Deswegen möchte ich gern verstehen, warum ihr die "int Error" declaration in recordings.h patched habt, anstatt der eigentlichen Stelle mit "const cRecordingInfo *info = recording->Info();" im Plugin? Obendrein habt ihr noch den Aufruf "errors = info->Errors();" mit nem precompiler "#if" versehen?. Warum das?


    Grüße

    Jarod

    Gehäuse: Intertech 4U 4416, Board: Supermicro X11SAE; Kathrein EXIP418; OS: Ubuntu 18.04; Plugins: xineliboutput, satip, burn, femon, live, streamdev-server, text2skin:anthra-1920

    2x RPI2/3; Plugins: rpihddevice; videodir via NFS


  • Wenn ich das richtig sehe, dann wird "cRecordingInfo" nur nicht mehr als "const" deklariert seit Version 2.5.2.

    Das ist aber nicht das Problem, um das es hier geht. Deshalb scheitert das Übersetzen nicht.


    Das Problem, um das es hier geht befindet sich in dieser Zeile:


    int Errors(void) const { return errors; }


    Es fehlt einfach das "const" in der Mitte.

    Warum also nicht einfach ein "cRecordingInfo" ohne const? Weil dann in allen Skins, die das "Errors()" nutzen wollen, das "const cRecordingInfo" geändert werden müsste.


    Hier [skindesigner] Aktuelle Version habe ich dazu den letzten Stand geschrieben.

    Wenn Du also den letzten Git-Stand vom Plugin benutzt, sollte es sowohl mit als auch ohne Patch funktionieren.


    Grüße

    kamel5

    VDR 2.6.6: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 39 Kernel 6.8 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Warum also nicht einfach ein "cRecordingInfo" ohne const? Weil dann in allen Skins, die das "Errors()" nutzen wollen, das "const cRecordingInfo" geändert werden müsste.

    Jetzt hassu mich abgehängt... Bestehen die Skins nicht ausschließlich aus XML und SVG/PNG Files? Gibt es auch welche, die ihren eigenen C++-Code mitbringen? Hast du mal ein Beispiel, an dem ich sehen kann, wo etwas anzupassen wäre?

    Gehäuse: Intertech 4U 4416, Board: Supermicro X11SAE; Kathrein EXIP418; OS: Ubuntu 18.04; Plugins: xineliboutput, satip, burn, femon, live, streamdev-server, text2skin:anthra-1920

    2x RPI2/3; Plugins: rpihddevice; videodir via NFS


  • Vergiss meine Frage... Wer lesen kann ist klar im Vorteil. Hab die Doku hier gefunden.

    Gehäuse: Intertech 4U 4416, Board: Supermicro X11SAE; Kathrein EXIP418; OS: Ubuntu 18.04; Plugins: xineliboutput, satip, burn, femon, live, streamdev-server, text2skin:anthra-1920

    2x RPI2/3; Plugins: rpihddevice; videodir via NFS


Jetzt mitmachen!

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