Fixed bug 4425 - promote to alpha format, palette surface with alpha values.

SDL_CreateTextureFromSurface() forgets to choose a texture format with alpha for
surfaces that have palettes with alpha values.
This commit is contained in:
Sylvain Becker 2018-12-15 14:50:12 +01:00
parent bd08d72dec
commit e5476c653d
1 changed files with 12 additions and 0 deletions

View File

@ -1205,6 +1205,18 @@ SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface)
} else { } else {
needAlpha = SDL_FALSE; needAlpha = SDL_FALSE;
} }
/* If Palette contains alpha values, promotes to alpha format */
if (fmt->palette) {
for (i = 0; i < fmt->palette->ncolors; i++) {
Uint8 alpha_value = fmt->palette->colors[i].a;
if (alpha_value != 0 || alpha_value != SDL_ALPHA_OPAQUE) {
needAlpha = SDL_TRUE;
break;
}
}
}
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_FOURCC(renderer->info.texture_formats[i]) && if (!SDL_ISPIXELFORMAT_FOURCC(renderer->info.texture_formats[i]) &&