Skip to content

Commit

Permalink
Separate bgthread and GPU render checkboxes so GPU render enable can …
Browse files Browse the repository at this point in the history
…be used for other platforms.

Re-layout panel a bit.
  • Loading branch information
dkulp committed Apr 4, 2024
1 parent ee05397 commit 406a218
Show file tree
Hide file tree
Showing 3 changed files with 195 additions and 152 deletions.
142 changes: 77 additions & 65 deletions xLights/preferences/OtherSettingsPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ extern bool isMetalComputeSupported();
//(*IdInit(OtherSettingsPanel)
const long OtherSettingsPanel::ID_STATICTEXT1 = wxNewId();
const long OtherSettingsPanel::ID_CHOICE1 = wxNewId();
const long OtherSettingsPanel::ID_STATICTEXT2 = wxNewId();
const long OtherSettingsPanel::ID_TEXTCTRL1 = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX1 = wxNewId();
const long OtherSettingsPanel::ID_CHOICE4 = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX7 = wxNewId();
Expand All @@ -46,13 +44,16 @@ const long OtherSettingsPanel::ID_STATICTEXT5 = wxNewId();
const long OtherSettingsPanel::ID_SPINCTRLDOUBLE_BITRATE = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX2 = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX3 = wxNewId();
const long OtherSettingsPanel::ID_CHOICE2 = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX4 = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX6 = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX5 = wxNewId();
const long OtherSettingsPanel::ID_STATICTEXT4 = wxNewId();
const long OtherSettingsPanel::ID_CHOICE3 = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX8 = wxNewId();
const long OtherSettingsPanel::ID_STATICTEXT2 = wxNewId();
const long OtherSettingsPanel::ID_CHOICE2 = wxNewId();
const long OtherSettingsPanel::ID_TEXTCTRL1 = wxNewId();
const long OtherSettingsPanel::ID_CHECKBOX9 = wxNewId();
//*)

