Hast du Code entfernt, oder deaktiviert? Im letzteren Fall wäre das ja eine Funktionalität, die für andere Leute auch interessant wäre. Wenn man sozusagen per Einstellungsmenü verlangsamende und unbenötigte Komponenten deaktivieren könnte. Das hätte durchaus Wert für die Community.
Um das gehts ja.. Deaktivieren in dem Sinne gibts nicht im Skinegine.
Es gibt 2 Arten Code zu implementieren
Ein Resolutionflag für Ansichten der so aussehen kann.
<control type="image">
<left>1050</left>
<top>15</top>
<width>63</width>
<height>36</height>
<texture>$INFO[ListItem.VideoResolution,flagging/resolution/,.png]</texture>
</control>
Wenn ich den jetzt aktiv/inaktiv schalten will brauche ich ein Setting dafür. Das ist im wesentlichen ein Knopf in den Skinsettings der true/false
in deine userdata/addondate/skin/settings.xml schreibt
Das heißt dann Meinetwegen "ResolutionFlags"
Jetzt kann ich den Code direkt in einer Liste verwendet und mit <visible>!Skin.HasSetting(ResolutionFlags) + !String.IsEmpty(ListItem.VideoResolution)</visible> könnte ich ihn ausblenden wenn ein user es auf nicht anzeigen stellt.
Das wird aber jedesmal wenn ich die view öffne geprüft und einfach nur nicht angezeigt.
Die zweite Variante wäre diesen codeblock in ein include zu packen was "ausgelagerter Code" wäre.
<include name="Resolutionflag">
<control type="image">
<left>1050</left>
<top>15</top>
<width>63</width>
<height>36</height>
<texture>$INFO[ListItem.VideoResolution,flagging/resolution/,.png]</texture>
</control>
</include>
und das aufrufen in einer liste mit <include condition="!Skin.HasSetting(ResolutionFlags)">Resolutionflag</include>
Das würde nur geladen werden wenn die Einstellung vorhanden ist.
Das hat aber wie man schnell sieht einen Pferdefuß: Ich kann jetzt Z.B. nicht so einfach die Positionierung rauslassen, es geht zwar
machts aber komlizierter, also was tun wenn ich ihn an 3 Plätzen brauche?
Auch wegen der Menge an includes die dabei entstehen würde ist es auch nicht für jeden "kleinmist" brauchbar.
Beim laden wird aber Trotzdem jedes mal alles egal ob include oder visible aufs neue geprüft und verlangsamt dadurch auch einen
Skin.
Ein wirkliches Beschleunigen für langsame Systeme käme dann erst wenn man nicht benötige Dinge aus Dateien streicht.
Und da jeder Skin ein Unikat ist gibts da nicht viel außer sich gut im Skincode auszukennen - un natürlich nicht soweiso alles zu brauchen
was vorhanden ist;)..
Ein Ansatz wäre die skinsettings durchzugehen, alles was man dort an/abschalten kann kann man sich als doppelten code Vorstellen.
Es gibts zwar auch Möglichkeiten das laden durch includierung zu verhindern, das macht aber an vielen Stellen keinen Sinn.
In der Praxis sind solche Beispiel natürlich immer komplizierter.
Aus der Praxis mal die Hintergründe in "Videos" im Skin Transparency:
Spoiler anzeigen
<control type="multiimage">
<left>0</left>
<top>0</top>
<width>1920</width>
<height>1080</height>
<timeperimage>5000</timeperimage>
<randomize>true</randomize>
<fadetime>2000</fadetime>
<imagepath fallback="special://skin/backgrounds/background-videos.jpg" background="true">$INFO[Skin.String(Custom_Back_Videos_Folder)]</imagepath>
<aspectratio>scale</aspectratio>
<include condition="Skin.HasSetting(AnimateBackgrounds)">backgroundanimation</include>
<include>VisibleFadeEffect</include>
<visible>[String.IsEmpty(ListItem.Property(Fanart_Image)) + String.IsEmpty(Fanart.Image) + !String.Contains(Container.FolderPath,videodb://movies/) + !String.Contains(Container.FolderPath,videodb://tvshows/) + !String.Contains(Container.FolderPath,videodb://musicvideos/) + !String.Contains(Container.FolderPath,videodb://recentlyaddedmovies/) + !String.Contains(Container.FolderPath,videodb://recentlyaddedepisodes/)] + ![Player.HasVideo + !Skin.HasSetting(HideVideoBackgrounds)]</visible>
</control>
<control type="multiimage">
<left>0</left>
<top>0</top>
<width>1920</width>
<height>1080</height>
<timeperimage>5000</timeperimage>
<randomize>true</randomize>
<fadetime>2000</fadetime>
<imagepath fallback="special://skin/backgrounds/background-movies.jpg" background="true">$INFO[Skin.String(Custom_Back_Movies_Folder)]</imagepath>
<aspectratio>scale</aspectratio>
<include condition="Skin.HasSetting(AnimateBackgrounds)">backgroundanimation</include>
<include>VisibleFadeEffect</include>
<visible>String.IsEmpty(ListItem.Property(Fanart_Image)) + String.IsEmpty(Fanart.Image) + [String.Contains(Container.FolderPath,videodb://movies/) | String.Contains(Container.FolderPath,videodb://recentlyaddedmovies/)] + ![Control.IsVisible(592) + !Window.IsVisible(MovieInformation)] + ![Player.HasVideo + !Skin.HasSetting(HideVideoBackgrounds)]</visible>
</control>
<control type="multiimage">
<left>0</left>
<top>0</top>
<width>1920</width>
<height>1080</height>
<timeperimage>5000</timeperimage>
<randomize>true</randomize>
<fadetime>2000</fadetime>
<imagepath fallback="special://skin/backgrounds/background-tvshows.jpg" background="true">$INFO[Skin.String(Custom_Back_TVShows_Folder)]</imagepath>
<aspectratio>scale</aspectratio>
<include condition="Skin.HasSetting(AnimateBackgrounds)">backgroundanimation</include>
<include>VisibleFadeEffect</include>
<visible>String.IsEmpty(ListItem.Property(Fanart_Image)) + String.IsEmpty(Fanart.Image) + [String.Contains(Container.FolderPath,videodb://tvshows/) | String.Contains(Container.FolderPath,videodb://recentlyaddedepisodes/)] + ![[Control.IsVisible(592) | Control.IsVisible(598)] + !Window.IsVisible(MovieInformation)] + ![Player.HasVideo + !Skin.HasSetting(HideVideoBackgrounds)]</visible>
</control>
<control type="multiimage">
<left>0</left>
<top>0</top>
<width>1920</width>
<height>1080</height>
<timeperimage>5000</timeperimage>
<randomize>true</randomize>
<fadetime>2000</fadetime>
<imagepath fallback="special://skin/backgrounds/background-musicvideos.jpg" background="true">$INFO[Skin.String(Custom_Back_MusicVideos_Folder)]</imagepath>
<aspectratio>scale</aspectratio>
<include condition="Skin.HasSetting(AnimateBackgrounds)">backgroundanimation</include>
<include>VisibleFadeEffect</include>
<visible>String.IsEmpty(ListItem.Property(Fanart_Image)) + String.IsEmpty(Fanart.Image) + String.Contains(Container.FolderPath,videodb://musicvideos/) + ![Control.IsVisible(598) + !Window.IsVisible(MovieInformation)] + ![Player.HasVideo + !Skin.HasSetting(HideVideoBackgrounds)]</visible>
</control>
<include condition="Skin.HasSetting(MoviesExtraFanart)">fanart-extra-movies</include>
<include condition="Skin.HasSetting(TVShowsExtraFanart)">fanart-extra-tvshows</include>
<include condition="Skin.HasSetting(MusicVideosExtraFanart)">fanart-extra-musicvideos</include>
<control type="image">
<left>0</left>
<top>0</top>
<width>1920</width>
<height>1080</height>
<texture background="true">$INFO[Fanart.Image]</texture>
<aspectratio>scale</aspectratio>
<fadetime>FanartCrossfadeTime</fadetime>
<include>VisibleFadeEffect</include>
<include condition="Skin.HasSetting(AnimateFanart)">backgroundanimation</include>
<visible>String.IsEmpty(ListItem.Art(fanart)) + ![Container.Content(Seasons) + Skin.HasSetting(TVShowsExtraFanart) + !String.IsEmpty(Control.GetLabel(6105)) + !ListItem.IsParentFolder] + ![Container.Content(Episodes) + Skin.HasSetting(TVShowsExtraFanart) + !String.IsEmpty(Control.GetLabel(6106)) + !ListItem.IsParentFolder] + !String.IsEmpty(Fanart.Image) + ![[Control.IsVisible(592) | Control.IsVisible(598)] + !Window.IsVisible(MovieInformation)] + ![Player.HasVideo + !Skin.HasSetting(HideVideoBackgrounds)]</visible>
</control>
<control type="image">
<left>0</left>
<top>0</top>
<width>1920</width>
<height>1080</height>
<texture background="true">$INFO[ListItem.Art(fanart)]</texture>
<aspectratio>scale</aspectratio>
<fadetime>FanartCrossfadeTime</fadetime>
<include>VisibleFadeEffect</include>
<include condition="Skin.HasSetting(AnimateFanart)">backgroundanimation</include>
<visible>![Container.Content(Movies) + Skin.HasSetting(MoviesExtraFanart) + !String.IsEmpty(Control.GetLabel(6102))] + ![[Container.Content(TVShows) | Container.Content(Seasons)] + Skin.HasSetting(TVShowsExtraFanart) + !String.IsEmpty(Control.GetLabel(6105))] + ![Container.Content(Episodes) + Skin.HasSetting(TVShowsExtraFanart) + !String.IsEmpty(Control.GetLabel(6106))] + ![Container.Content(MusicVideos) + Skin.HasSetting(MusicVideosExtraFanart) + !String.IsEmpty(Control.GetLabel(6107))] + !String.IsEmpty(ListItem.Property(Fanart_Image)) + ![[Control.IsVisible(592) | Control.IsVisible(598)] + !Window.IsVisible(MovieInformation)] + ![Player.HasVideo + !Skin.HasSetting(HideVideoBackgrounds)]</visible>
</control>
<control type="image">
<left>0</left>
<top>0</top>
<width>1920</width>
<height>1080</height>
<texture background="true">$INFO[Skin.String(Video_Genre_Folder)]$INFO[ListItem.Label,,.jpg]</texture>
<aspectratio>scale</aspectratio>
<fadetime>FanartCrossfadeTime</fadetime>
<include>VisibleFadeEffect</include>
<include condition="Skin.HasSetting(AnimateFanart)">backgroundanimation</include>
<visible>Container.Content(Genres) + Skin.HasSetting(VideoGenreBackgrounds) + ![Player.HasVideo + !Skin.HasSetting(HideVideoBackgrounds)]</visible>
</control>
<include condition="Skin.HasSetting(SeasonFanart)">fanart-seasons</include>
Alles anzeigen
Kann man auch ohne Kenntniss schnell erkennen das das sicher langsamer sein dürfte als Hintergrundbild als nur ein Fanart und sonst nix das nur noch dieses wäre.
<control type="image">
<left>0</left>
<top>0</top>
<width>1920</width>
<height>1080</height>
<texture background="true">$INFO[ListItem.Art(fanart)]</texture>
<aspectratio>scale</aspectratio>
<fadetime>FanartCrossfadeTime</fadetime>
<include>VisibleFadeEffect</include>
<include condition="Skin.HasSetting(AnimateFanart)">backgroundanimation</include>
<visible>!String.IsEmpty(ListItem.Art(fanart)) + ![Player.HasVideo + !Skin.HasSetting(HideVideoBackgrounds)]</visible>
</control>
Alles anzeigen
Brauche ich also kein multiimage und was weiß ich nicht alles, läuft trotzdem jedesmal der ganze Codeblock durch - grob gesagt bei jedem öffnen des Fensters aufs neue.
Eine Stelle fällt jetzt nicht ins Gewicht, Dutzende oder gar Hundert schon.
Aber da muss jeder selber durch, es für sich entscheiden und sich auch darüber klar sein das man danach ebenfalls ein
Unikat hat das man eigenständig Pflegen und verwalten muss bei Updates.
Dazu muss man aber auch genug Ahnung von Skincode haben um das wirklich hinzubekommen.
Eine Anleitung gibts dafür nicht - mein code paßt auch nur zu meinem Skin und ist nicht als "Funktionalität" zu sehen.
Grüße