Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fixed a crash caused by the 1.2 code path getting a YV12 texture. :)
- Loading branch information
Showing
with
19 additions
and
7 deletions.
-
+17
−6
src/render/SDL_render.c
-
+2
−1
src/video/SDL_video.c
|
@@ -206,12 +206,22 @@ static Uint32 |
|
|
GetClosestSupportedFormat(SDL_Renderer * renderer, Uint32 format) |
|
|
{ |
|
|
Uint32 i; |
|
|
SDL_bool hasAlpha = SDL_ISPIXELFORMAT_ALPHA(format); |
|
|
|
|
|
/* We just want to match the first format that has the same channels */ |
|
|
for (i = 0; i < renderer->info.num_texture_formats; ++i) { |
|
|
if (SDL_ISPIXELFORMAT_ALPHA(renderer->info.texture_formats[i]) == hasAlpha) { |
|
|
return renderer->info.texture_formats[i]; |
|
|
if (SDL_ISPIXELFORMAT_FOURCC(format)) { |
|
|
/* Look for an exact match */ |
|
|
for (i = 0; i < renderer->info.num_texture_formats; ++i) { |
|
|
if (renderer->info.texture_formats[i] == format) { |
|
|
return renderer->info.texture_formats[i]; |
|
|
} |
|
|
} |
|
|
} else { |
|
|
SDL_bool hasAlpha = SDL_ISPIXELFORMAT_ALPHA(format); |
|
|
|
|
|
/* We just want to match the first format that has the same channels */ |
|
|
for (i = 0; i < renderer->info.num_texture_formats; ++i) { |
|
|
if (SDL_ISPIXELFORMAT_ALPHA(renderer->info.texture_formats[i]) == hasAlpha) { |
|
|
return renderer->info.texture_formats[i]; |
|
|
} |
|
|
} |
|
|
} |
|
|
return renderer->info.texture_formats[0]; |
|
@@ -313,7 +323,8 @@ SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface) |
|
|
} |
|
|
format = renderer->info.texture_formats[0]; |
|
|
for (i = 0; i < renderer->info.num_texture_formats; ++i) { |
|
|
if (SDL_ISPIXELFORMAT_ALPHA(renderer->info.texture_formats[i]) == needAlpha) { |
|
|
if (!SDL_ISPIXELFORMAT_FOURCC(renderer->info.texture_formats[i]) && |
|
|
SDL_ISPIXELFORMAT_ALPHA(renderer->info.texture_formats[i]) == needAlpha) { |
|
|
format = renderer->info.texture_formats[i]; |
|
|
break; |
|
|
} |
|
|
|
@@ -274,7 +274,8 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix |
|
|
/* Find the first format without an alpha channel */ |
|
|
*format = info.texture_formats[0]; |
|
|
for (i = 0; i < info.num_texture_formats; ++i) { |
|
|
if (!SDL_ISPIXELFORMAT_ALPHA(info.texture_formats[i])) { |
|
|
if (!SDL_ISPIXELFORMAT_FOURCC(info.texture_formats[i]) && |
|
|
!SDL_ISPIXELFORMAT_ALPHA(info.texture_formats[i])) { |
|
|
*format = info.texture_formats[i]; |
|
|
break; |
|
|
} |
|
|