BEGIN_EVENT_TABLE(OtherSettingsPanel,wxPanel)
Expand All @@ -66,43 +67,42 @@ OtherSettingsPanel::OtherSettingsPanel(wxWindow* parent, xLightsFrame* f, wxWind
//(*Initialize(OtherSettingsPanel)
wxFlexGridSizer* FlexGridSizer1;
wxFlexGridSizer* FlexGridSizer2;
wxFlexGridSizer* FlexGridSizer3;
wxFlexGridSizer* FlexGridSizer4;
wxFlexGridSizer* FlexGridSizer5;
wxFlexGridSizer* FlexGridSizer6;
wxGridBagSizer* GridBagSizer1;
wxGridBagSizer* GridBagSizer2;
wxStaticBoxSizer* StaticBoxSizer1;
wxStaticBoxSizer* StaticBoxSizer2;
wxStaticBoxSizer* StaticBoxSizer3;
wxStaticBoxSizer* StaticBoxSizer4;
wxStaticText* StaticText1;

Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("wxID_ANY"));
GridBagSizer1 = new wxGridBagSizer(0, 0);
FlexGridSizer4 = new wxFlexGridSizer(0, 2, 0, 0);
StaticText2 = new wxStaticText(this, ID_STATICTEXT1, _("Link save:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
GridBagSizer1->Add(StaticText2, wxGBPosition(3, 0), wxDefaultSpan, wxALL|wxEXPAND, 5);
FlexGridSizer4->Add(StaticText2, 1, wxALL|wxEXPAND, 5);
Choice_LinkSave = new wxChoice(this, ID_CHOICE1, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE1"));
Choice_LinkSave->SetSelection( Choice_LinkSave->Append(_("None")) );
Choice_LinkSave->Append(_("Controllers and Layout Tab"));
GridBagSizer1->Add(Choice_LinkSave, wxGBPosition(3, 1), wxDefaultSpan, wxALL|wxEXPAND, 5);
StaticText3 = new wxStaticText(this, ID_STATICTEXT2, _("Link controller upload:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
GridBagSizer1->Add(StaticText3, wxGBPosition(4, 0), wxDefaultSpan, wxALL|wxEXPAND, 5);
StaticText1 = new wxStaticText(this, wxID_ANY, _("eMail Address:"), wxDefaultPosition, wxDefaultSize, 0, _T("wxID_ANY"));
GridBagSizer1->Add(StaticText1, wxGBPosition(0, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
eMailTextControl = new wxTextCtrl(this, ID_TEXTCTRL1, _("noone@nowhere.xlights.org"), wxDefaultPosition, wxDLG_UNIT(this,wxSize(150,-1)), 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
GridBagSizer1->Add(eMailTextControl, wxGBPosition(0, 1), wxDefaultSpan, wxALL|wxEXPAND, 5);
StaticBoxSizer4 = new wxStaticBoxSizer(wxVERTICAL, this, _("Hardware Video"));
FlexGridSizer4->Add(Choice_LinkSave, 1, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(FlexGridSizer4, wxGBPosition(6, 0), wxDefaultSpan, wxALL|wxEXPAND, 0);
FlexGridSizer3 = new wxFlexGridSizer(0, 2, 0, 0);
HardwareVideoDecodingCheckBox = new wxCheckBox(this, ID_CHECKBOX1, _("Hardware Video Decoding"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX1"));
HardwareVideoDecodingCheckBox->SetValue(false);
StaticBoxSizer4->Add(HardwareVideoDecodingCheckBox, 1, wxALL|wxEXPAND, 5);
FlexGridSizer3->Add(HardwareVideoDecodingCheckBox, 1, wxALL|wxEXPAND, 5);
HardwareVideoRenderChoice = new wxChoice(this, ID_CHOICE4, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE4"));
HardwareVideoRenderChoice->Append(_("DirectX11"));
HardwareVideoRenderChoice->SetSelection( HardwareVideoRenderChoice->Append(_("FFmpeg Auto")) );
HardwareVideoRenderChoice->Append(_("FFmpeg CUDA"));
HardwareVideoRenderChoice->Append(_("FFmpeg QSV"));
HardwareVideoRenderChoice->Append(_("FFmpeg Vulkan"));
StaticBoxSizer4->Add(HardwareVideoRenderChoice, 1, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(StaticBoxSizer4, wxGBPosition(1, 0), wxDefaultSpan, wxALL|wxEXPAND, 5);
FlexGridSizer3->Add(HardwareVideoRenderChoice, 1, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(FlexGridSizer3, wxGBPosition(1, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
ShaderCheckbox = new wxCheckBox(this, ID_CHECKBOX7, _("Shaders on Background Threads"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX7"));
ShaderCheckbox->SetValue(false);
GridBagSizer1->Add(ShaderCheckbox, wxGBPosition(1, 1), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
GridBagSizer1->Add(ShaderCheckbox, wxGBPosition(3, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
StaticBoxSizer2 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Video Export Settings"));
FlexGridSizer1 = new wxFlexGridSizer(0, 2, 0, 0);
FlexGridSizer1->AddGrowableCol(1);
Expand All @@ -120,30 +120,26 @@ OtherSettingsPanel::OtherSettingsPanel(wxWindow* parent, xLightsFrame* f, wxWind
SpinCtrlDoubleBitrate->SetValue(_T("0"));
FlexGridSizer1->Add(SpinCtrlDoubleBitrate, 1, wxALL|wxEXPAND, 5);
StaticBoxSizer2->Add(FlexGridSizer1, 1, wxALL|wxEXPAND, 0);
GridBagSizer1->Add(StaticBoxSizer2, wxGBPosition(2, 1), wxDefaultSpan, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(StaticBoxSizer2, wxGBPosition(1, 1), wxGBSpan(4, 1), wxALL|wxEXPAND, 0);
StaticBoxSizer1 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Packaging Sequences"));
GridBagSizer2 = new wxGridBagSizer(0, 0);
ExcludePresetsCheckBox = new wxCheckBox(this, ID_CHECKBOX2, _("Exclude Presets"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX2"));
ExcludePresetsCheckBox->SetValue(false);
GridBagSizer2->Add(ExcludePresetsCheckBox, wxGBPosition(0, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
ExcludeAudioCheckBox = new wxCheckBox(this, ID_CHECKBOX3, _("Exclude Audio"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX3"));
ExcludeAudioCheckBox->SetValue(false);
GridBagSizer2->Add(ExcludeAudioCheckBox, wxGBPosition(1, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
GridBagSizer2->Add(ExcludeAudioCheckBox, wxGBPosition(0, 1), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
StaticBoxSizer1->Add(GridBagSizer2, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
GridBagSizer1->Add(StaticBoxSizer1, wxGBPosition(2, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT, 0);
Choice_LinkControllerUpload = new wxChoice(this, ID_CHOICE2, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE2"));
Choice_LinkControllerUpload->SetSelection( Choice_LinkControllerUpload->Append(_("None")) );
Choice_LinkControllerUpload->Append(_("Inputs and Outputs"));
GridBagSizer1->Add(Choice_LinkControllerUpload, wxGBPosition(4, 1), wxDefaultSpan, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(StaticBoxSizer1, wxGBPosition(5, 1), wxGBSpan(2, 1), wxALL|wxEXPAND, 0);
CheckBox_BatchRenderPromptIssues = new wxCheckBox(this, ID_CHECKBOX4, _("Prompt issues during batch render"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX4"));
CheckBox_BatchRenderPromptIssues->SetValue(true);
GridBagSizer1->Add(CheckBox_BatchRenderPromptIssues, wxGBPosition(5, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
GridBagSizer1->Add(CheckBox_BatchRenderPromptIssues, wxGBPosition(4, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
CheckBox_PurgeDownloadCache = new wxCheckBox(this, ID_CHECKBOX6, _("Purge download cache at startup"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX6"));
CheckBox_PurgeDownloadCache->SetValue(false);
GridBagSizer1->Add(CheckBox_PurgeDownloadCache, wxGBPosition(6, 0), wxDefaultSpan, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(CheckBox_PurgeDownloadCache, wxGBPosition(5, 0), wxDefaultSpan, wxALL|wxEXPAND, 5);
CheckBox_IgnoreVendorModelRecommendations = new wxCheckBox(this, ID_CHECKBOX5, _("Ignore vendor model recommendations"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX5"));
CheckBox_IgnoreVendorModelRecommendations->SetValue(false);
GridBagSizer1->Add(CheckBox_IgnoreVendorModelRecommendations, wxGBPosition(7, 0), wxDefaultSpan, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(CheckBox_IgnoreVendorModelRecommendations, wxGBPosition(8, 0), wxDefaultSpan, wxALL|wxEXPAND, 5);
StaticBoxSizer3 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Tip Of The Day"));
FlexGridSizer2 = new wxFlexGridSizer(0, 2, 0, 0);
StaticText5 = new wxStaticText(this, ID_STATICTEXT4, _("Minimum Tip Level"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT4"));
Expand All @@ -160,48 +156,64 @@ OtherSettingsPanel::OtherSettingsPanel(wxWindow* parent, xLightsFrame* f, wxWind
CheckBox_RecycleTips->SetValue(false);
FlexGridSizer2->Add(CheckBox_RecycleTips, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
StaticBoxSizer3->Add(FlexGridSizer2, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
GridBagSizer1->Add(StaticBoxSizer3, wxGBPosition(5, 1), wxGBSpan(3, 1), wxALL|wxEXPAND, 5);
GridBagSizer1->Add(StaticBoxSizer3, wxGBPosition(7, 1), wxGBSpan(4, 1), wxALL|wxEXPAND, 0);
FlexGridSizer5 = new wxFlexGridSizer(0, 2, 0, 0);
StaticText3 = new wxStaticText(this, ID_STATICTEXT2, _("Link controller upload:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
FlexGridSizer5->Add(StaticText3, 1, wxALL|wxEXPAND, 5);
Choice_LinkControllerUpload = new wxChoice(this, ID_CHOICE2, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE2"));
Choice_LinkControllerUpload->SetSelection( Choice_LinkControllerUpload->Append(_("None")) );
Choice_LinkControllerUpload->Append(_("Inputs and Outputs"));
FlexGridSizer5->Add(Choice_LinkControllerUpload, 1, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(FlexGridSizer5, wxGBPosition(7, 0), wxDefaultSpan, wxALL|wxEXPAND, 0);
FlexGridSizer6 = new wxFlexGridSizer(0, 2, 0, 0);
StaticText1 = new wxStaticText(this, wxID_ANY, _("eMail Address:"), wxDefaultPosition, wxDefaultSize, 0, _T("wxID_ANY"));
FlexGridSizer6->Add(StaticText1, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
eMailTextControl = new wxTextCtrl(this, ID_TEXTCTRL1, _("noone@nowhere.xlights.org"), wxDefaultPosition, wxDLG_UNIT(this,wxSize(180,-1)), 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
FlexGridSizer6->Add(eMailTextControl, 1, wxALL|wxEXPAND, 5);
GridBagSizer1->Add(FlexGridSizer6, wxGBPosition(0, 0), wxGBSpan(1, 2), wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
GPURenderCheckbox = new wxCheckBox(this, ID_CHECKBOX9, _("GPU Rendering"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX9"));
GPURenderCheckbox->SetValue(true);
GPURenderCheckbox->SetToolTip(_("Some effects can be rendered on the GPU if this is enabled."));
GridBagSizer1->Add(GPURenderCheckbox, wxGBPosition(2, 0), wxDefaultSpan, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
SetSizer(GridBagSizer1);
GridBagSizer1->Fit(this);
GridBagSizer1->SetSizeHints(this);

Connect(ID_CHOICE1,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_TEXTCTRL1,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_TEXTCTRL1,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX1,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE4,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX7,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE_CODEC,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_SPINCTRLDOUBLE_BITRATE,wxEVT_SPINCTRLDOUBLE,(wxObjectEventFunction)&OtherSettingsPanel::OnSpinCtrlDoubleBitrateChange);
Connect(ID_CHECKBOX2,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX3,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE2,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX4,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX6,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX5,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE3,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX8,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE1, wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX1, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE4, wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX7, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE_CODEC, wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_SPINCTRLDOUBLE_BITRATE, wxEVT_SPINCTRLDOUBLE, (wxObjectEventFunction)&OtherSettingsPanel::OnSpinCtrlDoubleBitrateChange);
Connect(ID_CHECKBOX2, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX3, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX4, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX6, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX5, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE3, wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX8, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHOICE2, wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_TEXTCTRL1, wxEVT_COMMAND_TEXT_UPDATED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_TEXTCTRL1, wxEVT_COMMAND_TEXT_ENTER, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(ID_CHECKBOX9, wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&OtherSettingsPanel::OnControlChanged);
Connect(wxEVT_PAINT, (wxObjectEventFunction)&OtherSettingsPanel::OnPaint);
//*)

#ifdef __LINUX__
HardwareVideoDecodingCheckBox->Hide();
ShaderCheckbox->Hide();
HardwareVideoRenderChoice->Hide();
GPURenderCheckbox->Hide();
#endif
#ifdef __WXOSX__
//repurpose ShaderCheckbox for GPU rendering
if (isMetalComputeSupported()) {
ShaderCheckbox->SetLabel("GPU Rendering");
ShaderCheckbox->SetToolTip("Some effects (Butterfly, Plasma, Warp, RotoZoom, and Blur) can be rendered on the GPU if this is enabled.");
} else {
ShaderCheckbox->Hide();
if (!isMetalComputeSupported()) {
GPURenderCheckbox->Hide();
}
ShaderCheckbox->Hide();
HardwareVideoRenderChoice->Hide();
#endif

#ifdef _MSC_VER
#ifdef __WXMSW__
GPURenderCheckbox->Hide();
MSWDisableComposited();
#endif
#endif
}

OtherSettingsPanel::~OtherSettingsPanel()
Expand All @@ -214,14 +226,12 @@ bool OtherSettingsPanel::TransferDataFromWindow() {
frame->SetExcludeAudioFromPackagedSequences(ExcludeAudioCheckBox->IsChecked());
frame->SetExcludePresetsFromPackagedSequences(ExcludePresetsCheckBox->IsChecked());
frame->SetHardwareVideoAccelerated(HardwareVideoDecodingCheckBox->IsChecked());
#ifdef _MSC_VER
#ifdef __WXMSW__
frame->SetHardwareVideoRenderer(HardwareVideoRenderChoice->GetSelection());
HardwareVideoRenderChoice->Enable(HardwareVideoDecodingCheckBox->IsChecked());
#endif
#ifdef __WXOSX__
frame->SetUseGPURendering(ShaderCheckbox->IsChecked());
#else
frame->SetUseGPURendering(GPURenderCheckbox->IsChecked());
frame->SetShadersOnBackgroundThreads(ShaderCheckbox->IsChecked());
#endif
frame->SetUserEMAIL(eMailTextControl->GetValue());
frame->SetLinkedSave(Choice_LinkSave->GetStringSelection());
frame->SetLinkedControllerUpload(Choice_LinkControllerUpload->GetStringSelection());
Expand All @@ -239,14 +249,12 @@ bool OtherSettingsPanel::TransferDataToWindow() {
ExcludeAudioCheckBox->SetValue(frame->ExcludeAudioFromPackagedSequences());
ExcludePresetsCheckBox->SetValue(frame->ExcludePresetsFromPackagedSequences());
HardwareVideoDecodingCheckBox->SetValue(frame->HardwareVideoAccelerated());
#ifdef _MSC_VER
#ifdef __WXMSW__
HardwareVideoRenderChoice->SetSelection(frame->HardwareVideoRenderer());
HardwareVideoRenderChoice->Enable(frame->HardwareVideoAccelerated());
#endif
#ifdef __WXOSX__
ShaderCheckbox->SetValue(frame->UseGPURendering());
#else
GPURenderCheckbox->SetValue(frame->UseGPURendering());
ShaderCheckbox->SetValue(frame->ShadersOnBackgroundThreads());
#endif
eMailTextControl->ChangeValue(frame->UserEMAIL());
Choice_LinkSave->SetStringSelection(frame->GetLinkedSave());
Choice_LinkControllerUpload->SetStringSelection(frame->GetLinkedControllerUpload());
Expand Down Expand Up @@ -281,3 +289,7 @@ void OtherSettingsPanel::OnSpinCtrlDoubleBitrateChange(wxSpinDoubleEvent& event)
TransferDataFromWindow();
}
}

void OtherSettingsPanel::OnPaint(wxPaintEvent& event)
{
}

1 comment on commit 406a218

@derwin12
Copy link
Collaborator

@derwin12 derwin12 commented on 406a218 Apr 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dkulp (thought it was easy to ping you this way) .. Can you create an fseq from xlights and test on actual lights. We have a user on mac and the .fseq just creates a blinking set of lights. He can play older .fseq no problem.
Update .. tried .02 .. same flashing .. so false alarm. Still debugging. 2023...no issue with an .fseq from another person.

Please sign in to comment.