aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/video_core.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-08-03 12:55:58 -0400
committerLioncash <mathew1800@gmail.com>2018-08-04 02:36:57 -0400
commit49dc22f84e3c0cb7ac56dcf343e0826b06df23f2 (patch)
tree2b79fa019f07e601b5170e92e93b69788ffde949 /src/video_core/video_core.cpp
parentbf006dd1d442b3aa6efb9c545fb03e17cf57f7ed (diff)
video_core: Eliminate the g_renderer global variable
We move the initialization of the renderer to the core class, while keeping the creation of it and any other specifics in video_core. This way we can ensure that the renderer is initialized and doesn't give unfettered access to the renderer. This also makes dependencies on types more explicit. For example, the GPU class doesn't need to depend on the existence of a renderer, it only needs to care about whether or not it has a rasterizer, but since it was accessing the global variable, it was also making the renderer a part of its dependency chain. By adjusting the interface, we can get rid of this dependency.
Diffstat (limited to 'src/video_core/video_core.cpp')
-rw-r--r--src/video_core/video_core.cpp25
1 files changed, 2 insertions, 23 deletions
diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp
index 06b13e6817..5085ef96bd 100644
--- a/src/video_core/video_core.cpp
+++ b/src/video_core/video_core.cpp
@@ -3,37 +3,16 @@
// Refer to the license.txt file included.
#include <memory>
-#include "common/logging/log.h"
#include "video_core/renderer_base.h"
#include "video_core/renderer_opengl/renderer_opengl.h"
#include "video_core/video_core.h"
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Video Core namespace
-
namespace VideoCore {
-std::unique_ptr<RendererBase> g_renderer; ///< Renderer plugin
-
std::atomic<bool> g_toggle_framelimit_enabled;
-/// Initialize the video core
-bool Init(EmuWindow& emu_window) {
- g_renderer = std::make_unique<RendererOpenGL>(emu_window);
- if (g_renderer->Init()) {
- LOG_DEBUG(Render, "initialized OK");
- } else {
- LOG_CRITICAL(Render, "initialization failed !");
- return false;
- }
- return true;
-}
-
-/// Shutdown the video core
-void Shutdown() {
- g_renderer.reset();
-
- LOG_DEBUG(Render, "shutdown OK");
+std::unique_ptr<RendererBase> CreateRenderer(EmuWindow& emu_window) {
+ return std::make_unique<RendererOpenGL>(emu_window);
}
} // namespace VideoCore