Date: Sun, 30 Apr 2006 14:20:05 +1000
authorSam Lantinga <slouken@libsdl.org>
Mon, 01 May 2006 07:15:35 +0000
changeset 1754 c67921b517c3
parent 1753 5b3bb08e7dd8
child 1755 91063c450171
Date: Sun, 30 Apr 2006 14:20:05 +1000 From: Rob Subject: [SDL] SDL pre-release OpenGL fails on the zipped pre-release source accessible from http://www.libsdl.org/svn.php. Appears to be following lines in sdl_wing.c (lines 341-345): wglext = (const char *)this->glGetString(GL_EXTENSIONS); if ( !SDL_strstr(wglext, "WGL_EXT_swap_control") ) { this->gl_data->wglSwapIntervalEXT = NULL; this->gl_data->wglGetSwapIntervalEXT = NULL; } glGetString is a null pointer, as are other gl function pointers, so call fails. Never looked at sdl source before, so no further than that as yet.
src/video/wincommon/SDL_wingl.c
--- a/src/video/wincommon/SDL_wingl.c	Mon May 01 06:41:17 2006 +0000
+++ b/src/video/wincommon/SDL_wingl.c	Mon May 01 07:15:35 2006 +0000
@@ -177,6 +177,7 @@
 	int iAttribs[64];
 	int *iAttr;
 	float fAttribs[1] = { 0 };
+	const GLubyte *(*glGetStringFunc)(GLenum);
 	const char *wglext;
 
 	/* load the gl driver from a default path */
@@ -338,8 +339,14 @@
 	 * somewhat a documented and reliable hack - it was originally
 	 * as a feature added by mistake, but since so many people rely
 	 * on it, it will not be removed.  strstr should be safe here.*/
-	wglext = (const char *)this->glGetString(GL_EXTENSIONS);
-	if ( !SDL_strstr(wglext, "WGL_EXT_swap_control") ) {
+	glGetStringFunc = WIN_GL_GetProcAddress(this, "glGetString");
+	if ( glGetStringFunc ) {
+		wglext = (const char *)this->glGetString(GL_EXTENSIONS);
+	} else {
+		/* Uh oh, something is seriously wrong here... */
+		wglext = NULL;
+	}
+	if ( !wglext || !SDL_strstr(wglext, "WGL_EXT_swap_control") ) {
 		this->gl_data->wglSwapIntervalEXT = NULL;
 		this->gl_data->wglGetSwapIntervalEXT = NULL;
 	}