Updated for Watcom C++ and LCC compilers
authorSam Lantinga <slouken@libsdl.org>
Thu, 28 Feb 2002 00:28:26 +0000
changeset 288 2f5a6062db86
parent 287 e4bd0cf95506
child 289 77b6110c797d
Updated for Watcom C++ and LCC compilers
include/begin_code.h
src/video/SDL_stretch.c
test/testsprite.c
--- a/include/begin_code.h	Wed Feb 27 16:15:34 2002 +0000
+++ b/include/begin_code.h	Thu Feb 28 00:28:26 2002 +0000
@@ -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 */
--- a/src/video/SDL_stretch.c	Wed Feb 27 16:15:34 2002 +0000
+++ b/src/video/SDL_stretch.c	Thu Feb 28 00:28:26 2002 +0000
@@ -39,8 +39,9 @@
    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
 
--- a/test/testsprite.c	Wed Feb 27 16:15:34 2002 +0000
+++ b/test/testsprite.c	Thu Feb 28 00:28:26 2002 +0000
@@ -1,4 +1,3 @@
-
 /* Simple program:  Move N sprites around on the screen as fast as possible */
 
 #include <stdio.h>
@@ -18,6 +17,7 @@
 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 @@
 		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 @@
 	sprite_rects += numsprites;
 	velocities = sprite_rects;
 	sprite_rects += numsprites;
+	sprite_w = sprite->w;
+	sprite_h = sprite->h;
 	srand(time(NULL));
 	for ( i=0; i<numsprites; ++i ) {
-		positions[i].x = rand()%screen->w;
-		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 @@
 		printf("%2.2f frames per second\n",
 					((double)frames*1000)/(now-then));
 	}
+	SDL_Quit();
 	return(0);
 }