Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Allow SDL_HINT_FRAMEBUFFER_ACCELERATION to specify the renderer to use.
- Loading branch information
Showing
with
21 additions
and
7 deletions.
-
+21
−7
src/video/SDL_video.c
|
@@ -203,17 +203,31 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix |
|
|
if (!renderer) { |
|
|
SDL_RendererInfo info; |
|
|
int i; |
|
|
|
|
|
/* We need to make sure we don't get a software renderer */ |
|
|
for (i = 0; i < SDL_GetNumRenderDrivers(); ++i) { |
|
|
SDL_GetRenderDriverInfo(i, &info); |
|
|
if (SDL_strcmp(info.name, "software") != 0) { |
|
|
renderer = SDL_CreateRenderer(window, i, 0); |
|
|
if (renderer) { |
|
|
const char *hint = SDL_GetHint(SDL_HINT_FRAMEBUFFER_ACCELERATION); |
|
|
|
|
|
/* Check to see if there's a specific driver requested */ |
|
|
if (hint && *hint != '0' && *hint != '1' && |
|
|
SDL_strcasecmp(hint, "software") != 0) { |
|
|
for (i = 0; i < SDL_GetNumRenderDrivers(); ++i) { |
|
|
SDL_GetRenderDriverInfo(i, &info); |
|
|
if (SDL_strcasecmp(info.name, hint) == 0) { |
|
|
renderer = SDL_CreateRenderer(window, i, 0); |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
if (!renderer) { |
|
|
for (i = 0; i < SDL_GetNumRenderDrivers(); ++i) { |
|
|
SDL_GetRenderDriverInfo(i, &info); |
|
|
if (SDL_strcmp(info.name, "software") != 0) { |
|
|
renderer = SDL_CreateRenderer(window, i, 0); |
|
|
if (renderer) { |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if (!renderer) { |
|
|
return -1; |
|
|
} |
|
|