mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 12:19:12 +00:00
VideoBackends: Combine Initialize/Prepare and Cleanup/Shutdown methods
Also allows the work previously done in Prepare to return a failure status.
This commit is contained in:
parent
04027a7da7
commit
d96e8c9d76
20 changed files with 58 additions and 160 deletions
|
@ -809,6 +809,7 @@ Renderer::~Renderer() = default;
|
|||
|
||||
void Renderer::Shutdown()
|
||||
{
|
||||
::Renderer::Shutdown();
|
||||
g_framebuffer_manager.reset();
|
||||
|
||||
UpdateActiveConfig();
|
||||
|
|
|
@ -84,7 +84,7 @@ public:
|
|||
~Renderer() override;
|
||||
|
||||
void Init();
|
||||
void Shutdown();
|
||||
void Shutdown() override;
|
||||
|
||||
std::unique_ptr<AbstractTexture> CreateTexture(const TextureConfig& config) override;
|
||||
std::unique_ptr<AbstractStagingTexture>
|
||||
|
|
|
@ -17,9 +17,6 @@ class VideoBackend : public VideoBackendBase
|
|||
std::string GetName() const override;
|
||||
std::string GetDisplayName() const override;
|
||||
|
||||
void Video_Prepare() override;
|
||||
void Video_Cleanup() override;
|
||||
|
||||
void InitBackendInfo() override;
|
||||
|
||||
unsigned int PeekMessages() override;
|
||||
|
|
|
@ -172,23 +172,11 @@ bool VideoBackend::Initialize(void* window_handle)
|
|||
if (!GLInterface->Create(window_handle, g_ActiveConfig.stereo_mode == StereoMode::QuadBuffer))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// This is called after Initialize() from the Core
|
||||
// Run from the graphics thread
|
||||
void VideoBackend::Video_Prepare()
|
||||
{
|
||||
GLInterface->MakeCurrent();
|
||||
if (!InitializeGLExtensions() || !FillBackendInfo())
|
||||
{
|
||||
// TODO: Handle this better. We'll likely end up crashing anyway, but this method doesn't
|
||||
// return anything, so we can't inform the caller that startup failed.
|
||||
return;
|
||||
}
|
||||
return false;
|
||||
|
||||
g_renderer = std::make_unique<Renderer>();
|
||||
|
||||
g_vertex_manager = std::make_unique<VertexManager>();
|
||||
g_perf_query = GetPerfQuery();
|
||||
ProgramShaderCache::Init();
|
||||
|
@ -197,21 +185,12 @@ void VideoBackend::Video_Prepare()
|
|||
static_cast<Renderer*>(g_renderer.get())->Init();
|
||||
TextureConverter::Init();
|
||||
BoundingBox::Init(g_renderer->GetTargetWidth(), g_renderer->GetTargetHeight());
|
||||
return true;
|
||||
}
|
||||
|
||||
void VideoBackend::Shutdown()
|
||||
{
|
||||
GLInterface->Shutdown();
|
||||
GLInterface.reset();
|
||||
ShutdownShared();
|
||||
}
|
||||
|
||||
void VideoBackend::Video_Cleanup()
|
||||
{
|
||||
// The following calls are NOT Thread Safe
|
||||
// And need to be called from the video thread
|
||||
CleanupShared();
|
||||
static_cast<Renderer*>(g_renderer.get())->Shutdown();
|
||||
g_renderer->Shutdown();
|
||||
BoundingBox::Shutdown();
|
||||
TextureConverter::Shutdown();
|
||||
g_sampler_cache.reset();
|
||||
|
@ -221,5 +200,8 @@ void VideoBackend::Video_Cleanup()
|
|||
g_vertex_manager.reset();
|
||||
g_renderer.reset();
|
||||
GLInterface->ClearCurrent();
|
||||
GLInterface->Shutdown();
|
||||
GLInterface.reset();
|
||||
ShutdownShared();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue