Isolate D3D and Software Renderer from wxWidgets code
This commit is contained in:
parent
35654513c1
commit
a66a7e1344
|
@ -63,6 +63,7 @@ if(wxWidgets_FOUND)
|
||||||
MemoryCards/WiiSaveCrypted.cpp
|
MemoryCards/WiiSaveCrypted.cpp
|
||||||
NetWindow.cpp
|
NetWindow.cpp
|
||||||
PatchAddEdit.cpp
|
PatchAddEdit.cpp
|
||||||
|
SoftwareVideoConfigDialog.cpp
|
||||||
TASInputDlg.cpp
|
TASInputDlg.cpp
|
||||||
VideoConfigDiag.cpp
|
VideoConfigDiag.cpp
|
||||||
WXInputBase.cpp
|
WXInputBase.cpp
|
||||||
|
|
|
@ -91,6 +91,7 @@
|
||||||
<ClCompile Include="MemoryCards\WiiSaveCrypted.cpp" />
|
<ClCompile Include="MemoryCards\WiiSaveCrypted.cpp" />
|
||||||
<ClCompile Include="NetWindow.cpp" />
|
<ClCompile Include="NetWindow.cpp" />
|
||||||
<ClCompile Include="PatchAddEdit.cpp" />
|
<ClCompile Include="PatchAddEdit.cpp" />
|
||||||
|
<ClCompile Include="SoftwareVideoConfigDialog.cpp" />
|
||||||
<ClCompile Include="stdafx.cpp">
|
<ClCompile Include="stdafx.cpp">
|
||||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -139,6 +140,7 @@
|
||||||
<ClInclude Include="MemoryCards\WiiSaveCrypted.h" />
|
<ClInclude Include="MemoryCards\WiiSaveCrypted.h" />
|
||||||
<ClInclude Include="NetWindow.h" />
|
<ClInclude Include="NetWindow.h" />
|
||||||
<ClInclude Include="PatchAddEdit.h" />
|
<ClInclude Include="PatchAddEdit.h" />
|
||||||
|
<ClInclude Include="SoftwareVideoConfigDialog.h" />
|
||||||
<ClInclude Include="stdafx.h" />
|
<ClInclude Include="stdafx.h" />
|
||||||
<ClInclude Include="TASInputDlg.h" />
|
<ClInclude Include="TASInputDlg.h" />
|
||||||
<ClInclude Include="VideoConfigDiag.h" />
|
<ClInclude Include="VideoConfigDiag.h" />
|
||||||
|
|
|
@ -154,6 +154,9 @@
|
||||||
<Filter>GUI</Filter>
|
<Filter>GUI</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="stdafx.cpp" />
|
<ClCompile Include="stdafx.cpp" />
|
||||||
|
<ClCompile Include="SoftwareVideoConfigDialog.cpp">
|
||||||
|
<Filter>GUI\Video</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="GLInterface\WGL.h" />
|
<ClInclude Include="GLInterface\WGL.h" />
|
||||||
|
@ -276,6 +279,9 @@
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="stdafx.h" />
|
<ClInclude Include="stdafx.h" />
|
||||||
<ClInclude Include="GLInterface\GLInterface.h" />
|
<ClInclude Include="GLInterface\GLInterface.h" />
|
||||||
|
<ClInclude Include="SoftwareVideoConfigDialog.h">
|
||||||
|
<Filter>GUI\Video</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Text Include="CMakeLists.txt" />
|
<Text Include="CMakeLists.txt" />
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
#include "DolphinWX/Frame.h"
|
#include "DolphinWX/Frame.h"
|
||||||
#include "DolphinWX/Globals.h"
|
#include "DolphinWX/Globals.h"
|
||||||
#include "DolphinWX/Main.h"
|
#include "DolphinWX/Main.h"
|
||||||
|
#include "DolphinWX/SoftwareVideoConfigDialog.h"
|
||||||
#include "DolphinWX/VideoConfigDiag.h"
|
#include "DolphinWX/VideoConfigDiag.h"
|
||||||
#include "DolphinWX/WxUtils.h"
|
#include "DolphinWX/WxUtils.h"
|
||||||
#include "DolphinWX/Debugger/CodeWindow.h"
|
#include "DolphinWX/Debugger/CodeWindow.h"
|
||||||
|
@ -704,7 +705,14 @@ void Host_ConnectWiimote(int wm_idx, bool connect)
|
||||||
void Host_ShowVideoConfig(void* parent, const std::string& backend_name,
|
void Host_ShowVideoConfig(void* parent, const std::string& backend_name,
|
||||||
const std::string& config_name)
|
const std::string& config_name)
|
||||||
{
|
{
|
||||||
VideoConfigDiag diag((wxWindow*)parent, WxStrToStr(backend_name),
|
if (backend_name == "Direct3D" || backend_name == "OpenGL")
|
||||||
WxStrToStr(config_name));
|
{
|
||||||
|
VideoConfigDiag diag((wxWindow*)parent, backend_name, config_name);
|
||||||
diag.ShowModal();
|
diag.ShowModal();
|
||||||
|
}
|
||||||
|
else if (backend_name == "Software Renderer")
|
||||||
|
{
|
||||||
|
SoftwareVideoConfigDialog diag((wxWindow*)parent, backend_name, config_name);
|
||||||
|
diag.ShowModal();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,144 @@
|
||||||
|
// Copyright 2013 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <wx/button.h>
|
||||||
|
#include <wx/checkbox.h>
|
||||||
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/notebook.h>
|
||||||
|
#include <wx/panel.h>
|
||||||
|
#include <wx/spinctrl.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/textctrl.h>
|
||||||
|
#include <wx/wx.h>
|
||||||
|
|
||||||
|
#include "Common/FileUtil.h"
|
||||||
|
#include "Core/Core.h"
|
||||||
|
#include "DolphinWX/SoftwareVideoConfigDialog.h"
|
||||||
|
#include "DolphinWX/VideoConfigDiag.h"
|
||||||
|
#include "DolphinWX/WxUtils.h"
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
IntegerSetting<T>::IntegerSetting(wxWindow* parent, const wxString& label, T& setting, int minVal, int maxVal, long style) :
|
||||||
|
wxSpinCtrl(parent, -1, label, wxDefaultPosition, wxDefaultSize, style),
|
||||||
|
m_setting(setting)
|
||||||
|
{
|
||||||
|
SetRange(minVal, maxVal);
|
||||||
|
SetValue(m_setting);
|
||||||
|
Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &IntegerSetting::UpdateValue, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SoftwareVideoConfigDialog::SoftwareVideoConfigDialog(wxWindow* parent, const std::string& title, const std::string& _ininame) :
|
||||||
|
wxDialog(parent, -1,
|
||||||
|
wxString(wxString::Format(_("Dolphin %s Graphics Configuration"), title))),
|
||||||
|
vconfig(g_SWVideoConfig),
|
||||||
|
ininame(_ininame)
|
||||||
|
{
|
||||||
|
vconfig.Load((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str());
|
||||||
|
|
||||||
|
wxNotebook* const notebook = new wxNotebook(this, -1, wxDefaultPosition, wxDefaultSize);
|
||||||
|
|
||||||
|
// -- GENERAL --
|
||||||
|
{
|
||||||
|
wxPanel* const page_general= new wxPanel(notebook, -1, wxDefaultPosition);
|
||||||
|
notebook->AddPage(page_general, wxT("General"));
|
||||||
|
wxBoxSizer* const szr_general = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
// - rendering
|
||||||
|
{
|
||||||
|
wxStaticBoxSizer* const group_rendering = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Rendering"));
|
||||||
|
szr_general->Add(group_rendering, 0, wxEXPAND | wxALL, 5);
|
||||||
|
wxGridSizer* const szr_rendering = new wxGridSizer(2, 5, 5);
|
||||||
|
group_rendering->Add(szr_rendering, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
// backend
|
||||||
|
wxStaticText* const label_backend = new wxStaticText(page_general, wxID_ANY, _("Backend:"));
|
||||||
|
wxChoice* const choice_backend = new wxChoice(page_general, wxID_ANY, wxDefaultPosition);
|
||||||
|
|
||||||
|
for (const VideoBackend* backend : g_available_video_backends)
|
||||||
|
{
|
||||||
|
choice_backend->AppendString(StrToWxStr(backend->GetDisplayName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: How to get the translated plugin name?
|
||||||
|
choice_backend->SetStringSelection(StrToWxStr(g_video_backend->GetName()));
|
||||||
|
choice_backend->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &SoftwareVideoConfigDialog::Event_Backend, this);
|
||||||
|
|
||||||
|
szr_rendering->Add(label_backend, 1, wxALIGN_CENTER_VERTICAL, 5);
|
||||||
|
szr_rendering->Add(choice_backend, 1, 0, 0);
|
||||||
|
|
||||||
|
if (Core::GetState() != Core::CORE_UNINITIALIZED)
|
||||||
|
{
|
||||||
|
label_backend->Disable();
|
||||||
|
choice_backend->Disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
// rasterizer
|
||||||
|
szr_rendering->Add(new SettingCheckBox(page_general, wxT("Hardware rasterization"), wxT(""), vconfig.bHwRasterizer));
|
||||||
|
|
||||||
|
// xfb
|
||||||
|
szr_rendering->Add(new SettingCheckBox(page_general, wxT("Bypass XFB"), wxT(""), vconfig.bBypassXFB));
|
||||||
|
}
|
||||||
|
|
||||||
|
// - info
|
||||||
|
{
|
||||||
|
wxStaticBoxSizer* const group_info = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Overlay Information"));
|
||||||
|
szr_general->Add(group_info, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
wxGridSizer* const szr_info = new wxGridSizer(2, 5, 5);
|
||||||
|
group_info->Add(szr_info, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
szr_info->Add(new SettingCheckBox(page_general, wxT("Various Statistics"), wxT(""), vconfig.bShowStats));
|
||||||
|
}
|
||||||
|
|
||||||
|
// - utility
|
||||||
|
{
|
||||||
|
wxStaticBoxSizer* const group_utility = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Utility"));
|
||||||
|
szr_general->Add(group_utility, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
wxGridSizer* const szr_utility = new wxGridSizer(2, 5, 5);
|
||||||
|
group_utility->Add(szr_utility, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Textures"), wxT(""), vconfig.bDumpTextures));
|
||||||
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Objects"), wxT(""), vconfig.bDumpObjects));
|
||||||
|
szr_utility->Add(new SettingCheckBox(page_general, wxT("Dump Frames"), wxT(""), vconfig.bDumpFrames));
|
||||||
|
|
||||||
|
// - debug only
|
||||||
|
wxStaticBoxSizer* const group_debug_only_utility = new wxStaticBoxSizer(wxHORIZONTAL, page_general, wxT("Debug Only"));
|
||||||
|
group_utility->Add(group_debug_only_utility, 0, wxEXPAND | wxBOTTOM, 5);
|
||||||
|
wxGridSizer* const szr_debug_only_utility = new wxGridSizer(2, 5, 5);
|
||||||
|
group_debug_only_utility->Add(szr_debug_only_utility, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
szr_debug_only_utility->Add(new SettingCheckBox(page_general, wxT("Dump TEV Stages"), wxT(""), vconfig.bDumpTevStages));
|
||||||
|
szr_debug_only_utility->Add(new SettingCheckBox(page_general, wxT("Dump Texture Fetches"), wxT(""), vconfig.bDumpTevTextureFetches));
|
||||||
|
}
|
||||||
|
|
||||||
|
// - misc
|
||||||
|
{
|
||||||
|
wxStaticBoxSizer* const group_misc = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Drawn Object Range"));
|
||||||
|
szr_general->Add(group_misc, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
wxFlexGridSizer* const szr_misc = new wxFlexGridSizer(2, 5, 5);
|
||||||
|
group_misc->Add(szr_misc, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
szr_misc->Add(new U32Setting(page_general, wxT("Start"), vconfig.drawStart, 0, 100000));
|
||||||
|
szr_misc->Add(new U32Setting(page_general, wxT("End"), vconfig.drawEnd, 0, 100000));
|
||||||
|
}
|
||||||
|
|
||||||
|
page_general->SetSizerAndFit(szr_general);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxBoxSizer* const szr_main = new wxBoxSizer(wxVERTICAL);
|
||||||
|
szr_main->Add(notebook, 1, wxEXPAND | wxALL, 5);
|
||||||
|
szr_main->Add(new wxButton(this, wxID_OK, wxT("Close"), wxDefaultPosition),
|
||||||
|
0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, 5);
|
||||||
|
|
||||||
|
SetSizerAndFit(szr_main);
|
||||||
|
Center();
|
||||||
|
SetFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
SoftwareVideoConfigDialog::~SoftwareVideoConfigDialog()
|
||||||
|
{
|
||||||
|
g_SWVideoConfig.Save((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str());
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
// Copyright 2013 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
// TODO: Merge this with the original VideoConfigDiag or something
|
||||||
|
// This is an awful way of managing a separate video backend.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <wx/button.h>
|
||||||
|
#include <wx/checkbox.h>
|
||||||
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/notebook.h>
|
||||||
|
#include <wx/panel.h>
|
||||||
|
#include <wx/spinctrl.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/textctrl.h>
|
||||||
|
#include <wx/wx.h>
|
||||||
|
|
||||||
|
#include "Core/ConfigManager.h"
|
||||||
|
#include "VideoBackends/Software/SWVideoConfig.h"
|
||||||
|
#include "VideoCommon/VideoBackendBase.h"
|
||||||
|
|
||||||
|
class SoftwareVideoConfigDialog : public wxDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SoftwareVideoConfigDialog(wxWindow* parent, const std::string &title, const std::string& ininame);
|
||||||
|
~SoftwareVideoConfigDialog();
|
||||||
|
|
||||||
|
void Event_Backend(wxCommandEvent &ev)
|
||||||
|
{
|
||||||
|
VideoBackend* new_backend = g_available_video_backends[ev.GetInt()];
|
||||||
|
|
||||||
|
if (g_video_backend != new_backend)
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
|
||||||
|
g_video_backend = new_backend;
|
||||||
|
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend = g_video_backend->GetName();
|
||||||
|
|
||||||
|
g_video_backend->ShowConfig(GetParent());
|
||||||
|
}
|
||||||
|
ev.Skip();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
SWVideoConfig& vconfig;
|
||||||
|
std::string ininame;
|
||||||
|
};
|
|
@ -3,7 +3,6 @@
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <wx/wx.h>
|
|
||||||
|
|
||||||
#include "Common/FileUtil.h"
|
#include "Common/FileUtil.h"
|
||||||
#include "Common/IniFile.h"
|
#include "Common/IniFile.h"
|
||||||
|
@ -14,9 +13,6 @@
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
#include "Core/Host.h"
|
#include "Core/Host.h"
|
||||||
|
|
||||||
#include "DolphinWX/VideoConfigDiag.h"
|
|
||||||
#include "DolphinWX/Debugger/DebuggerPanel.h"
|
|
||||||
|
|
||||||
#include "VideoBackends/D3D/D3DBase.h"
|
#include "VideoBackends/D3D/D3DBase.h"
|
||||||
#include "VideoBackends/D3D/D3DUtil.h"
|
#include "VideoBackends/D3D/D3DUtil.h"
|
||||||
#include "VideoBackends/D3D/Globals.h"
|
#include "VideoBackends/D3D/Globals.h"
|
||||||
|
@ -139,13 +135,10 @@ void InitBackendInfo()
|
||||||
DX11::D3D::UnloadD3D();
|
DX11::D3D::UnloadD3D();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoBackend::ShowConfig(void *_hParent)
|
void VideoBackend::ShowConfig(void *hParent)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_WX) && HAVE_WX
|
|
||||||
InitBackendInfo();
|
InitBackendInfo();
|
||||||
VideoConfigDiag diag((wxWindow*)_hParent, _trans("Direct3D"), "gfx_dx11");
|
Host_ShowVideoConfig(hParent, GetDisplayName(), "gfx_dx11");
|
||||||
diag.ShowModal();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VideoBackend::Initialize(void *&window_handle)
|
bool VideoBackend::Initialize(void *&window_handle)
|
||||||
|
|
|
@ -157,7 +157,7 @@ static void InitBackendInfo()
|
||||||
void VideoBackend::ShowConfig(void *_hParent)
|
void VideoBackend::ShowConfig(void *_hParent)
|
||||||
{
|
{
|
||||||
InitBackendInfo();
|
InitBackendInfo();
|
||||||
Host_ShowVideoConfig(_hParent, "OpenGL", "gfx_opengl");
|
Host_ShowVideoConfig(_hParent, GetDisplayName(), "gfx_opengl");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VideoBackend::Initialize(void *&window_handle)
|
bool VideoBackend::Initialize(void *&window_handle)
|
||||||
|
|
|
@ -33,10 +33,6 @@
|
||||||
#include "VideoBackends/Software/VideoBackend.h"
|
#include "VideoBackends/Software/VideoBackend.h"
|
||||||
#include "VideoBackends/Software/XFMemLoader.h"
|
#include "VideoBackends/Software/XFMemLoader.h"
|
||||||
|
|
||||||
#if defined(HAVE_WX) && HAVE_WX
|
|
||||||
#include "VideoBackends/Software/VideoConfigDialog.h"
|
|
||||||
#endif // HAVE_WX
|
|
||||||
|
|
||||||
#include "VideoCommon/Fifo.h"
|
#include "VideoCommon/Fifo.h"
|
||||||
#include "VideoCommon/OnScreenDisplay.h"
|
#include "VideoCommon/OnScreenDisplay.h"
|
||||||
#include "VideoCommon/PixelEngine.h"
|
#include "VideoCommon/PixelEngine.h"
|
||||||
|
@ -62,12 +58,17 @@ static std::mutex m_csSWVidOccupied;
|
||||||
|
|
||||||
std::string VideoSoftware::GetName() const
|
std::string VideoSoftware::GetName() const
|
||||||
{
|
{
|
||||||
return _trans("Software Renderer");
|
return "Software Renderer";
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoSoftware::ShowConfig(void *_hParent)
|
std::string VideoSoftware::GetDisplayName() const
|
||||||
{
|
{
|
||||||
Host_ShowVideoConfig(_hParent, "Software", "gfx_software");
|
return "Software Renderer";
|
||||||
|
}
|
||||||
|
|
||||||
|
void VideoSoftware::ShowConfig(void *hParent)
|
||||||
|
{
|
||||||
|
Host_ShowVideoConfig(hParent, GetDisplayName(), "gfx_software");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VideoSoftware::Initialize(void *&window_handle)
|
bool VideoSoftware::Initialize(void *&window_handle)
|
||||||
|
|
|
@ -59,7 +59,6 @@
|
||||||
<ClCompile Include="TextureEncoder.cpp" />
|
<ClCompile Include="TextureEncoder.cpp" />
|
||||||
<ClCompile Include="TextureSampler.cpp" />
|
<ClCompile Include="TextureSampler.cpp" />
|
||||||
<ClCompile Include="TransformUnit.cpp" />
|
<ClCompile Include="TransformUnit.cpp" />
|
||||||
<ClCompile Include="VideoConfigDialog.cpp" />
|
|
||||||
<ClCompile Include="XFMemLoader.cpp" />
|
<ClCompile Include="XFMemLoader.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -87,7 +86,6 @@
|
||||||
<ClInclude Include="TransformUnit.h" />
|
<ClInclude Include="TransformUnit.h" />
|
||||||
<ClInclude Include="Vec3.h" />
|
<ClInclude Include="Vec3.h" />
|
||||||
<ClInclude Include="VideoBackend.h" />
|
<ClInclude Include="VideoBackend.h" />
|
||||||
<ClInclude Include="VideoConfigDialog.h" />
|
|
||||||
<ClInclude Include="XFMemLoader.h" />
|
<ClInclude Include="XFMemLoader.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -14,6 +14,7 @@ class VideoSoftware : public VideoBackend
|
||||||
void Shutdown() override;
|
void Shutdown() override;
|
||||||
|
|
||||||
std::string GetName() const override;
|
std::string GetName() const override;
|
||||||
|
std::string GetDisplayName() const override;
|
||||||
|
|
||||||
void EmuStateChange(EMUSTATE_CHANGE newState) override;
|
void EmuStateChange(EMUSTATE_CHANGE newState) override;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue