VideoBackendBase: Store video backends as unique_ptr

This commit is contained in:
Lioncash
2016-02-15 21:29:24 -05:00
parent 3b23eb24c4
commit 1d6ee140f0
6 changed files with 40 additions and 34 deletions

View File

@ -61,7 +61,7 @@ SoftwareVideoConfigDialog::SoftwareVideoConfigDialog(wxWindow* parent, const std
wxStaticText* const label_backend = new wxStaticText(page_general, wxID_ANY, _("Backend:"));
wxChoice* const choice_backend = new wxChoice(page_general, wxID_ANY);
for (const VideoBackendBase* backend : g_available_video_backends)
for (const auto& backend : g_available_video_backends)
{
choice_backend->AppendString(StrToWxStr(backend->GetDisplayName()));
}

View File

@ -24,17 +24,18 @@ public:
void Event_Backend(wxCommandEvent &ev)
{
VideoBackendBase* new_backend = g_available_video_backends[ev.GetInt()];
auto& new_backend = g_available_video_backends[ev.GetInt()];
if (g_video_backend != new_backend)
if (g_video_backend != new_backend.get())
{
Close();
g_video_backend = new_backend;
g_video_backend = new_backend.get();
SConfig::GetInstance().m_strVideoBackend = g_video_backend->GetName();
g_video_backend->ShowConfig(GetParent());
}
ev.Skip();
}
};

View File

@ -235,7 +235,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
choice_backend = new wxChoice(page_general, wxID_ANY);
RegisterControl(choice_backend, wxGetTranslation(backend_desc));
for (const VideoBackendBase* backend : g_available_video_backends)
for (const auto& backend : g_available_video_backends)
{
choice_backend->AppendString(wxGetTranslation(StrToWxStr(backend->GetDisplayName())));
}

View File

@ -82,8 +82,9 @@ public:
protected:
void Event_Backend(wxCommandEvent &ev)
{
VideoBackendBase* new_backend = g_available_video_backends[ev.GetInt()];
if (g_video_backend != new_backend)
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")
@ -99,7 +100,7 @@ protected:
// reopen the dialog
Close();
g_video_backend = new_backend;
g_video_backend = new_backend.get();
SConfig::GetInstance().m_strVideoBackend = g_video_backend->GetName();
g_video_backend->ShowConfig(GetParent());