Commit ba0ff6d7 authored by Sam Lantinga's avatar Sam Lantinga

Fixed a crash caused by the 1.2 code path getting a YV12 texture. :)

parent e74e437b
...@@ -206,12 +206,22 @@ static Uint32 ...@@ -206,12 +206,22 @@ static Uint32
GetClosestSupportedFormat(SDL_Renderer * renderer, Uint32 format) GetClosestSupportedFormat(SDL_Renderer * renderer, Uint32 format)
{ {
Uint32 i; Uint32 i;
SDL_bool hasAlpha = SDL_ISPIXELFORMAT_ALPHA(format);
/* We just want to match the first format that has the same channels */ if (SDL_ISPIXELFORMAT_FOURCC(format)) {
for (i = 0; i < renderer->info.num_texture_formats; ++i) { /* Look for an exact match */
if (SDL_ISPIXELFORMAT_ALPHA(renderer->info.texture_formats[i]) == hasAlpha) { for (i = 0; i < renderer->info.num_texture_formats; ++i) {
return renderer->info.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]; return renderer->info.texture_formats[0];
...@@ -313,7 +323,8 @@ SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface) ...@@ -313,7 +323,8 @@ SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface)
} }
format = renderer->info.texture_formats[0]; format = renderer->info.texture_formats[0];
for (i = 0; i < renderer->info.num_texture_formats; ++i) { 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]; format = renderer->info.texture_formats[i];
break; break;
} }
......
...@@ -274,7 +274,8 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix ...@@ -274,7 +274,8 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix
/* Find the first format without an alpha channel */ /* Find the first format without an alpha channel */
*format = info.texture_formats[0]; *format = info.texture_formats[0];
for (i = 0; i < info.num_texture_formats; ++i) { 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]; *format = info.texture_formats[i];
break; break;
} }
......
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