Version 0.5.3 - Bugfixes

  • Moin,


    ich habe im Git eine Version 0.5.3 mit den folgenden Änderungen zur 0.5.2 getaggt:


    Code
    - only close OSD when a skin is successfully updated from Git
    - refresh custom token display with each custom token change
    - added recording shorttext, description and scraper poster tokens
      to displaymenurecordings listelement
    - allow currentelements to use conditions
    - fixed bug searching channel logos with channelid
    - fixed bug in parsing printf text tokens
    - changed "Update from Git" to "Update"
    - made viewelement scrapercontent in displayreplay detachable


    Die kürzlich aufgetretenen Bugs (channellogoexists mit der channelID, komische Darstellung bei "printf" mit Text aussenrum) sollten damit gefixt sein.


    Ciao Louis

  • Ich habe skindesigner gerade mal ausproviert. Ich habe aber ein sehr eigenartiges Verhalten in Verbindung mit mpv. Getestet habe ich mit nopacity als Skin, das Problem tritt auch bei anderen skins im Skindesigner auf. Bei den Standard-Skins, oder nopacity als Plugin tritt es nicht auf.


    Nachdem mpv gestartet wurde fehlen im Menü die Icons vor den einzelnen Einträgen, sowie das grafische Highlight der Einträge (sowohl aktiv als auch inaktiv), die Schrift wird beim aktiven Element grau angezeigt. Die anderen Grafiken, wie das VDR Logo und die HDD beim freien Platz werden aber weiter angezeigt. Auch an anderen Stellen konnte ich keinerlei Probleme feststellen.


    Ich habe im mpv-Plugin das ganze OSD-Zeug testweise entfernt, auch den Wechsel des primär Device hatte ich deaktiviert, es brachte aber leider keine Besserung.


    Hast du eine Idee woran es liegen kann?

  • Moin,


    hm...was genau bedeutet denn "nachdem mpv gestartet wurde"? Wie rufst du dann das Hauptmenü auf? Kann man sich das dann vorstellen wie bei einer laufenden Aufnahme und man drückt die "menu" Taste?


    Aktuell habe ich nicht wirklich eine Idee, woran das liegen könnte.


    Ciao Louis

  • Nachdem ich mit dem mpv Plugin einen Film gestartet habe. Das Menü ist auch nachdem beenden von mpv weiterhin "kaputt", es hilft nur ein VDR Neustart. Das Menü wird ganz normal über die Menü -Taste aufgerufen.


    Es sieht so aus, als ob die Grafiken auf den Menu Items aus irgendeinem Grund nicht mehr dargestellt werden. Das tritt auch in allen Untermenüs auf, die Kanallogos hingegen funktionieren wieder problemlos. Auch die anderen Grafiken wie VDR-Logo und die Farb-Tasten werden überall korrekt angezeigt.


    Gibt es die Möglichkeit den Cache auf einfache Weise im Code abzuschalten? Gibt es einen Debug-Mode den ich aktivieren könnte?

  • Hm, seltsam...


    Gibt es die Möglichkeit den Cache auf einfache Weise im Code abzuschalten?


    Du müsstest für die Icons hier den Part rausnehmen, der das Icon aus dem Cache holt wird und einfach nur per LoadIcon() und CreateImage() das erzeugte cImage zurückgeben. Das wäre dann zwar ein übles Memleak, aber zum testen, ob es am Cache liegt, wäre das ja nicht so schlimm.


    Ciao Louis

  • Irgendwas seltsames geht da vor. Ich hatte mir, nachdem ich nur den Cache-Teil geändert hatte, ein paar Debug-Ausgaben eingebaut und dann festgestellt das er bei if (width < 1 || width > 1920 || height < 1 || height > 1080) direkt rausspringt. Wenn ich das rausnehme habe ich wieder Icons, die aber viel zu groß sind und daher nur stückweise in dem Bereich dargestellt werden wo sie hingehören.


    Aus irgendendeinem Grund wird das ganze dann mit width 0 height 0 aufgerufen.

  • Moin,


    kann es sein, dass durch das Starten des mpv die OSD Größe beeinflußt bzw. verändert wird? Dann müsste man sowohl die Templates als auch die Icons nach dem Start einmal neu einlesen und cachen. Hier wird bei jedem "abholen" eines neuen Menüs geprüft, ob das geschehen muss. Damit kannst du ja mal spielen...


    Ciao Louis

  • Die Osd Größe wird zuminest nicht aktiv beeinflusst. Es findet aber ein Wechsel auf ein anderes primär Device mit eigenem cOsdProvider statt um das OSD in mpv umlenken zu können. Beim beenden von mpv wird aber wieder zurück gewechselt.


    Init habe ich so umgebaut das er immer neu einliest (dazu if in 181 und 183 immer auf true gesetzt). Zusätzlich noch Debug Output in SetOSDSize() eingefügt. Hier sehe ich aber das die Größe sowohl vor dem mpv start, während mpv läuft und nachdem beenden von mpv immer gleich bleibt.
    Die Icons werden aber weiterhin mit width 0 und height 0 geladen.


    Edit: Eigenartigerweise tritt das aber anscheinend nur im Menü auf, alle anderen Bilder werden mit der richtigen Größe geladen.


    Edit2: Ich hab gerade noch etwas festgestellt. Das VDR-Logo bleibt bei mpv start und beenden erst erhalten, wenn ich danach aber das Setup vom skindesigner-Plugin aufrufe und wieder verlasse, verschwindet das Logo auch. Wenn ich das im Code richtig sehe wird dann in Init auch ein Neuaufbau des Cache usw. angestosen aber ohne die SetSkin, SetOSDSize und SetOSDFonts aufgerufen werden. Irgendwas scheint dann nicht mehr zu passen. Welche (VDR)-Variablen nutzt du für die Größenberechnung, dann kann ich kontrollieren ob hier irgendetwas nicht passt.

  • Moin,


    hast du denn mal komplett ohne dein Plugin getestet, ob es sich dann korrekt verhält? Ansonsten rennst du einem Phantom hinterher und das Problem liegt ggf. wo anders ;)


    Welche (VDR)-Variablen nutzt du für die Größenberechnung, dann kann ich kontrollieren ob hier irgendetwas nicht passt.


    Naja, eigentlich nur die OSD Größe. Daraus werden dann die Größen in den Templates berechnet, und daraus die notwendigen Bildgrößen. Du kannst einfach mal im jeweiligen Template (z.B. displaymenumain) in dem <drawimage>, mit dem das Icon gezeichnet wird, ein debug="true" einfügen, dann werden im Log alle berechneten Größen ausgegeben. Bei nbopacity wäre das in der Zeile 135 der displaymenumain.xml :


    Code
    <drawimage debug="true" imagetype="menuicon" path="{icon}" x="10" valign="center" width="{areaheight}*0.8" height="{areaheight}*0.8"/>


    Das funktioniert mit allen Elementen...


    Ciao Louis

  • Mit dem Debug=true sehe ich im Log dann auch Height und Width = 0.


    Code
    Jun 14 14:34:10 vdr vdr[316]: [316] skindesigner: Debugging Function DrawImage, Container: x = 9, y = 426, Size: 504x81
    Jun 14 14:34:10 vdr vdr[316]: [316] skindesigner: --- Image Path: "standardicons/Recordings"
    Jun 14 14:34:10 vdr vdr[316]: [316] skindesigner: Vertical Align = 1
    Jun 14 14:34:10 vdr vdr[316]: [316] skindesigner: Image Type = 3
    Jun 14 14:34:10 vdr vdr[316]: [316] skindesigner: Height = 0
    Jun 14 14:34:10 vdr vdr[316]: [316] skindesigner: Width = 0
    Jun 14 14:34:10 vdr vdr[316]: [316] skindesigner: Y = 40
    Jun 14 14:34:10 vdr vdr[316]: [316] skindesigner: X = 10


    Im mpv-Plugin habe ich auch gerade mal ein Trace durch die einzelnen Funktionen eingebaut um sicher zu gehen das wirklich nichts mit OSD aufgerufen wird. Es findet kein primär Device switch mehr statt. Der cOsdProvider bleibt unangetastet, der OSD-Code vom mpv-Plugin wird nicht aufgerufen.
    Irgendwie hab ich jetzt den cPlayer(pmExtern_THIS_SHOULD_BE_AVOIDED) in Verdacht, also das dort irgendwas zurückgesetzt wird, was danach nicht wieder korrekt initialisiert wird.


    Edit: Ohne das mpv-Plugin testen klappt nicht, da skindesigner das Menü korrekt darstellt bis zum ersten Mal ein Film über das mpv-Plugin gestartet wurde.


    An welcher Stelle findet den die Berechnung von Height und Width für DrawImage für die Menü Items statt?

  • An welcher Stelle findet den die Berechnung von Height und Width für DrawImage für die Menü Items statt?


    Hier, aber das ist nicht ganz so einfach ;)


    Ciao Louis

  • Stimmt, da steige ich noch nicht ganz durch.


    Ich habe aber gerade festgestellt das, zumindest im mpv-Plugin cOsd OsdHeight() und OsdWidth() korrekt sind, aber Width() und Height() jeweils 0 liefern. Kann das eventuell das Problem verursachen?


    Edit: Ich sehe gerade im cOsd::Flush vom mpv-Plugin haben sie dann korrekte Werte.

  • Hm, ich denke auch nicht, dass es sinnvoll ist, dass du bei den Berechnungen im Skindesigner weiter debugst. Vielmehr wäre es sinnvoll herauszufinden, wo der Unterschied ist. Ich blicke nicht so ganz durch, was genau es bedeutet, einen eigenen OSD Provider zu benutzen, aber ich denke, damit hängt es irgendwie zusammen.

    Schau doch mal in der libcore/pixmapcontainer.c nach den Funktionen CreateOsd und CreatePixmap, ob da vernünftige Werte ankommen...


    Ciao Louis

  • Ich versuche gerade rauszufinden warum im skindesigner width und height mit 0 berechnet wird, daher bin ich auf der Suche nach der Stelle wo die Berechnung stattfindet um testen zu können, welche Variablen dafür verantwortlich sind um dann zu sehen warum diese Variablen nicht vernünftig gesetzt sind. In mpv sehe ich nichts was das gerade direkt auslösen könnte, eventuell fehlt in mpv auch einfach nur was, was die variablen vernünftig setzt, die Skindesigner dann verwendet.


    Der eigene OSD Provider ist um die Daten abzufangen bevor sie an das Ausgabe Device gehen um diese dann an die Skin Api von mpv zu schieben damit mpv das OSD darstellt. Aber auch ohne den OSD Provider (der bereits bestehende von softhddevice bleibt erhalten), funktioniert es nicht nachdem mpv wieder beendet wurde. Beim mpv Plugin hat man bei diesem Test kein OSD.


    Ich muss mir mal ein anderes Plugin mit Playmode pm_Extern suchen und damit testen ob das gleiche passiert.

  • Ich hab gerade noch eine Stelle entdeckt bei der es nachdem mpv benutzt wurde zu Problemen kommt.


    Im EPG Info wird das Poster nicht mehr an der rechten Seite angezeigt sondern auf der linken Seite. Der Text liegt dann über dem Poster und geht bis kurz vor den Scrollbalken, also auch in den Bereich der normalerweise für das Poster genutzt wird. Das Poster wird dann auch etwas größer dargstellt als normal.

  • CreateOsd liefert vernünftige Werte (1800x1015 in meinem Fall).


    CreatePixmap bin ich mir nicht sicher, aber vor allem Draw mit 0 wundert mich etwas.


    Der erste Wert hinter View und Draw ist jeweils Width, der zweite Height.


    Edit: Werte sollten Ok sein, hab sie mit vorher verglichen. Testweise habe ich in der Skin XML gerade mal für die Menüicons das areaheight*0.8 durch den festen Wert 65 ersetzt, damit hab ich immer die Icons. Das würde ich aber maximal als Workaround bezeichnen.


    Wo kommt das areaheght her? Wird das irgendwo berechnet? Wenn ja welche Parameter werden dafür benutzt? Wo passiert das im skindesigner?

  • Ich hab gerade einfach mal über den Debug im Skin die Werte für areaheight und areawidth direkt ausgeben lassen. Es ist 504 und 81 bei mir. Das bedeutet ja das die Berechnung ansich funktioniert, da sie ja für CreatePixmap vorhanden sind. Nur wenn es dann für die Items umgerechnet werden soll geht es aus irgendeinem Grund schief.


    Im mpv Plugin kann ich auch nichts mehr finden was dafür noch die Ursache sein kann. Irgendwie scheint hier auch der mpv direkt reinzuspielen. Wenn ich das mpv-Plugin ohne mpv Start einfach 10 Sekunden schlafen lasse nachdem der Player mit pmExtern aktiviert wurde und dann wieder auf TV-Bild zurückgehe funktioniert es weiterhin. Wenn mpv startet tritt der Fehler auf.


    Kann das ein local-Problem sein? Beim start läuft VDR auf LC_NUMERIC="de_DE.utf8", vor dem mpv start setze ich das ganze auf LC_NUMERIC="C"


    Edit: Hab die LC_NUMERIC angepasst, die offene Konsole war aus irgendeinem Grund auf POSIX und nicht auf de_DE.utf8. Ich mache nochmal nen neuen Test das beim Player-Stop zurückzusetzen.

  • Ich glaubs nicht, es ist die LC_NUMERIC. Nachdem beenden von mpv und zurücksetzen funktioniert es wieder, solange mpv läuft ist das OSD aber noch kaputt.


    Jetzt fehlt mir nur noch eine Lösung wie ich das Menü auch während mpv läuft vernünftig hinbekomme.

  • Kann es sein, dass nach Änderung von LC_NUMERIC gewisse String-zu-Zahl-Konvertierroutinen aus dem Tritt kommen?
    Warum muss das denn umgestellt werden?


    Lars

Jetzt mitmachen!

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