Exaggerated CPU-Consumption with XP on Oskaris Dark Theme

Post Reply
User avatar
Klangkulisse
Posts: 304
Joined: Tue Nov 22, 2011 12:20 am
Location: ••• Düsseldorf ••• Made of Light

Exaggerated CPU-Consumption with XP on Oskaris Dark Theme

Post by Klangkulisse »

A few users – and myself – mentioned the extraordinary cpu-consumpition on a XP SP3 system with Oskaris new cool dark theme.
As i found out, you can bring the consumption down to nearly nothing by selecting (in machine view) the tab "Machines" of the panel located on the right side of machine view (does it have a name?) and then choose the tab "Control" (is by default on "All"). Immediately the consumption goes down to nearly nothing (normal consumption). Anf this is – I suppose – because there are only 5 or 6 machines listed. Evidently there is a dependence of cpu-consumption to the number of listed machines. And if one has a huge list including a lot of VSTs (shown under "All"), it has a massive effect to it.

Further investigation – step by step adopting parts of oskaris dark theme into oskaris default theme – brought me to the approval, that this could be caused by this following part ot the MVResources.xaml, which defines the text colors in right sided panel of machine view:

<DataTemplate x:Key="MachineListItemTemplate">
<TextBlock Name="tb" Text="{Binding Path=DisplayName}" Foreground="{Binding Path=DisplayNameBrush}"/>

<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Instrument.Type}" Value="Control">
<Setter TargetName="tb" Property="Foreground" Value="#F0F0F0"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Instrument.Type}" Value="Generator">
<Setter TargetName="tb" Property="Foreground" Value="SkyBlue"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Instrument.Type}" Value="Effect">
<Setter TargetName="tb" Property="Foreground" Value="Gold"/>
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Instrument.Type}" Value="Generator"/>
<Condition Binding="{Binding Path=IsInstrument}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="tb" Property="Foreground" Value="LightSteelBlue"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Instrument.Type}" Value="Effect"/>
<Condition Binding="{Binding Path=IsInstrument}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="tb" Property="Foreground" Value="Orange"/>
</MultiDataTrigger>

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
<Setter TargetName="tb" Property="Foreground" Value="#333333"/>
</DataTrigger>


</DataTemplate.Triggers>

</DataTemplate>


When this part is ignored by adopting dark theme into default teme, you get – obviously – as a first result the default text colors (which don't fit very well in dark theme) and as a second achievement a normal, very low cpu-consumption. I couldn't figure out, where these default colors are defined (to change them to fit in dark theme for a first workaround).

So is there hope for XP-SP3-users to approach the benefits of cool dark theme without exaggerated cpu-consumption? Investigations going on, but help is required ;)
User avatar
strobotone
Posts: 297
Joined: Wed Nov 23, 2011 2:59 pm
Location: berlin
Contact:

Re: Exaggerated CPU-Consumption with XP on Oskaris Dark Them

Post by strobotone »

atleast there is some lag when changing the itemlist text colors this way.
the template is also used for quicknewmachinewindow btw.

does it work better for you if you remove just this trigger:

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
<Setter TargetName="tb" Property="Foreground" Value="#333333"/>
</DataTrigger>

?
User avatar
Klangkulisse
Posts: 304
Joined: Tue Nov 22, 2011 12:20 am
Location: ••• Düsseldorf ••• Made of Light

Re: Exaggerated CPU-Consumption with XP on Oskaris Dark Them

Post by Klangkulisse »

Thanks for the hint, but sadly doesn't change anything.

Selecting tab and CPU-consumption (buzz contains all machines and VSTs)
Control: 0–3 %
Effect: 0–6 %
Generator: 6–13 %
All: 41–53 %

The change between the tabs takes about 7 seconds


CPU-Consumption without any VST (moved VST-directory out of buzz)
Control: 0 %
Effect: 0–3 %
Generator: 0–3 %
All: 3–6 %

The change between the tabs takes about 1 second

So there is obviously a dependance how long the list is or rather how many machines are inside of buzz.
It is very strange, that when I use the text colors of default theme (by cutting out that mentioned part of MVResources.xaml), the CPU-consumption is really low or so to say normal on a XP-SP3-System.

Is there a possibility to change text colors of side bar and quicknewmachinewindow in the default theme? I could try to implement this then in a modified dark theme, to have a better contrast
User avatar
strobotone
Posts: 297
Joined: Wed Nov 23, 2011 2:59 pm
Location: berlin
Contact:

Re: Exaggerated CPU-Consumption with XP on Oskaris Dark Them

Post by strobotone »

sure, the same way it is done in the dark theme using the MachineListItemTemplate.
User avatar
Klangkulisse
Posts: 304
Joined: Tue Nov 22, 2011 12:20 am
Location: ••• Düsseldorf ••• Made of Light

Re: Exaggerated CPU-Consumption with XP on Oskaris Dark Them

Post by Klangkulisse »

Ah, o.k. this is what MachineListItemTemplate means.

So this part:

<DataTemplate x:Key="MachineListItemTemplate">
<TextBlock Name="tb" Text="{Binding Path=DisplayName}" Foreground="{Binding Path=DisplayNameBrush}"/>
</DataTemplate>

sets the text colors. In default theme it isdefined obviously by "{Binding Path=DisplayNameBrush}". Is the source DisplayNameBrush accessable?

I think, if I could enter this one, it would avoid the high CPU-consumption, because this part of dark theme:

<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Instrument.Type}" Value="Control">
<Setter TargetName="tb" Property="Foreground" Value="#F0F0F0"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Instrument.Type}" Value="Generator">
<Setter TargetName="tb" Property="Foreground" Value="SkyBlue"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Instrument.Type}" Value="Effect">
<Setter TargetName="tb" Property="Foreground" Value="Gold"/>
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Instrument.Type}" Value="Generator"/>
<Condition Binding="{Binding Path=IsInstrument}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="tb" Property="Foreground" Value="LightSteelBlue"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Instrument.Type}" Value="Effect"/>
<Condition Binding="{Binding Path=IsInstrument}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="tb" Property="Foreground" Value="Orange"/>
</MultiDataTrigger>

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
<Setter TargetName="tb" Property="Foreground" Value="#333333"/>
</DataTrigger>

</DataTemplate.Triggers>

seems to start a high consuming process, where via Instrument.Type the color assignment is checked over and over again. Could that be?

When I cut out the part MultiDataTriggerCondition, the consumption goes down about 50 %.

When i cut out this part, to reduce assignment process:

<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=Instrument.Type}" Value="Generator"/>
<Condition Binding="{Binding Path=IsInstrument}" Value="True"/>
</MultiDataTrigger.Conditions>

the consumption is lowered again.

So, my aim is to get access to Binding Path=DisplayNameBrush, but is that even possible?
Could it be that it is defined in the BuzzGUI.MachineView.dll, so no chance to change it?
Post Reply