summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VideoBackendBase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/VideoBackendBase.cpp')
-rw-r--r--Source/Core/VideoCommon/VideoBackendBase.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/Source/Core/VideoCommon/VideoBackendBase.cpp b/Source/Core/VideoCommon/VideoBackendBase.cpp
index 77ffb294ff..725857a85d 100644
--- a/Source/Core/VideoCommon/VideoBackendBase.cpp
+++ b/Source/Core/VideoCommon/VideoBackendBase.cpp
@@ -14,6 +14,8 @@
#include "Common/CommonTypes.h"
#include "Common/Event.h"
#include "Common/Logging/Log.h"
+#include "Core/ConfigManager.h"
+#include "Core/Core.h"
#include "Core/Host.h"
// TODO: ugly
@@ -60,14 +62,6 @@ __declspec(dllexport) DWORD NvOptimusEnablement = 1;
}
#endif
-void VideoBackendBase::ShowConfig(void* parent_handle)
-{
- if (!m_initialized)
- InitBackendInfo();
-
- Host_ShowVideoConfig(parent_handle, GetDisplayName());
-}
-
void VideoBackendBase::Video_ExitLoop()
{
Fifo::ExitGpuLoop();
@@ -231,6 +225,20 @@ void VideoBackendBase::ActivateBackend(const std::string& name)
g_video_backend = iter->get();
}
+void VideoBackendBase::PopulateBackendInfo()
+{
+ // If the core is running, the backend info will have been populated already.
+ // If we did it here, the UI thread can race with the with the GPU thread.
+ if (Core::IsRunning())
+ return;
+
+ // We refresh the config after initializing the backend info, as system-specific settings
+ // such as anti-aliasing, or the selected adapter may be invalid, and should be checked.
+ ActivateBackend(SConfig::GetInstance().m_strVideoBackend);
+ g_video_backend->InitBackendInfo();
+ g_Config.Refresh();
+}
+
// Run from the CPU thread
void VideoBackendBase::DoState(PointerWrap& p)
{
@@ -294,7 +302,6 @@ void VideoBackendBase::InitializeShared()
GeometryShaderManager::Init();
PixelShaderManager::Init();
- g_Config.Refresh();
UpdateActiveConfig();
}