Added GLUT_AUX and GLUT_MULTISAMPLE as possible parameters for
[freeglut] / src / freeglut_window.c
index 7b87792..cc73b88 100644 (file)
@@ -300,14 +300,18 @@ typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShar
 #endif
 
 
-GLboolean fgNewWGLCreateContext( SFG_Window* window )
+void fgNewWGLCreateContext( SFG_Window* window )
 {
     PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetEntensionsStringARB;
+    HGLRC context;
+    int attribs[7];
+    PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
+    const char * pWglExtString;
 
-    if( (fgState.ContextFlags & GLUT_FORWARD_COMPATIBLE) &&
-        (fgState.MajorVersion > 2) )
+    /* If nothing fancy has been required, leave the context as it is */
+    if ( fgState.MajorVersion == 1 && fgState.MinorVersion == 0 && fgState.ContextFlags == 0 )
     {
-        return GL_TRUE;
+        return;
     }
 
     wglMakeCurrent( window->Window.Device,
@@ -316,25 +320,16 @@ GLboolean fgNewWGLCreateContext( SFG_Window* window )
     wglGetEntensionsStringARB=(PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringARB");
     if ( wglGetEntensionsStringARB == NULL )
     {
-        return GL_TRUE;
-    }
-
-    const char * pWglExtString=wglGetEntensionsStringARB(window->Window.Device);
-    if ( pWglExtString == NULL )
-    {
-        return GL_TRUE;
+        return;
     }
 
-    if ( strstr(pWglExtString, "WGL_ARB_create_context") == NULL )
+    pWglExtString=wglGetEntensionsStringARB(window->Window.Device);
+    if (( pWglExtString == NULL ) || ( strstr(pWglExtString, "WGL_ARB_create_context") == NULL ))
     {
-        return GL_TRUE;
+        return;
     }
 
     /* new context creation */
-    HGLRC context;
-    int attribs[7];
-    PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
-
     attribs[0] = WGL_CONTEXT_MAJOR_VERSION_ARB;
     attribs[1] = fgState.MajorVersion;
     attribs[2] = WGL_CONTEXT_MINOR_VERSION_ARB;
@@ -356,15 +351,10 @@ GLboolean fgNewWGLCreateContext( SFG_Window* window )
         fgError( "Unable to create OpenGL %d.%d context (flags %x)",
             fgState.MajorVersion, fgState.MinorVersion, fgState.ContextFlags );
     }
-    else
-    {
-        fgWarning( "Success 3.0" );
-        wglMakeCurrent( NULL, NULL );
-        wglDeleteContext( window->Window.Context );
-        window->Window.Context = context;
-    }
 
-    return GL_TRUE;
+    wglMakeCurrent( NULL, NULL );
+    wglDeleteContext( window->Window.Context );
+    window->Window.Context = context;
 }
 
 
@@ -1035,7 +1025,8 @@ void fgCloseWindow( SFG_Window* window )
 {
 #if TARGET_HOST_POSIX_X11
 
-    glXDestroyContext( fgDisplay.Display, window->Window.Context );
+    if( window->Window.Context )
+        glXDestroyContext( fgDisplay.Display, window->Window.Context );
     XFree( window->Window.FBConfig );
     XDestroyWindow( fgDisplay.Display, window->Window.Handle );
     /* XFlush( fgDisplay.Display ); */ /* XXX Shouldn't need this */