From 8a4e642628e140460f8eb03ee6f3349e5a70c44e Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 21 Jan 2010 16:12:24 +0000 Subject: [PATCH] Fixed compilation on iPhone --- TODO | 2 + Xcode-iPhoneOS/Demos/src/accelerometer.c | 72 ++++++++++++------------ src/SDL_assert.c | 2 +- 3 files changed, 39 insertions(+), 37 deletions(-) diff --git a/TODO b/TODO index 8dbfdc58d..95fd84414 100644 --- a/TODO +++ b/TODO @@ -53,6 +53,8 @@ * Figure out how to handle OpenGL context lost on Mac OS X (does it happen?) * Write automated test case for multi-draw APIs * Make sure you can build SDL without the renderer to slim it down a bunch + * Implement assertion code on iPhone + * Add __WINDOWS__ in addition to __WIN32__ * Check 1.2 revisions: 3554 - Need to resolve semantics for locking keys on different platforms diff --git a/Xcode-iPhoneOS/Demos/src/accelerometer.c b/Xcode-iPhoneOS/Demos/src/accelerometer.c index ccdcd2c21..91cff0481 100644 --- a/Xcode-iPhoneOS/Demos/src/accelerometer.c +++ b/Xcode-iPhoneOS/Demos/src/accelerometer.c @@ -25,7 +25,7 @@ static struct float x, y; /* position of ship */ float vx, vy; /* velocity of ship (in pixels per millesecond) */ SDL_Rect rect; /* (drawn) position and size of ship */ -} ship; +} shipData; static SDL_Texture *ship = 0; /* texture for spaceship */ static SDL_Texture *space = 0; /* texture for space (background */ @@ -41,9 +41,9 @@ render(void) /* ship screen constraints */ Uint32 minx = 0.0f; - Uint32 maxx = SCREEN_WIDTH - ship.rect.w; + Uint32 maxx = SCREEN_WIDTH - shipData.rect.w; Uint32 miny = 0.0f; - Uint32 maxy = SCREEN_HEIGHT - ship.rect.h; + Uint32 maxy = SCREEN_HEIGHT - shipData.rect.h; #define SINT16_MAX ((float)(0x7FFF)) @@ -51,59 +51,59 @@ render(void) the factor SDL_IPHONE_MAX_G_FORCE / SINT16_MAX converts between SDL's units reported from the joytick, and units of g-force, as reported by the accelerometer */ - ship.vx += + shipData.vx += ax * SDL_IPHONE_MAX_GFORCE / SINT16_MAX * GRAVITY_CONSTANT * MILLESECONDS_PER_FRAME; - ship.vy += + shipData.vy += ay * SDL_IPHONE_MAX_GFORCE / SINT16_MAX * GRAVITY_CONSTANT * MILLESECONDS_PER_FRAME; - float speed = sqrt(ship.vx * ship.vx + ship.vy * ship.vy); + float speed = sqrt(shipData.vx * shipData.vx + shipData.vy * shipData.vy); if (speed > 0) { /* compensate for friction */ - float dirx = ship.vx / speed; /* normalized x velocity */ - float diry = ship.vy / speed; /* normalized y velocity */ + float dirx = shipData.vx / speed; /* normalized x velocity */ + float diry = shipData.vy / speed; /* normalized y velocity */ /* update velocity due to friction */ if (speed - FRICTION * MILLESECONDS_PER_FRAME > 0) { /* apply friction */ - ship.vx -= dirx * FRICTION * MILLESECONDS_PER_FRAME; - ship.vy -= diry * FRICTION * MILLESECONDS_PER_FRAME; + shipData.vx -= dirx * FRICTION * MILLESECONDS_PER_FRAME; + shipData.vy -= diry * FRICTION * MILLESECONDS_PER_FRAME; } else { /* applying friction would MORE than stop the ship, so just stop the ship */ - ship.vx = 0.0f; - ship.vy = 0.0f; + shipData.vx = 0.0f; + shipData.vy = 0.0f; } } /* update ship location */ - ship.x += ship.vx * MILLESECONDS_PER_FRAME; - ship.y += ship.vy * MILLESECONDS_PER_FRAME; - - if (ship.x > maxx) { - ship.x = maxx; - ship.vx = -ship.vx * DAMPING; - } else if (ship.x < minx) { - ship.x = minx; - ship.vx = -ship.vx * DAMPING; + shipData.x += shipData.vx * MILLESECONDS_PER_FRAME; + shipData.y += shipData.vy * MILLESECONDS_PER_FRAME; + + if (shipData.x > maxx) { + shipData.x = maxx; + shipData.vx = -shipData.vx * DAMPING; + } else if (shipData.x < minx) { + shipData.x = minx; + shipData.vx = -shipData.vx * DAMPING; } - if (ship.y > maxy) { - ship.y = maxy; - ship.vy = -ship.vy * DAMPING; - } else if (ship.y < miny) { - ship.y = miny; - ship.vy = -ship.vy * DAMPING; + if (shipData.y > maxy) { + shipData.y = maxy; + shipData.vy = -shipData.vy * DAMPING; + } else if (shipData.y < miny) { + shipData.y = miny; + shipData.vy = -shipData.vy * DAMPING; } /* draw the background */ SDL_RenderCopy(space, NULL, NULL); /* draw the ship */ - ship.rect.x = ship.x; - ship.rect.y = ship.y; + shipData.rect.x = shipData.x; + shipData.rect.y = shipData.y; - SDL_RenderCopy(ship, NULL, &ship.rect); + SDL_RenderCopy(ship, NULL, &shipData.rect); /* update screen */ SDL_RenderPresent(); @@ -148,8 +148,8 @@ initializeTextures() SDL_SetTextureBlendMode(ship, SDL_BLENDMODE_BLEND); /* set the width and height of the ship from the surface dimensions */ - ship.rect.w = bmp_surface->w; - ship.rect.h = bmp_surface->h; + shipData.rect.w = bmp_surface->w; + shipData.rect.h = bmp_surface->h; SDL_FreeSurface(bmp_surface_rgba); SDL_FreeSurface(bmp_surface); @@ -211,10 +211,10 @@ main(int argc, char *argv[]) initializeTextures(); /* setup ship */ - ship.x = (SCREEN_WIDTH - ship.rect.w) / 2; - ship.y = (SCREEN_HEIGHT - ship.rect.h) / 2; - ship.vx = 0.0f; - ship.vy = 0.0f; + shipData.x = (SCREEN_WIDTH - shipData.rect.w) / 2; + shipData.y = (SCREEN_HEIGHT - shipData.rect.h) / 2; + shipData.vx = 0.0f; + shipData.vy = 0.0f; done = 0; /* enter main loop */ diff --git a/src/SDL_assert.c b/src/SDL_assert.c index 5967ceaf7..c4e8099b5 100644 --- a/src/SDL_assert.c +++ b/src/SDL_assert.c @@ -312,7 +312,7 @@ SDL_PromptAssertion(const SDL_assert_data *data, void *userdata) #ifdef _WINDOWS state = SDL_PromptAssertion_windows(data); -#elif __APPLE__ +#elif __MACOSX__ /* This has to be done in an Objective-C (*.m) file, so we call out. */ extern SDL_assert_state SDL_PromptAssertion_cocoa(const SDL_assert_data *); state = SDL_PromptAssertion_cocoa(data);