Mercurial > sdl-ios-xcode
diff src/render/SDL_render.c @ 5273:c5a04f3c3908
Fixed a crash caused by the 1.2 code path getting a YV12 texture. :)
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 12 Feb 2011 08:17:58 -0800 |
parents | b530ef003506 |
children | 7aba0406c273 |
line wrap: on
line diff
--- a/src/render/SDL_render.c Sat Feb 12 08:17:37 2011 -0800 +++ b/src/render/SDL_render.c Sat Feb 12 08:17:58 2011 -0800 @@ -206,12 +206,22 @@ 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 @@ } 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; }