From 174428768443b862b7feff0948ea4fd5b96ce781 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 17 Nov 2009 05:17:11 +0000 Subject: [PATCH] Fixed some bugs in the automated test suite, revealed by working SDL_RenderReadPixels() --- test/automated/common/common.c | 23 ++++++++++++++++++++--- test/automated/common/common.h | 16 ++++------------ test/automated/surface/surface.c | 32 ++++++++++++++++++++++++-------- 3 files changed, 48 insertions(+), 23 deletions(-) diff --git a/test/automated/common/common.c b/test/automated/common/common.c index 9a47f40ec..2839942af 100644 --- a/test/automated/common/common.c +++ b/test/automated/common/common.c @@ -46,9 +46,26 @@ int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img ) break; case 4: - ret += !( (p[0] == pd[0]) && - (p[1] == pd[1]) && - (p[2] == pd[2]) ); + { + int fail; + Uint8 R, G, B, A; + + SDL_GetRGBA(*(Uint32*)p, sur->format, &R, &G, &B, &A); + + if (img->bytes_per_pixel == 3) { + fail = !( (R == pd[0]) && + (G == pd[1]) && + (B == pd[2]) ); + } else { + fail = !( (R == pd[0]) && + (G == pd[1]) && + (B == pd[2]) && + (A == pd[3]) ); + } + if (fail) { + ++ret; + } + } break; } } diff --git a/test/automated/common/common.h b/test/automated/common/common.h index 653f83727..573c2b74f 100644 --- a/test/automated/common/common.h +++ b/test/automated/common/common.h @@ -11,19 +11,11 @@ # define COMMON_H -#if (SDL_BYTEORDER == SDL_BIG_ENDIAN) -# define FORMAT SDL_PIXELFORMAT_RGBA8888 -# define RMASK 0xff000000 /**< Red bit mask. */ -# define GMASK 0x00ff0000 /**< Green bit mask. */ -# define BMASK 0x0000ff00 /**< Blue bit mask. */ -# define AMASK 0x000000ff /**< Alpha bit mask. */ -#else -# define FORMAT SDL_PIXELFORMAT_ABGR8888 -# define RMASK 0x000000ff /**< Red bit mask. */ -# define GMASK 0x0000ff00 /**< Green bit mask. */ -# define BMASK 0x00ff0000 /**< Blue bit mask. */ +# define FORMAT SDL_PIXELFORMAT_ARGB8888 # define AMASK 0xff000000 /**< Alpha bit mask. */ -#endif +# define RMASK 0x00ff0000 /**< Red bit mask. */ +# define GMASK 0x0000ff00 /**< Green bit mask. */ +# define BMASK 0x000000ff /**< Blue bit mask. */ typedef struct SurfaceImage_s { diff --git a/test/automated/surface/surface.c b/test/automated/surface/surface.c index f626c71eb..7c733db12 100644 --- a/test/automated/surface/surface.c +++ b/test/automated/surface/surface.c @@ -97,12 +97,6 @@ static void surface_testPrimitives( SDL_Surface *testsur ) if (SDL_ATassert( "SDL_FillRect", ret == 0)) return; - /* Create the surface. */ - testsur = SDL_CreateRGBSurface( 0, 80, 60, 32, - RMASK, GMASK, BMASK, AMASK ); - if (SDL_ATassert( "SDL_CreateRGBSurface", testsur != NULL)) - return; - /* Draw a rectangle. */ rect.x = 40; rect.y = 0; @@ -263,7 +257,18 @@ static void surface_testBlit( SDL_Surface *testsur ) /* Create face surface. */ face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data, img_face.width, img_face.height, 32, img_face.width*4, - RMASK, GMASK, BMASK, AMASK ); +#if (SDL_BYTEORDER == SDL_BIG_ENDIAN) + 0xff000000, /* Red bit mask. */ + 0x00ff0000, /* Green bit mask. */ + 0x0000ff00, /* Blue bit mask. */ + 0x000000ff /* Alpha bit mask. */ +#else + 0x000000ff, /* Red bit mask. */ + 0x0000ff00, /* Green bit mask. */ + 0x00ff0000, /* Blue bit mask. */ + 0xff000000 /* Alpha bit mask. */ +#endif + ); if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", face != NULL)) return; @@ -424,7 +429,18 @@ static void surface_testBlitBlend( SDL_Surface *testsur ) /* Create the blit surface. */ face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data, img_face.width, img_face.height, 32, img_face.width*4, - RMASK, GMASK, BMASK, AMASK ); +#if (SDL_BYTEORDER == SDL_BIG_ENDIAN) + 0xff000000, /* Red bit mask. */ + 0x00ff0000, /* Green bit mask. */ + 0x0000ff00, /* Blue bit mask. */ + 0x000000ff /* Alpha bit mask. */ +#else + 0x000000ff, /* Red bit mask. */ + 0x0000ff00, /* Green bit mask. */ + 0x00ff0000, /* Blue bit mask. */ + 0xff000000 /* Alpha bit mask. */ +#endif + ); if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", face != NULL)) return;