1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-11-26 03:22:48 +02:00

Surface: Work around bug in SDL that loses per-surface alpha.

A bug in SDL_ConvertSurface() leaves the per-surface alpha undefined when
converting from RGBA to RGBA. This can cause problems if the surface is
later converted to a format without an alpha channel, such as the display
format.
This commit is contained in:
Maarten ter Huurne 2011-06-05 05:27:28 +02:00
parent 36260e999d
commit 2394a075d7

View File

@ -81,6 +81,11 @@ Surface::Surface(SDL_Surface *raw_, bool freeWhenDone_)
Surface::Surface(Surface *s) { Surface::Surface(Surface *s) {
raw = SDL_ConvertSurface(s->raw, s->raw->format, SDL_SWSURFACE); raw = SDL_ConvertSurface(s->raw, s->raw->format, SDL_SWSURFACE);
// Note: A bug in SDL_ConvertSurface() leaves the per-surface alpha
// undefined when converting from RGBA to RGBA. This can cause
// problems if the surface is later converted to a format without
// an alpha channel, such as the display format.
raw->format->alpha = s->raw->format->alpha;
freeWhenDone = true; freeWhenDone = true;
halfW = raw->w/2; halfW = raw->w/2;
halfH = raw->h/2; halfH = raw->h/2;