Commit a1ac5f42 authored by Sam Lantinga's avatar Sam Lantinga

Fixed garbage trying to create a FourCC pixel format.

parent 61b11f87
...@@ -83,6 +83,12 @@ SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask, ...@@ -83,6 +83,12 @@ SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask,
{ {
Uint32 masks[4]; Uint32 masks[4];
/* This function doesn't work with FourCC pixel formats */
if (SDL_ISPIXELFORMAT_FOURCC(format)) {
SDL_SetError("Unknown pixel format");
return SDL_FALSE;
}
/* Initialize the values here */ /* Initialize the values here */
if (SDL_BYTESPERPIXEL(format) <= 2) { if (SDL_BYTESPERPIXEL(format) <= 2) {
*bpp = SDL_BITSPERPIXEL(format); *bpp = SDL_BITSPERPIXEL(format);
...@@ -444,26 +450,6 @@ SDL_AllocFormat(Uint32 pixel_format) ...@@ -444,26 +450,6 @@ SDL_AllocFormat(Uint32 pixel_format)
int int
SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format) SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
{ {
/* Set up the format */
SDL_zerop(format);
format->format = pixel_format;
format->BitsPerPixel = SDL_BITSPERPIXEL(pixel_format);
format->BytesPerPixel = SDL_BYTESPERPIXEL(pixel_format);
if (SDL_ISPIXELFORMAT_INDEXED(pixel_format)) {
/* Palettized formats have no mask info */
format->Rloss = 8;
format->Gloss = 8;
format->Bloss = 8;
format->Aloss = 8;
format->Rshift = 0;
format->Gshift = 0;
format->Bshift = 0;
format->Ashift = 0;
format->Rmask = 0;
format->Gmask = 0;
format->Bmask = 0;
format->Amask = 0;
} else {
int bpp; int bpp;
Uint32 Rmask, Gmask, Bmask, Amask; Uint32 Rmask, Gmask, Bmask, Amask;
Uint32 mask; Uint32 mask;
...@@ -474,6 +460,13 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format) ...@@ -474,6 +460,13 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
return -1; return -1;
} }
/* Set up the format */
SDL_zerop(format);
format->format = pixel_format;
format->BitsPerPixel = bpp;
format->BytesPerPixel = (bpp + 7) / 8;
format->Rmask = Rmask;
format->Rshift = 0; format->Rshift = 0;
format->Rloss = 8; format->Rloss = 8;
if (Rmask) { if (Rmask) {
...@@ -482,6 +475,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format) ...@@ -482,6 +475,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
for (; (mask & 0x01); mask >>= 1) for (; (mask & 0x01); mask >>= 1)
--format->Rloss; --format->Rloss;
} }
format->Gmask = Gmask;
format->Gshift = 0; format->Gshift = 0;
format->Gloss = 8; format->Gloss = 8;
if (Gmask) { if (Gmask) {
...@@ -490,6 +485,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format) ...@@ -490,6 +485,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
for (; (mask & 0x01); mask >>= 1) for (; (mask & 0x01); mask >>= 1)
--format->Gloss; --format->Gloss;
} }
format->Bmask = Bmask;
format->Bshift = 0; format->Bshift = 0;
format->Bloss = 8; format->Bloss = 8;
if (Bmask) { if (Bmask) {
...@@ -498,6 +495,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format) ...@@ -498,6 +495,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
for (; (mask & 0x01); mask >>= 1) for (; (mask & 0x01); mask >>= 1)
--format->Bloss; --format->Bloss;
} }
format->Amask = Amask;
format->Ashift = 0; format->Ashift = 0;
format->Aloss = 8; format->Aloss = 8;
if (Amask) { if (Amask) {
...@@ -506,11 +505,7 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format) ...@@ -506,11 +505,7 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
for (; (mask & 0x01); mask >>= 1) for (; (mask & 0x01); mask >>= 1)
--format->Aloss; --format->Aloss;
} }
format->Rmask = Rmask;
format->Gmask = Gmask;
format->Bmask = Bmask;
format->Amask = Amask;
}
format->palette = NULL; format->palette = NULL;
format->refcount = 1; format->refcount = 1;
format->next = NULL; format->next = NULL;
......
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