Merge pull request #5218 from lioncash/video
VideoConfigDiag: Move event implementations into the cpp file
This commit is contained in:
commit
055adad8f1
|
@ -29,6 +29,7 @@
|
|||
#include "Common/FileUtil.h"
|
||||
#include "Common/IniFile.h"
|
||||
#include "Common/Logging/LogManager.h"
|
||||
#include "Common/MsgHandler.h"
|
||||
#include "Common/Thread.h"
|
||||
|
||||
#include "Core/Analytics.h"
|
||||
|
@ -531,14 +532,16 @@ void Host_ConnectWiimote(int wm_idx, bool connect)
|
|||
|
||||
void Host_ShowVideoConfig(void* parent, const std::string& backend_name)
|
||||
{
|
||||
wxWindow* const parent_window = static_cast<wxWindow*>(parent);
|
||||
|
||||
if (backend_name == "Software Renderer")
|
||||
{
|
||||
SoftwareVideoConfigDialog diag((wxWindow*)parent, backend_name);
|
||||
SoftwareVideoConfigDialog diag(parent_window, backend_name);
|
||||
diag.ShowModal();
|
||||
}
|
||||
else
|
||||
{
|
||||
VideoConfigDiag diag((wxWindow*)parent, backend_name);
|
||||
VideoConfigDiag diag(parent_window, backend_name);
|
||||
diag.ShowModal();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "DolphinWX/VideoConfigDiag.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <map>
|
||||
|
@ -24,9 +26,11 @@
|
|||
#include "Common/FileUtil.h"
|
||||
#include "Common/SysConf.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "Core/Core.h"
|
||||
#include "DolphinWX/DolphinSlider.h"
|
||||
#include "DolphinWX/Frame.h"
|
||||
#include "DolphinWX/Main.h"
|
||||
#include "DolphinWX/VideoConfigDiag.h"
|
||||
#include "DolphinWX/PostProcessingConfigDiag.h"
|
||||
#include "DolphinWX/WxUtils.h"
|
||||
#include "VideoCommon/PostProcessing.h"
|
||||
#include "VideoCommon/VideoBackendBase.h"
|
||||
|
@ -77,12 +81,6 @@ void SettingChoice::UpdateValue(wxCommandEvent& ev)
|
|||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_Close(wxCommandEvent& ev)
|
||||
{
|
||||
g_Config.Save(File::GetUserPath(D_CONFIG_IDX) + "GFX.ini");
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
static wxString default_desc =
|
||||
wxTRANSLATE("Move the mouse pointer over an option to display a detailed description.");
|
||||
#if defined(_WIN32)
|
||||
|
@ -750,7 +748,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string& title)
|
|||
DolphinSlider* const stc_slider =
|
||||
new DolphinSlider(page_hacks, wxID_ANY, std::max(slider_pos, 0), 0, 2, wxDefaultPosition,
|
||||
wxDefaultSize, wxSL_HORIZONTAL | wxSL_BOTTOM);
|
||||
stc_slider->Bind(wxEVT_SLIDER, &VideoConfigDiag::Event_Stc, this);
|
||||
stc_slider->Bind(wxEVT_SLIDER, &VideoConfigDiag::Event_SafeTextureCache, this);
|
||||
RegisterControl(stc_slider, wxGetTranslation(stc_desc));
|
||||
|
||||
wxBoxSizer* const slide_szr = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
@ -974,6 +972,45 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string& title)
|
|||
UpdateWindowUI();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_Backend(wxCommandEvent& ev)
|
||||
{
|
||||
auto& new_backend = g_available_video_backends[ev.GetInt()];
|
||||
|
||||
if (g_video_backend != new_backend.get())
|
||||
{
|
||||
bool do_switch = !Core::IsRunning();
|
||||
if (new_backend->GetName() == "Software Renderer")
|
||||
{
|
||||
do_switch =
|
||||
(wxYES ==
|
||||
wxMessageBox(_("Software rendering is an order of magnitude slower than using the "
|
||||
"other backends.\nIt's only useful for debugging purposes.\nDo you "
|
||||
"really want to enable software rendering? If unsure, select 'No'."),
|
||||
_("Warning"), wxYES_NO | wxNO_DEFAULT | wxICON_EXCLAMATION, this));
|
||||
}
|
||||
|
||||
if (do_switch)
|
||||
{
|
||||
// TODO: Only reopen the dialog if the software backend is
|
||||
// selected (make sure to reinitialize backend info)
|
||||
// reopen the dialog
|
||||
Close();
|
||||
|
||||
g_video_backend = new_backend.get();
|
||||
SConfig::GetInstance().m_strVideoBackend = g_video_backend->GetName();
|
||||
|
||||
g_video_backend->ShowConfig(GetParent());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Select current backend again
|
||||
choice_backend->SetStringSelection(StrToWxStr(g_video_backend->GetName()));
|
||||
}
|
||||
}
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_DisplayResolution(wxCommandEvent& ev)
|
||||
{
|
||||
// "Auto" has been translated, it needs to be the English string "Auto" to work
|
||||
|
@ -994,6 +1031,134 @@ void VideoConfigDiag::Event_DisplayResolution(wxCommandEvent& ev)
|
|||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_ProgressiveScan(wxCommandEvent& ev)
|
||||
{
|
||||
SConfig::GetInstance().bProgressive = ev.IsChecked();
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_SafeTextureCache(wxCommandEvent& ev)
|
||||
{
|
||||
int samples[] = {0, 512, 128};
|
||||
vconfig.iSafeTextureCache_ColorSamples = samples[ev.GetInt()];
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_PPShader(wxCommandEvent& ev)
|
||||
{
|
||||
const int sel = ev.GetInt();
|
||||
if (sel)
|
||||
vconfig.sPostProcessingShader = WxStrToStr(ev.GetString());
|
||||
else
|
||||
vconfig.sPostProcessingShader.clear();
|
||||
|
||||
// Should we enable the configuration button?
|
||||
PostProcessingShaderConfiguration postprocessing_shader;
|
||||
postprocessing_shader.LoadShader(vconfig.sPostProcessingShader);
|
||||
button_config_pp->Enable(postprocessing_shader.HasOptions());
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_ConfigurePPShader(wxCommandEvent& ev)
|
||||
{
|
||||
PostProcessingConfigDiag dialog(this, vconfig.sPostProcessingShader);
|
||||
dialog.ShowModal();
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_StereoDepth(wxCommandEvent& ev)
|
||||
{
|
||||
vconfig.iStereoDepth = ev.GetInt();
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_StereoConvergence(wxCommandEvent& ev)
|
||||
{
|
||||
// Snap the slider
|
||||
int value = ev.GetInt();
|
||||
if (90 < value && value < 110)
|
||||
conv_slider->SetValue(100);
|
||||
|
||||
vconfig.iStereoConvergencePercentage = conv_slider->GetValue();
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_StereoMode(wxCommandEvent& ev)
|
||||
{
|
||||
if (vconfig.backend_info.bSupportsPostProcessing)
|
||||
{
|
||||
// Anaglyph overrides post-processing shaders
|
||||
choice_ppshader->Clear();
|
||||
}
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::Event_Close(wxCommandEvent& ev)
|
||||
{
|
||||
g_Config.Save(File::GetUserPath(D_CONFIG_IDX) + "GFX.ini");
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void VideoConfigDiag::OnUpdateUI(wxUpdateUIEvent& ev)
|
||||
{
|
||||
// Anti-aliasing
|
||||
choice_aamode->Enable(vconfig.backend_info.AAModes.size() > 1);
|
||||
text_aamode->Enable(vconfig.backend_info.AAModes.size() > 1);
|
||||
|
||||
// XFB
|
||||
virtual_xfb->Enable(vconfig.bUseXFB);
|
||||
real_xfb->Enable(vconfig.bUseXFB);
|
||||
|
||||
// custom textures
|
||||
cache_hires_textures->Enable(vconfig.bHiresTextures);
|
||||
|
||||
// Repopulating the post-processing shaders can't be done from an event
|
||||
if (choice_ppshader && choice_ppshader->IsEmpty())
|
||||
PopulatePostProcessingShaders();
|
||||
|
||||
// Things which shouldn't be changed during emulation
|
||||
if (Core::IsRunning())
|
||||
{
|
||||
choice_backend->Disable();
|
||||
label_backend->Disable();
|
||||
|
||||
// D3D only
|
||||
if (vconfig.backend_info.Adapters.size())
|
||||
{
|
||||
choice_adapter->Disable();
|
||||
label_adapter->Disable();
|
||||
}
|
||||
|
||||
#ifndef __APPLE__
|
||||
// This isn't supported on OS X.
|
||||
|
||||
choice_display_resolution->Disable();
|
||||
label_display_resolution->Disable();
|
||||
#endif
|
||||
|
||||
progressive_scan_checkbox->Disable();
|
||||
render_to_main_checkbox->Disable();
|
||||
}
|
||||
|
||||
// Don't enable 'vertex rounding' at native
|
||||
if (vconfig.iEFBScale == SCALE_1X)
|
||||
{
|
||||
vertex_rounding_checkbox->Enable(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
vertex_rounding_checkbox->Enable(true);
|
||||
}
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
SettingCheckBox* VideoConfigDiag::CreateCheckBox(wxWindow* parent, const wxString& label,
|
||||
const wxString& description, bool& setting,
|
||||
bool reverse, long style)
|
||||
|
|
|
@ -18,15 +18,9 @@
|
|||
#include <wx/stattext.h>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/SysConf.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "Core/Core.h"
|
||||
#include "DolphinWX/DolphinSlider.h"
|
||||
#include "DolphinWX/PostProcessingConfigDiag.h"
|
||||
#include "DolphinWX/WxUtils.h"
|
||||
#include "VideoCommon/PostProcessing.h"
|
||||
#include "VideoCommon/VideoBackendBase.h"
|
||||
#include "VideoCommon/VideoConfig.h"
|
||||
|
||||
class DolphinSlider;
|
||||
struct VideoConfig;
|
||||
|
||||
class wxBoxSizer;
|
||||
class wxControl;
|
||||
|
@ -87,171 +81,22 @@ public:
|
|||
VideoConfigDiag(wxWindow* parent, const std::string& title);
|
||||
|
||||
protected:
|
||||
void Event_Backend(wxCommandEvent& ev)
|
||||
{
|
||||
auto& new_backend = g_available_video_backends[ev.GetInt()];
|
||||
|
||||
if (g_video_backend != new_backend.get())
|
||||
{
|
||||
bool do_switch = !Core::IsRunning();
|
||||
if (new_backend->GetName() == "Software Renderer")
|
||||
{
|
||||
do_switch =
|
||||
(wxYES ==
|
||||
wxMessageBox(_("Software rendering is an order of magnitude slower than using the "
|
||||
"other backends.\nIt's only useful for debugging purposes.\nDo you "
|
||||
"really want to enable software rendering? If unsure, select 'No'."),
|
||||
_("Warning"), wxYES_NO | wxNO_DEFAULT | wxICON_EXCLAMATION, this));
|
||||
}
|
||||
|
||||
if (do_switch)
|
||||
{
|
||||
// TODO: Only reopen the dialog if the software backend is
|
||||
// selected (make sure to reinitialize backend info)
|
||||
// reopen the dialog
|
||||
Close();
|
||||
|
||||
g_video_backend = new_backend.get();
|
||||
SConfig::GetInstance().m_strVideoBackend = g_video_backend->GetName();
|
||||
|
||||
g_video_backend->ShowConfig(GetParent());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Select current backend again
|
||||
choice_backend->SetStringSelection(StrToWxStr(g_video_backend->GetName()));
|
||||
}
|
||||
}
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
void Event_Adapter(wxCommandEvent& ev) { ev.Skip(); } // TODO
|
||||
void Event_Backend(wxCommandEvent& ev);
|
||||
void Event_DisplayResolution(wxCommandEvent& ev);
|
||||
void Event_ProgressiveScan(wxCommandEvent& ev);
|
||||
void Event_SafeTextureCache(wxCommandEvent& ev);
|
||||
|
||||
void Event_ProgressiveScan(wxCommandEvent& ev)
|
||||
{
|
||||
SConfig::GetInstance().bProgressive = ev.IsChecked();
|
||||
ev.Skip();
|
||||
}
|
||||
void Event_PPShader(wxCommandEvent& ev);
|
||||
void Event_ConfigurePPShader(wxCommandEvent& ev);
|
||||
|
||||
void Event_Stc(wxCommandEvent& ev)
|
||||
{
|
||||
int samples[] = {0, 512, 128};
|
||||
vconfig.iSafeTextureCache_ColorSamples = samples[ev.GetInt()];
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void Event_PPShader(wxCommandEvent& ev)
|
||||
{
|
||||
const int sel = ev.GetInt();
|
||||
if (sel)
|
||||
vconfig.sPostProcessingShader = WxStrToStr(ev.GetString());
|
||||
else
|
||||
vconfig.sPostProcessingShader.clear();
|
||||
|
||||
// Should we enable the configuration button?
|
||||
PostProcessingShaderConfiguration postprocessing_shader;
|
||||
postprocessing_shader.LoadShader(vconfig.sPostProcessingShader);
|
||||
button_config_pp->Enable(postprocessing_shader.HasOptions());
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void Event_ConfigurePPShader(wxCommandEvent& ev)
|
||||
{
|
||||
PostProcessingConfigDiag dialog(this, vconfig.sPostProcessingShader);
|
||||
dialog.ShowModal();
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void Event_StereoDepth(wxCommandEvent& ev)
|
||||
{
|
||||
vconfig.iStereoDepth = ev.GetInt();
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void Event_StereoConvergence(wxCommandEvent& ev)
|
||||
{
|
||||
// Snap the slider
|
||||
int value = ev.GetInt();
|
||||
if (90 < value && value < 110)
|
||||
conv_slider->SetValue(100);
|
||||
|
||||
vconfig.iStereoConvergencePercentage = conv_slider->GetValue();
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
|
||||
void Event_StereoMode(wxCommandEvent& ev)
|
||||
{
|
||||
if (vconfig.backend_info.bSupportsPostProcessing)
|
||||
{
|
||||
// Anaglyph overrides post-processing shaders
|
||||
choice_ppshader->Clear();
|
||||
}
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
void Event_StereoDepth(wxCommandEvent& ev);
|
||||
void Event_StereoConvergence(wxCommandEvent& ev);
|
||||
void Event_StereoMode(wxCommandEvent& ev);
|
||||
|
||||
void Event_Close(wxCommandEvent&);
|
||||
|
||||
// Enables/disables UI elements depending on current config
|
||||
void OnUpdateUI(wxUpdateUIEvent& ev)
|
||||
{
|
||||
// Anti-aliasing
|
||||
choice_aamode->Enable(vconfig.backend_info.AAModes.size() > 1);
|
||||
text_aamode->Enable(vconfig.backend_info.AAModes.size() > 1);
|
||||
|
||||
// XFB
|
||||
virtual_xfb->Enable(vconfig.bUseXFB);
|
||||
real_xfb->Enable(vconfig.bUseXFB);
|
||||
|
||||
// custom textures
|
||||
cache_hires_textures->Enable(vconfig.bHiresTextures);
|
||||
|
||||
// Repopulating the post-processing shaders can't be done from an event
|
||||
if (choice_ppshader && choice_ppshader->IsEmpty())
|
||||
PopulatePostProcessingShaders();
|
||||
|
||||
// Things which shouldn't be changed during emulation
|
||||
if (Core::IsRunning())
|
||||
{
|
||||
choice_backend->Disable();
|
||||
label_backend->Disable();
|
||||
|
||||
// D3D only
|
||||
if (vconfig.backend_info.Adapters.size())
|
||||
{
|
||||
choice_adapter->Disable();
|
||||
label_adapter->Disable();
|
||||
}
|
||||
|
||||
#ifndef __APPLE__
|
||||
// This isn't supported on OS X.
|
||||
|
||||
choice_display_resolution->Disable();
|
||||
label_display_resolution->Disable();
|
||||
#endif
|
||||
|
||||
progressive_scan_checkbox->Disable();
|
||||
render_to_main_checkbox->Disable();
|
||||
}
|
||||
|
||||
// Don't enable 'vertex rounding' at native
|
||||
if (vconfig.iEFBScale == SCALE_1X)
|
||||
{
|
||||
vertex_rounding_checkbox->Enable(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
vertex_rounding_checkbox->Enable(true);
|
||||
}
|
||||
|
||||
ev.Skip();
|
||||
}
|
||||
void OnUpdateUI(wxUpdateUIEvent& ev);
|
||||
|
||||
// Creates controls and connects their enter/leave window events to Evt_Enter/LeaveControl
|
||||
SettingCheckBox* CreateCheckBox(wxWindow* parent, const wxString& label,
|
||||
|
|
Loading…
Reference in New Issue