X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_window.c;h=cc73b88c733e3ad9a6405d84c415ad0a9ca60808;hb=2cc3ae61ee06893f31662b961e637d1e9210580a;hp=7b87792cf9ade6c67823bdaa1f485fe3a7daf4f7;hpb=b5e287f854ce6bdaf4b949ddb15cd756cd59d089;p=freeglut diff --git a/src/freeglut_window.c b/src/freeglut_window.c index 7b87792..cc73b88 100644 --- a/src/freeglut_window.c +++ b/src/freeglut_window.c @@ -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 */