From 4e5ebc27db7f01ded57e2c03cd22fa21b3a0e11a Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 7 Nov 2011 16:01:03 -0500 Subject: [PATCH] Windows: If we don't care about OpenGL accel and FULL fails, try NO accel. --- src/video/wincommon/SDL_wingl.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/video/wincommon/SDL_wingl.c b/src/video/wincommon/SDL_wingl.c index fcf310448..e57104d05 100644 --- a/src/video/wincommon/SDL_wingl.c +++ b/src/video/wincommon/SDL_wingl.c @@ -176,6 +176,7 @@ int WIN_GL_SetupWindow(_THIS) int i; int iAttribs[64]; int *iAttr; + int *iAccelAttr = NULL; float fAttribs[1] = { 0 }; const GLubyte *(WINAPI *glGetStringFunc)(GLenum); const char *wglext; @@ -232,6 +233,7 @@ int WIN_GL_SetupWindow(_THIS) probably what they wanted (and if you didn't care and got FULL, that's a perfectly valid result in any case. */ *iAttr++ = WGL_ACCELERATION_ARB; + iAccelAttr = iAttr; if (this->gl_config.accelerated) { *iAttr++ = WGL_FULL_ACCELERATION_ARB; } else { @@ -301,6 +303,12 @@ int WIN_GL_SetupWindow(_THIS) /* Choose and set the closest available pixel format */ pixel_format = ChoosePixelFormatARB(this, iAttribs, fAttribs); + /* App said "don't care about accel" and FULL accel failed. Try NO. */ + if ( ( !pixel_format ) && ( this->gl_config.accelerated < 0 ) ) { + *iAccelAttr = WGL_NO_ACCELERATION_ARB; + pixel_format = ChoosePixelFormatARB(this, iAttribs, fAttribs); + *iAccelAttr = WGL_FULL_ACCELERATION_ARB; /* if we try again. */ + } if ( !pixel_format ) { pixel_format = ChoosePixelFormat(GL_hdc, &GL_pfd); }