aboutsummaryrefslogtreecommitdiff
path: root/pugl
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-08-28 22:13:17 +0000
committerDavid Robillard <d@drobilla.net>2014-08-28 22:13:17 +0000
commitdd9b6fe61373e0f1ff0015a2d6b01360897fa8fc (patch)
treeca1e01e0e33ebda96c904b8753742f8547e2f14a /pugl
parentd0c878fe0e496083a1e892795c23a1ac939714a9 (diff)
downloadsynthpod-dd9b6fe61373e0f1ff0015a2d6b01360897fa8fc.tar.xz
Fix compilation on Windows.
Diffstat (limited to 'pugl')
-rw-r--r--pugl/pugl_win.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/pugl/pugl_win.cpp b/pugl/pugl_win.cpp
index 9dfa70c5..16c6b0b2 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;
}