Skip to content

Commit 823dd89

Browse files
committed
Ensure rendering engine gets set on all TopLevelWindows
1 parent f6d1a20 commit 823dd89

3 files changed

Lines changed: 35 additions & 19 deletions

File tree

Source/Processors/Editors/VisualizerEditor.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,6 @@ void VisualizerEditor::ButtonResponder::buttonClicked (Button* button)
166166
editor->dataWindow->setVisible (true);
167167
editor->dataWindow->toFront (true);
168168
editor->dataWindow->addListener (editor);
169-
170-
// Set the rendering engine for the window
171-
auto editorPeer = editor->getPeer();
172-
if (auto peer = editor->canvas->getPeer())
173-
{
174-
auto editorPeer = editor->getPeer();
175-
if (editorPeer)
176-
peer->setCurrentRenderingEngine (editorPeer->getCurrentRenderingEngine());
177-
}
178169
}
179170
else
180171
{
@@ -191,6 +182,19 @@ void VisualizerEditor::ButtonResponder::buttonClicked (Button* button)
191182
editor->dataWindow->setVisible (false);
192183
}
193184
}
185+
186+
#if JUCE_WINDOWS
187+
// Set the rendering engine for the window
188+
if (editor->dataWindow->isVisible())
189+
{
190+
auto editorPeer = editor->getPeer();
191+
if (auto peer = editor->dataWindow->getPeer())
192+
{
193+
if (editorPeer)
194+
peer->setCurrentRenderingEngine (editorPeer->getCurrentRenderingEngine());
195+
}
196+
}
197+
#endif
194198
}
195199
else if (button == editor->tabSelector.get())
196200
{

Source/UI/UIComponent.cpp

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,21 +1105,13 @@ bool UIComponent::perform (const InvocationInfo& info)
11051105

11061106
case setSoftwareRenderer:
11071107
{
1108-
if (auto peer = getPeer())
1109-
{
1110-
peer->setCurrentRenderingEngine (0);
1111-
repaint();
1112-
}
1108+
setRenderingEngine (0);
11131109
break;
11141110
}
11151111

11161112
case setDirect2DRenderer:
11171113
{
1118-
if (auto peer = getPeer())
1119-
{
1120-
peer->setCurrentRenderingEngine (1);
1121-
repaint();
1122-
}
1114+
setRenderingEngine (1);
11231115
break;
11241116
}
11251117

@@ -1148,6 +1140,23 @@ bool UIComponent::perform (const InvocationInfo& info)
11481140
return true;
11491141
}
11501142

1143+
void UIComponent::setRenderingEngine (int index)
1144+
{
1145+
#if JUCE_WINDOWS
1146+
for (int i = 0; i < TopLevelWindow::getNumTopLevelWindows(); i++)
1147+
{
1148+
if (TopLevelWindow* window = TopLevelWindow::getTopLevelWindow (i))
1149+
{
1150+
if (auto* peer = window->getPeer())
1151+
{
1152+
peer->setCurrentRenderingEngine (index);
1153+
window->repaint();
1154+
}
1155+
}
1156+
}
1157+
#endif
1158+
}
1159+
11511160
void UIComponent::saveStateToXml (XmlElement* xml)
11521161
{
11531162
XmlElement* uiComponentState = xml->createNewChildElement ("UICOMPONENT");

Source/UI/UIComponent.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,9 @@ class UIComponent : public Component,
294294

295295
CustomLookAndFeel* customLookAndFeel;
296296

297+
/** Set the rendering engine to use on Windows - Software (CPU) or Direct2D (GPU))*/
298+
void setRenderingEngine (int engineIndex);
299+
297300
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (UIComponent);
298301
};
299302

0 commit comments

Comments
 (0)