diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2009-06-30 13:38:45 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2009-06-30 13:38:45 +0000 |
| commit | f1473b972fd83442b186d9e63d6c3ca92ae80a7c (patch) | |
| tree | 9b0c366195a88ed771549969c99abad8e0efc9a3 /src | |
| parent | 7e7a74203a4e5bbbba2fcc8879311732b75cf221 (diff) | |
Fixed OpenGL shared context handling (STR #2135)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6806 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_Gl_Choice.cxx | 12 | ||||
| -rw-r--r-- | src/Fl_Gl_Window.cxx | 2 |
2 files changed, 8 insertions, 6 deletions
diff --git a/src/Fl_Gl_Choice.cxx b/src/Fl_Gl_Choice.cxx index 041d4e2aa..a4531c20a 100644 --- a/src/Fl_Gl_Choice.cxx +++ b/src/Fl_Gl_Choice.cxx @@ -263,7 +263,8 @@ static void del_context(GLContext ctx) { #if defined(USE_X11) GLContext fl_create_gl_context(XVisualInfo* vis) { - GLContext shared_ctx = context_list ? context_list[0] : 0; + GLContext shared_ctx = 0; + if (context_list && nContext) shared_context = context_list[0]; GLContext context = glXCreateContext(fl_display, vis, shared_ctx, 1); if (context) add_context(context); @@ -286,7 +287,7 @@ GLContext fl_create_gl_context(Fl_Window* window, const Fl_Gl_Choice* g, int lay GLContext context = layer ? wglCreateLayerContext(hdc, layer) : wglCreateContext(hdc); if (context) { - if (context_list && context_list[0]) + if (context_list && nContext) wglShareLists(context_list[0], context); add_context(context); } @@ -296,7 +297,8 @@ GLContext fl_create_gl_context(Fl_Window* window, const Fl_Gl_Choice* g, int lay # elif defined(__APPLE_QUARTZ__) // warning: the Quartz version should probably use Core GL (CGL) instead of AGL GLContext fl_create_gl_context(Fl_Window* window, const Fl_Gl_Choice* g, int layer) { - GLContext context, shared_ctx = context_list ? context_list[0] : 0; + GLContext context, shared_ctx = 0; + if (context_list && nContext) shared_ctx = context_list[0]; context = aglCreateContext( g->pixelformat, shared_ctx); if (!context) return 0; add_context((GLContext)context); @@ -349,6 +351,8 @@ void fl_no_gl_context() { wglMakeCurrent(0, 0); # elif defined(__APPLE_QUARTZ__) // warning: the Quartz version should probably use Core GL (CGL) instead of AGL + AGLContext ctx = aglGetCurrentContext(); + if (ctx) aglSetDrawable(ctx, NULL); aglSetCurrentContext(0); # else # error unsupported platform @@ -363,8 +367,6 @@ void fl_delete_gl_context(GLContext context) { wglDeleteContext(context); # elif defined(__APPLE_QUARTZ__) // warning: the Quartz version should probably use Core GL (CGL) instead of AGL - aglSetCurrentContext( NULL ); - aglSetDrawable( context, NULL ); aglDestroyContext( context ); # else # error unsupported platform diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx index e8081e3e3..ae84f38de 100644 --- a/src/Fl_Gl_Window.cxx +++ b/src/Fl_Gl_Window.cxx @@ -181,8 +181,8 @@ void Fl_Gl_Window::make_current() { xywh[2] = w(); xywh[3] = h(); - aglEnable(context_, AGL_BUFFER_RECT); aglSetInteger(context_, AGL_BUFFER_RECT, xywh); + aglEnable(context_, AGL_BUFFER_RECT); // printf("make_current: xywh=[%d %d %d %d]\n", xywh[0], xywh[1], xywh[2], xywh[3]); #endif // __APPLE__ |
