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
Exaggerated CPU-Consumption with XP on Oskaris Dark Theme
- Klangkulisse
- Posts: 304
- Joined: Tue Nov 22, 2011 12:20 am
- Location: ••• Düsseldorf ••• Made of Light
- strobotone
- Posts: 297
- Joined: Wed Nov 23, 2011 2:59 pm
- Location: berlin
- Contact:
Re: Exaggerated CPU-Consumption with XP on Oskaris Dark Them
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>
?
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>
?
- 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
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
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
- strobotone
- Posts: 297
- Joined: Wed Nov 23, 2011 2:59 pm
- Location: berlin
- Contact:
Re: Exaggerated CPU-Consumption with XP on Oskaris Dark Them
sure, the same way it is done in the dark theme using the MachineListItemTemplate.
- 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
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?
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?