From adfda73e1810973a40b7bedd9a8edc3e7ab89e3c Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 19 May 2018 12:05:57 +0800 Subject: =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=90=E7=B3=BB=E7=BB=9F=E5=9F=BA?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/render/window.cpp | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'src/libjin/render/window.cpp') diff --git a/src/libjin/render/window.cpp b/src/libjin/render/window.cpp index 70e7e2d..1f55be8 100644 --- a/src/libjin/render/window.cpp +++ b/src/libjin/render/window.cpp @@ -18,17 +18,17 @@ namespace render { } - onlyonce void Window::init(const Window::Setting& setting) + onlyonce bool Window::_init(const SettingBase* s) { - CallOnce(_init(setting)); - } + if (SDL_Init(SDL_INIT_VIDEO) < 0) + return false; - inline void Window::_init(const Setting& setting) - { - width = setting.width; - height = setting.height; - const char* title = setting.title; - bool vsync = setting.vsync; + WindowSetting* setting = (WindowSetting*)s; + + width = setting->width; + height = setting->height; + bool vsync = setting->vsync; + const char* title = setting->title; if (wnd) { @@ -54,7 +54,11 @@ namespace render wy = SDL_WINDOWPOS_UNDEFINED; wnd = SDL_CreateWindow(title, wx, wy, width, height, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL); + if (wnd == NULL) + return false; ctx = SDL_GL_CreateContext(wnd); + if (ctx == NULL) + return false; SDL_GL_SetSwapInterval(vsync ? 1 : 0); SDL_GL_MakeCurrent(wnd, ctx); glClearColor(0.f, 0.f, 0.f, 1.f); @@ -66,6 +70,7 @@ namespace render Canvas::unbind(); swapBuffers(); + return true; } SDL_Window* Window::getWnd() @@ -78,11 +83,11 @@ namespace render return ctx; } - inline void Window::swapBuffers() - { - if (wnd) - SDL_GL_SwapWindow(wnd); - } + inline void Window::swapBuffers() + { + if (wnd) + SDL_GL_SwapWindow(wnd); + } } } \ No newline at end of file -- cgit v1.1-26-g67d0