From 02b261c67b4ee26ea0303ff51955cbc23afe15ba Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 28 Feb 2002 00:28:26 +0000 Subject: [PATCH] Updated for Watcom C++ and LCC compilers --- include/begin_code.h | 16 ++++++++++++++-- src/video/SDL_stretch.c | 5 +++-- test/testsprite.c | 13 ++++++++----- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/include/begin_code.h b/include/begin_code.h index be548644d..72adf83ac 100644 --- a/include/begin_code.h +++ b/include/begin_code.h @@ -67,7 +67,7 @@ packing set to an alternate value, say for loading structures from disk. The packing is reset to the previous value in close_code.h */ -#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__WATCOMC__) || defined(__BORLANDC__) +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) #ifdef _MSC_VER #pragma warning(disable: 4103) #endif @@ -86,8 +86,12 @@ #define SDL_INLINE_OKAY #else /* Add any special compiler-specific cases here */ -#if defined(_MSC_VER) || defined(__BORLANDC__) +#if defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) +#ifndef __inline__ #define __inline__ __inline +#endif #define SDL_INLINE_OKAY #else #if !defined(__MRC__) && !defined(_SGI_SOURCE) @@ -106,3 +110,11 @@ #define __inline__ #endif +/* Apparently this is needed by several Windows compilers */ +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ diff --git a/src/video/SDL_stretch.c b/src/video/SDL_stretch.c index b748360f2..82b906980 100644 --- a/src/video/SDL_stretch.c +++ b/src/video/SDL_stretch.c @@ -39,8 +39,9 @@ static char rcsid = into the general blitting mechanism. */ -#if (defined(WIN32) && !defined(__FREEBCC__) && !defined(_M_ALPHA) && !defined(_WIN32_WCE)) || \ - defined(i386) && defined(__GNUC__) && defined(USE_ASMBLIT) +#if (defined(WIN32) && !defined(_M_ALPHA) && !defined(_WIN32_WCE) && \ + !defined(__WATCOMC__) && !defined(__LCC__) && !defined(__FREEBCC__)) || \ + (defined(i386) && defined(__GNUC__) && defined(USE_ASMBLIT)) #define USE_ASM_STRETCH #endif diff --git a/test/testsprite.c b/test/testsprite.c index db225006a..b9c628e15 100644 --- a/test/testsprite.c +++ b/test/testsprite.c @@ -1,4 +1,3 @@ - /* Simple program: Move N sprites around on the screen as fast as possible */ #include @@ -18,6 +17,7 @@ SDL_Rect *sprite_rects; SDL_Rect *positions; SDL_Rect *velocities; int sprites_visible; +Uint16 sprite_w, sprite_h; int LoadSprite(SDL_Surface *screen, char *file) { @@ -66,12 +66,12 @@ void MoveSprites(SDL_Surface *screen, Uint32 background) position = &positions[i]; velocity = &velocities[i]; position->x += velocity->x; - if ( (position->x < 0) || (position->x >= screen->w) ) { + if ( (position->x < 0) || (position->x >= (screen->w - sprite_w)) ) { velocity->x = -velocity->x; position->x += velocity->x; } position->y += velocity->y; - if ( (position->y < 0) || (position->y >= screen->h) ) { + if ( (position->y < 0) || (position->y >= (screen->h - sprite_w)) ) { velocity->y = -velocity->y; position->y += velocity->y; } @@ -209,10 +209,12 @@ int main(int argc, char *argv[]) sprite_rects += numsprites; velocities = sprite_rects; sprite_rects += numsprites; + sprite_w = sprite->w; + sprite_h = sprite->h; srand(time(NULL)); for ( i=0; iw; - positions[i].y = rand()%screen->h; + positions[i].x = rand()%(screen->w - sprite_w); + positions[i].y = rand()%(screen->h - sprite_h); positions[i].w = sprite->w; positions[i].h = sprite->h; velocities[i].x = 0; @@ -285,5 +287,6 @@ int main(int argc, char *argv[]) printf("%2.2f frames per second\n", ((double)frames*1000)/(now-then)); } + SDL_Quit(); return(0); }