Author: matt
Date: 2009-06-30 06:38:45 -0700 (Tue, 30 Jun 2009)
New Revision: 6806
Log:
Fixed OpenGL shared context handling (STR #2135)
Modified:
branches/branch-1.3/CHANGES
branches/branch-1.3/src/Fl_Gl_Choice.cxx
branches/branch-1.3/src/Fl_Gl_Window.cxx
Modified: branches/branch-1.3/CHANGES
===================================================================
--- branches/branch-1.3/CHANGES 2009-06-29 07:45:48 UTC (rev 6805)
+++ branches/branch-1.3/CHANGES 2009-06-30 13:38:45 UTC (rev 6806)
@@ -1,5 +1,6 @@
CHANGES IN FLTK 1.3.0
+ - Fixed OpenGL shared context handling (STR #2135)
- Fixed gray-scale images with alpha channel (STR #2105)
- Fixed unexpected shortcut behavior for Win32 (STR #2199)
- Fixed documentation for Fl_Progress (STR #2209)
Modified: branches/branch-1.3/src/Fl_Gl_Choice.cxx
===================================================================
--- branches/branch-1.3/src/Fl_Gl_Choice.cxx 2009-06-29 07:45:48 UTC (rev
6805)
+++ branches/branch-1.3/src/Fl_Gl_Choice.cxx 2009-06-30 13:38:45 UTC (rev
6806)
@@ -263,7 +263,8 @@
#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 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 @@
# 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 @@
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 @@
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
Modified: branches/branch-1.3/src/Fl_Gl_Window.cxx
===================================================================
--- branches/branch-1.3/src/Fl_Gl_Window.cxx 2009-06-29 07:45:48 UTC (rev
6805)
+++ branches/branch-1.3/src/Fl_Gl_Window.cxx 2009-06-30 13:38:45 UTC (rev
6806)
@@ -181,8 +181,8 @@
xywh[2] = w();
xywh[3] = h();
+ aglSetInteger(context_, AGL_BUFFER_RECT, xywh);
aglEnable(context_, AGL_BUFFER_RECT);
- aglSetInteger(context_, AGL_BUFFER_RECT, xywh);
// printf("make_current: xywh=[%d %d %d %d]\n", xywh[0], xywh[1], xywh[2],
xywh[3]);
#endif // __APPLE__
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit