Moin,
heute gibt es mal keine optischen Änderungen, vielmehr habe ich nOpacity von der Performance her optimiert, indem ich einen Cache für Icons und Fonts eingebaut habe. Der Cache wird beim Start vom Plugin und teilweise auch nach dem Start beim ersten DisplayChannel Aufruf geladen (erst da sind die Theme Farben geladen), also bevor der User mit dem Skin interagiert. Die Icons liegen dann schon alle als fertige cImages im Speicher, es muss also nichts mehr von der Platte geladen und per ImageMagick konvertiert werden. Zusätzlich werden auch die Hintergründe für die Menüelemente usw. schon im Vorfeld erzeugt, die wurden sonst auch immer erst beim Aufruf des Menüs erstellt. Auch für die Fonts, die sonst immer on the fly erzeugt wurden, habe ich einen Cache eingebaut, da ich festgestellt habe, dass das Erzeugen beim Menüaufruf auch so ca. 100ms gedauert hat.
Insgesamt habe ich durch diese Optimierungen einiges an Performance herausgeholt. Auf meinem Entwicklungsrechner hat der Aufruf des Menüs so ca. 400ms gedauert, das passiert jetzt in unter 50 ms. Da muss ich mich z.B. gegenüber LCARS nicht mehr verstecken
Sobald sich etwas für den Cache relevantes ändert, wird der komplette Cache automatisch neu geladen. Dazu zählt die OSD Größe, das Theme und die Parameter im Setup. Wird z.B. die OSD Größe geändert, wird der Cache beim nächsten Aufruf eines Menüs neu geladen. Dadurch ist dieser Aufruf etwas verzögert. Ebenfalls lade ich den kompletten Cache neu, wenn das nOpacity Setup Menü verlassen wird. Aber all diese Aktionen macht man ja nicht so oft, deswegen sollte das ziemlich egal sein...und ewig dauert das ja auch nicht.
Ich habe eine Logmessage eingebaut, sobald der Cache neu geladen wird. Kommt keine Logausgabe, bleibt auch der Cache unverändert. Bitte testet das mal mit euren verschiedenen Setups, ob das alles so passt. Ausserdem kann es durchaus sein, dass sich durch die Änderungen neue Bugs eingeschlichen haben, ich musste einiges auf den Kopf stellen, der commit im Git hatte über 2000 Änderungen, der diff für den Commit hat weit über 5000 Zeilen