From dd9b6fe61373e0f1ff0015a2d6b01360897fa8fc Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 28 Aug 2014 22:13:17 +0000 Subject: Fix compilation on Windows. --- pugl/pugl_win.cpp | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) (limited to 'pugl') diff --git a/pugl/pugl_win.cpp b/pugl/pugl_win.cpp index 9dfa70c..16c6b0b 100644 --- a/pugl/pugl_win.cpp +++ b/pugl/pugl_win.cpp @@ -71,6 +71,27 @@ puglInitInternals() return (PuglInternals*)calloc(1, sizeof(PuglInternals)); } +void +puglEnterContext(PuglView* view) +{ +#ifdef PUGL_HAVE_GL + if (view->ctx_type == PUGL_GL) { + wglMakeCurrent(view->impl->hdc, view->impl->hglrc); + } +#endif +} + +void +puglLeaveContext(PuglView* view, bool flush) +{ +#ifdef PUGL_HAVE_GL + if (view->ctx_type == PUGL_GL && flush) { + glFlush(); + SwapBuffers(view->impl->hdc); + } +#endif +} + int puglCreateWindow(PuglView* view, const char* title) { @@ -178,12 +199,10 @@ puglDestroy(PuglView* view) static void puglReshape(PuglView* view, int width, int height) { - wglMakeCurrent(view->impl->hdc, view->impl->hglrc); + puglEnterContext(view); if (view->reshapeFunc) { view->reshapeFunc(view, width, height); - } else { - puglDefaultReshape(view, width, height); } view->width = width; @@ -193,16 +212,13 @@ puglReshape(PuglView* view, int width, int height) static void puglDisplay(PuglView* view) { - wglMakeCurrent(view->impl->hdc, view->impl->hglrc); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glLoadIdentity(); + puglEnterContext(view); if (view->displayFunc) { view->displayFunc(view); } - glFlush(); - SwapBuffers(view->impl->hdc); + puglLeaveContext(view, true); view->redisplay = false; } -- cgit v1.2.1