surface: Make sure SDL_ConvertSurface() deals with palettes (thanks, Sylvain!).
Fixes Bugzilla #3826. Fixes Bugzilla #2979.
parent
ac782d7122
commit
76176486ce
|
@ -658,7 +658,7 @@ SDL_SetPixelFormatPalette(SDL_PixelFormat * format, SDL_Palette *palette)
|
||||||
return SDL_SetError("SDL_SetPixelFormatPalette() passed NULL format");
|
return SDL_SetError("SDL_SetPixelFormatPalette() passed NULL format");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (palette && palette->ncolors != (1 << format->BitsPerPixel)) {
|
if (palette && palette->ncolors > (1 << format->BitsPerPixel)) {
|
||||||
return SDL_SetError("SDL_SetPixelFormatPalette() passed a palette that doesn't match the format");
|
return SDL_SetError("SDL_SetPixelFormatPalette() passed a palette that doesn't match the format");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -998,6 +998,11 @@ SDL_ConvertSurface(SDL_Surface * surface, const SDL_PixelFormat * format,
|
||||||
surface->format->Gmask, surface->format->Bmask,
|
surface->format->Gmask, surface->format->Bmask,
|
||||||
surface->format->Amask);
|
surface->format->Amask);
|
||||||
|
|
||||||
|
/* Share the palette, if any */
|
||||||
|
if (surface->format->palette) {
|
||||||
|
SDL_SetSurfacePalette(tmp, surface->format->palette);
|
||||||
|
}
|
||||||
|
|
||||||
SDL_FillRect(tmp, NULL, surface->map->info.colorkey);
|
SDL_FillRect(tmp, NULL, surface->map->info.colorkey);
|
||||||
|
|
||||||
tmp->map->info.flags &= ~SDL_COPY_COLORKEY;
|
tmp->map->info.flags &= ~SDL_COPY_COLORKEY;
|
||||||
|
|
Loading…
Reference in New Issue