Skip to content

Commit

Permalink
Updated GLFW entry to test for exit.
Browse files Browse the repository at this point in the history
  • Loading branch information
bkaradzic committed Mar 26, 2015
1 parent 4b60ddf commit a797b00
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 15 deletions.
73 changes: 63 additions & 10 deletions examples/common/entry/entry_glfw.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,79 @@
#include <bgfxplatform.h>
#include "dbg.h"

// This is just trivial implementation of GLFW3 integration.
// It's here just for testing purpose.

namespace entry
{
static void errorCb(int _error, const char* _description)
{
DBG("GLFW error %d: %s", _error, _description);
}

struct Context
{
Context()
{
}

int run(int _argc, char** _argv)
{
glfwSetErrorCallback(errorCb);

glfwInit();
m_window = glfwCreateWindow(1280, 720, "bgfx", NULL, NULL);
glfwMakeContextCurrent(m_window);

glfwSetKeyCallback(m_window, keyCb);

bgfx::glfwSetWindow(m_window);
int result = main(_argc, _argv);

glfwDestroyWindow(m_window);
glfwTerminate();
return result;
}

static void keyCb(GLFWwindow* _window, int _key, int _scancode, int _action, int _mods);

EventQueue m_eventQueue;

GLFWwindow* m_window;
};

Context s_ctx;

void Context::keyCb(GLFWwindow* _window, int _key, int _scancode, int _action, int _mods)
{
BX_UNUSED(_window, _scancode, _mods);
if (_key == GLFW_KEY_Q
&& _action == GLFW_PRESS
&& _mods == GLFW_MOD_CONTROL)
{
s_ctx.m_eventQueue.postExitEvent();
}
}

const Event* poll()
{
return NULL;
glfwPollEvents();

if (glfwWindowShouldClose(s_ctx.m_window) )
{
s_ctx.m_eventQueue.postExitEvent();
}
return s_ctx.m_eventQueue.poll();
}

const Event* poll(WindowHandle _handle)
{
BX_UNUSED(_handle);
return NULL;
return s_ctx.m_eventQueue.poll(_handle);
}

void release(const Event* _event)
{
BX_UNUSED(_event);
s_ctx.m_eventQueue.release(_event);
}

WindowHandle createWindow(int32_t _x, int32_t _y, uint32_t _width, uint32_t _height, uint32_t _flags, const char* _title)
Expand Down Expand Up @@ -75,12 +132,8 @@ namespace entry

int main(int _argc, char** _argv)
{
glfwInit();
GLFWwindow *window = glfwCreateWindow(1280, 720, "bgfx", NULL, NULL);
glfwMakeContextCurrent(window);

bgfx::glfwSetWindow(window);
return entry::main(_argc, _argv);
using namespace entry;
return s_ctx.run(_argc, _argv);
}

#endif // ENTRY_CONFIG_USE_GLFW
13 changes: 8 additions & 5 deletions src/glcontext_nsgl.mm
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ void swapBuffers()
NSWindow* nsWindow = (NSWindow*)g_bgfxNSWindow;
m_context = g_bgfxNSGL;

if (NULL == m_context)
if (NULL == g_bgfxNSGL)
{
NSOpenGLPixelFormatAttribute profile =
#if BGFX_CONFIG_RENDERER_OPENGL >= 31
Expand Down Expand Up @@ -95,11 +95,14 @@ void swapBuffers()

void GlContext::destroy()
{
NSOpenGLView* glView = (NSOpenGLView*)m_view;
m_view = 0;
m_context = 0;
[glView release];
if (NULL == g_bgfxNSGL)
{
NSOpenGLView* glView = (NSOpenGLView*)m_view;
[glView release];
}

m_view = 0;
m_context = 0;
bx::dlclose(s_opengl);
}

Expand Down

0 comments on commit a797b00

Please sign in to comment.