Ich poste das mal hier, da das wohl für einige hier interessant sein könnte.
Die Darstellung der Skins mit dem text2skin Plugin ist ja äußerst langsam. Das Enigma Skin braucht bei mir (via C3 1Ghz mit xine-output) 800-1000ms für den Bildaufbau, z.B. wenn man im Hauptmenü navigiert. Das ist für eine flüssige Benutzung einfach zu langsam.
Ich habe mir das Problem mal näher angeschaut und mehrere Ursachen gefunden. Eine modifizierte Version des Plugins kann von ftp://merkur.2y.net/pub/vdr runtergeladen werden. Diese Version basiert auf "text2skin-1.1-cvs_ext-0.10". Folgende Probleme sollten damit behoben werden:
1. Bei jedem Neuzeichnen wird in text2skin für jedes Menüelement Speicher angefordert und freigegeben. Das kostet sehr viel Zeit. In der gepatchten Version ist das nun nicht mehr so. Die Änderung ist mit allen Skins kompatibel und bringt schon alleine eine erhebliche Geschwindigkeits-Steigerung. Mit dem Enigma-Skin dauert ein Bildschirm-Auffrischen nun etwa 100-200ms, also schonmal eine Steigerung um einen Faktor 5-10!
2. Bei jeder Veränderung des Menüs wird alles neu gezeichnet.
Um das zu vermeiden habe ich eine Möglichkeit eingebaut, um nur geänderte Elemente zu zeichnen. Dazu ist aber eine Anpassung der Skins notwendig.
Die Menüelemente bekommen zwei neue Optionen:
refresh="" und changed=""
Mögliche Werte sind für refresh:
allways,all,update,timeout,list,scroll,full,force
allways : es wird in jedem Fall gezeichnet
all: nur bei einem kompletten Neuaufbau des Bildschirminhalts
update: es wird geprüft, ob sich das Token, das mit changed="<token>" angegeben wurde geändert hat.
timeout: für Laufschriften...
list,scroll: bewegen in einer Liste oder einem Scrolltext
full: alle Elemente in einer block-Umgebung aktualisieren
force: bei "update" wird nicht "changed" überprüft.
Damit komme ich dann auf ca. 20-50ms Bildaufbau, wenn man z.B. im Menü zwischen den einzelnen Punkten wechselt.
Als Beispiel steht ein angepasstes enigma-skin-template auch zum Download. Ich hoffe, die Erklärungen reichen fürs erste. Einige Beispiele sind in der Skin Datei zu sehen.
Eine weiter Änderung in dieser Version ist auch noch eine Koordinaten-Eingabe relativ zur nächst höheren block- oder list-Umgebung. Dazu die Skin-Version auf "1.1" setzen. ein "block" kann dann ganz normal mit Position und Größe versehen werden und alle enthaltenen Elemente positionieren sich dann relativ dazu.
Es würde mich natürlich sehr interessieren, ob ihr diese Änderungen für sinnvoll haltet.
Christian