Commit e7553b2d authored by Sam Lantinga's avatar Sam Lantinga

Fixed bug #771

Cleaned up the code a bit and made sure that an OpenGL window gets the OpenGL
renderer.  Inspired by a patch from Mason Wheeler.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%404229
parent 6524589f
...@@ -1490,31 +1490,35 @@ SDL_CreateRenderer(SDL_WindowID windowID, int index, Uint32 flags) ...@@ -1490,31 +1490,35 @@ SDL_CreateRenderer(SDL_WindowID windowID, int index, Uint32 flags)
SDL_DestroyRenderer(windowID); SDL_DestroyRenderer(windowID);
if (index < 0) { if (index < 0) {
const char *override = SDL_getenv("SDL_VIDEO_RENDERER"); char *override = SDL_getenv("SDL_VIDEO_RENDERER");
int n = SDL_GetNumRenderDrivers();
if (!override && (window->flags & SDL_WINDOW_OPENGL)) {
override = "opengl";
}
if (override) { if (override) {
int i, n = SDL_GetNumRenderDrivers(); for (index = 0; index < n; ++index) {
for (i = 0; i < n; ++i) {
SDL_RenderDriver *driver = SDL_RenderDriver *driver =
&SDL_CurrentDisplay.render_drivers[i]; &SDL_CurrentDisplay.render_drivers[index];
if (SDL_strcasecmp(override, driver->info.name) == 0) { if (SDL_strcasecmp(override, driver->info.name) == 0) {
index = i; /* Create a new renderer instance */
window->renderer = driver->CreateRenderer(window, flags);
break; break;
} }
} }
} } else {
} for (index = 0; index < n; ++index) {
if (index < 0) { SDL_RenderDriver *driver =
int n = SDL_GetNumRenderDrivers(); &SDL_CurrentDisplay.render_drivers[index];
for (index = 0; index < n; ++index) {
SDL_RenderDriver *driver = if ((driver->info.flags & flags) == flags) {
&SDL_CurrentDisplay.render_drivers[index]; /* Create a new renderer instance */
window->renderer = driver->CreateRenderer(window, flags);
if ((driver->info.flags & flags) == flags) { if (window->renderer) {
/* Create a new renderer instance */ /* Yay, we got one! */
window->renderer = SDL_CurrentDisplay.render_drivers[index].CreateRenderer(window, flags); break;
if (window->renderer) { }
/* Yay, we got one! */
break;
} }
} }
} }
...@@ -1528,7 +1532,6 @@ SDL_CreateRenderer(SDL_WindowID windowID, int index, Uint32 flags) ...@@ -1528,7 +1532,6 @@ SDL_CreateRenderer(SDL_WindowID windowID, int index, Uint32 flags)
SDL_GetNumRenderDrivers() - 1); SDL_GetNumRenderDrivers() - 1);
return -1; return -1;
} }
/* Create a new renderer instance */ /* Create a new renderer instance */
window->renderer = SDL_CurrentDisplay.render_drivers[index].CreateRenderer(window, flags); window->renderer = SDL_CurrentDisplay.render_drivers[index].CreateRenderer(window, flags);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment