epgsearch für vdr 2.3.x

  • Moin!


    Es gibt jetzt ein kompilierendes epgsearch hier im Branch vdr-2.3.1:
    https://github.com/flensrocker…-epgsearch/tree/vdr-2.3.1


    Manch einer würde sagen, "ich erwarte nicht, dass es funktioniert", aber ich erwarte, dass es nicht funktioniert... :)
    In dem Plugin wird quasi überall mit Pointer auf cTimer, cChannel und cEvent gearbeitet, ohne ein komplettes Überarbeiten mit Wissen über die interne Struktur des Plugins wäre es für mich einfacher, ein neues Plugin zu schreiben, das nur das kann, was ich von epgsearch brauche.


    Wer auch immer will, darf an dieser Stelle übernehmen und weitermachen...


    Edit: Ich merke gerade, dass es nicht mehr mit vdr 2.2.x kompiliert, da muss ich noch etwas nachbessern...
    Edit 2: Done.


    Lars.

  • Ist doch schon mal viel Wert. Respekt :tup


    Ich werds ASAP testen.


    Hast du eine Idee, warum mir Eclipse CDT bei dem Plugin jede Zeile als falsch markiert? Bei Restfulapi habe ich das Problem nicht, wohl aber bei fast allen anderen Plugins und auch vdr selbst.

    Grüße


    Hannemann

  • Keine Ahnung, ich arbeite nur mit einem normalen Texteditor ohne Kringel und Zeugs. :)


    Ich sehe mir bei einem make einfach den ersten Fehler an und behebe ihn.


    Lars

  • Obelix drückt Nägel mit dem Finger in die Wand. Ich muss nen Hammer benutzen. ;)


    Letztendlich hab ich Restfulapi auch so debugged aber eine IDE ist doch bequemer. Breakpoints wären super.


    Nachdem ich in Eclipse für Epgsearch eingestellt habe, das *.c C++ Files sind sieht es schon besser aus. Jetzt findet er ein paar Includes nicht <vector> und <string> z.B. Mal sehen wie ich das gefixed kriege.

    Grüße


    Hannemann

  • Mit dem Compilieren ist es leider nicht getan.


    Wenn z.B. in cMenuSearchResults::Record ein Timer-Write-Lock gehalten wird und dort nach Erzeugen eines neuen Timers Update() aufgerufen wird,
    ist in dieser Routine die Variable Timers wieder nicht bekannt, vor allem liefert dort dann ein LOCK_TIMERS_READ einen NULL-Wert zurück, da man selbst den Write-Lock hält.
    Man müsste vielleicht wie früher mit einem globalen Timer-Wert arbeiten und dann einzelne Locks setzen?? Oder sollte Timers an alle Subroutinen übergeben werden?
    Muss nach jedem LOCK...READ oder LOCK..WRITE der erhaltene Pointer überprüft werden und wie reagiert man dann sinnvoll?

    vdr-2.3.8
    softhddevice, chanman, dbus2vdr, dvd, dvdswitch, dynamite, epgsearch, femon, filebrowser, graphlcd, graphtftng,
    menuorg, osdteletext, radio, recsearch, streamdev-server, tvguide, vdrmanager, vnsiserver

    linux-3.13.0-129 M3N78-VM (Nvidia 8200) CIne CT-V7 DVB-C
    yavdr-0.6 als Basis mit vielen Änderungen

  • Das ist genau das, was ich meinte.


    Die Funktionen müssen analysiert werden und Subfunktionen müssen schon die passend gelockte Timer-Liste übergeben bekommen. Aber dazu ist mir das Ding viel zu komplex, als dass ich da so viel Zeit investieren könnte, um das alles gerade zu ziehen.


    Eher würde ich mir ein eigenes Plugin bauen, das nur eine einfache Suche kann, und den Aufnahmetitel mit Tags aus dem EPG aufwerten kann. Dazu noch bei Serien einen "ab Staffel"-Filter und fertig.


    epgsearch ist ein tolles Plugin, das ich intensiv nutze. Aber für meine Zwecke leider etwas zu überladen. Der Stand ist auch eher für die Leute gedacht, die da jetzt weiterarbeiten wollen und sich nicht mehr um die ganzen kleinen Stellen kümmern müssen, die harmlos sind.


    Lars.

  • naja die next now else Menus sind schon relevant, Favoritensuche, Umschalttimer.... wenn du das drin hast bin ich komplett bei dir


    das was du schreibst kann man genauso gut mit epgd im Web machen, für mich sind eher die client Funktionalitäten relevant um auf epgsearch zu verzichten.


    Christian

     CKone: yavdr 0.6.1/2.3.8 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 700, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr 0.6.1/2.3.8 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 700, atric USB
    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.3.8 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, Digital Devices MaxS8, Samsung 840 EVO 120GB, 3x WD Red WD30EFRX 3TB in SW Raid5

  • naja die next now else Menus sind schon relevant, Favoritensuche, Umschalttimer....


    Die was? :) Hab ich noch nie genutzt...


    Ich bin ja kein live-Gucker, sondern reiner Aufnahmen-Gucker.
    Aber genug Off-Topic.


    Lars.

  • Falls kein eigener thread für epgsearch folgen soll, hier erstmal für das von mir beschriebene Problem ein Patch. Damit läuft eigentlich schon eine ganze Menge

    Dateien

    vdr-2.3.8
    softhddevice, chanman, dbus2vdr, dvd, dvdswitch, dynamite, epgsearch, femon, filebrowser, graphlcd, graphtftng,
    menuorg, osdteletext, radio, recsearch, streamdev-server, tvguide, vdrmanager, vnsiserver

    linux-3.13.0-129 M3N78-VM (Nvidia 8200) CIne CT-V7 DVB-C
    yavdr-0.6 als Basis mit vielen Änderungen

  • Prima, danke. Vermutlich würde ich es aber so machen, dass die Signatur der Funktion auch für ältere vdr Version angepasst wird, stört da ja nicht und macht es leserlicher.


    Ich werde es mal in mein git übernehmen.


    Lars

  • Nur mal ohne tieferes Wissen in die Runde geworfen: Warum müssen sich überhaupt die Plugins um die ganzen Locks kümmern?


    Hätte man das nicht alles in die API bauen können? Also wenn ich z.B. einen "Setter" irgendwo aufrufe, dann wird erst ein Write-Lock gemacht, dann läuft der Code des Setters und dann wird der Lock aufgelöst.


    Mit Sicherheit übersehe ich da etwas, aber mit so einem Vorgehen würden alle Plugins direkt wieder laufen. Je mehr man als Plugin-Entwickler selber machen muss umso höher liegt die Hürde für jemanden, der Interesse daran hat, ein Plugin zu schreiben.

  • Es geht leider nicht immer, dass man alle Methoden einer (Collection-)Klasse threadsicher machen kann.
    Stell dir vor, du suchst nach einem bestimmten Item und wenn nicht vorhanden, willst du es hinzufügen (oder eins löschen). Dann muss dieser ganze Vorgang gelocked werden.


    Lars.

  • Je mehr man als Plugin-Entwickler selber machen muss umso höher liegt die Hürde für jemanden, der Interesse daran hat, ein Plugin zu schreiben.


    Der Vorteil von der neuen API ist eigentlich, dass man es jetzt als Plugin-Entwickler kaum noch verkehrt machen kann. Man hat immer eine Liste, mit der man machen kann, was man will, ohne das andere dazwischen funken können. Natürlich muss man immer noch darauf achten, dass man einen Lock nicht zu lange hält, aber ein bisschen Erfahrung/Wissen über nebenläufige Programmierung muss man immer mitbringen.


    Lars.

  • Nächste Baustelle ist Aufnahme-Button im Whatson-Menü. Genauso gelöst wie vorher.

    Dateien

    vdr-2.3.8
    softhddevice, chanman, dbus2vdr, dvd, dvdswitch, dynamite, epgsearch, femon, filebrowser, graphlcd, graphtftng,
    menuorg, osdteletext, radio, recsearch, streamdev-server, tvguide, vdrmanager, vnsiserver

    linux-3.13.0-129 M3N78-VM (Nvidia 8200) CIne CT-V7 DVB-C
    yavdr-0.6 als Basis mit vielen Änderungen

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von TomJoad ()

  • Was mir noch Sorgen bereitet: die von Klaus geforderte Reihenfolge der Locks zur Deadlock-Verhinderung wird nicht immer eingehalten und scheint auch ohne größere Umorganisation des Codes nicht so einfach zu realisieren sein.

    vdr-2.3.8
    softhddevice, chanman, dbus2vdr, dvd, dvdswitch, dynamite, epgsearch, femon, filebrowser, graphlcd, graphtftng,
    menuorg, osdteletext, radio, recsearch, streamdev-server, tvguide, vdrmanager, vnsiserver

    linux-3.13.0-129 M3N78-VM (Nvidia 8200) CIne CT-V7 DVB-C
    yavdr-0.6 als Basis mit vielen Änderungen

  • Nächsten Absturz hatte ich beim Aktivieren vom Searchtimerthread. Siehe Fix

    Dateien

    vdr-2.3.8
    softhddevice, chanman, dbus2vdr, dvd, dvdswitch, dynamite, epgsearch, femon, filebrowser, graphlcd, graphtftng,
    menuorg, osdteletext, radio, recsearch, streamdev-server, tvguide, vdrmanager, vnsiserver

    linux-3.13.0-129 M3N78-VM (Nvidia 8200) CIne CT-V7 DVB-C
    yavdr-0.6 als Basis mit vielen Änderungen