aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/render')
-rw-r--r--src/libjin/render/window.cpp28
-rw-r--r--src/libjin/render/window.h23
2 files changed, 10 insertions, 41 deletions
diff --git a/src/libjin/render/window.cpp b/src/libjin/render/window.cpp
index 1e58dd8..fe81f58 100644
--- a/src/libjin/render/window.cpp
+++ b/src/libjin/render/window.cpp
@@ -1,3 +1,5 @@
+#include <iostream>
+
#include "window.h"
#include "3rdparty/GLee/GLee.h"
#include "canvas.h"
@@ -8,29 +10,10 @@ namespace jin
namespace render
{
- shared Window* Window::g_wnd = NULL;
-
- Window::Window(): wnd(0), ctx(0)
- {
- }
-
- Window::~Window()
- {
- }
-
- bool Window::init(const SettingBase* setting)
- {
- static bool result = _init(setting);
- return result;
- }
-
- void Window::quit()
+ onlyonce bool Window::initSystem(const SettingBase* s)
{
- CallOnce(_quit());
- }
+ std::cout << "Init window system" << std::endl;
- onlyonce bool Window::_init(const SettingBase* s)
- {
if (SDL_Init(SDL_INIT_VIDEO) < 0)
return false;
@@ -84,10 +67,9 @@ namespace render
return true;
}
- onlyonce void Window::_quit()
+ onlyonce void Window::quitSystem()
{
SDL_DestroyWindow(wnd);
- delete g_wnd;
}
SDL_Window* Window::getWnd()
diff --git a/src/libjin/render/window.h b/src/libjin/render/window.h
index 54fff47..0c2c79d 100644
--- a/src/libjin/render/window.h
+++ b/src/libjin/render/window.h
@@ -9,7 +9,7 @@ namespace jin
namespace render
{
- class Window : public Subsystem
+ class Window : public Subsystem<Window>
{
public:
@@ -25,11 +25,6 @@ namespace render
SDL_GLContext getCtx();
- static inline Window* get()
- {
- return (g_wnd ? g_wnd : (g_wnd = new Window()));
- }
-
inline int getW()
{
return width;
@@ -42,24 +37,16 @@ namespace render
inline void swapBuffers();
- bool init(const SettingBase* setting) override;
- void quit() override;
+ private:
- private:
+ SDL_Window* wnd;
- Window();
- ~Window();
-
- static Window* g_wnd;
-
- SDL_Window* wnd;
-
SDL_GLContext ctx;
int width, height;
- onlyonce bool _init(const SettingBase* setting) override;
- onlyonce void _quit() override;
+ onlyonce bool initSystem(const SettingBase* setting) override;
+ onlyonce void quitSystem() override;
};
typedef Window::Setting WindowSetting;