Commit e9cad496 authored by Sam Lantinga's avatar Sam Lantinga

Added testnative to the Makefile and fixed building on Mac OS X

parent d0375e62
...@@ -39,6 +39,7 @@ TARGETS = \ ...@@ -39,6 +39,7 @@ TARGETS = \
testloadso$(EXE) \ testloadso$(EXE) \
testlock$(EXE) \ testlock$(EXE) \
testmultiaudio$(EXE) \ testmultiaudio$(EXE) \
testnative$(EXE) \
testoverlay$(EXE) \ testoverlay$(EXE) \
testoverlay2$(EXE) \ testoverlay2$(EXE) \
testplatform$(EXE) \ testplatform$(EXE) \
...@@ -162,6 +163,12 @@ testloadso$(EXE): $(srcdir)/testloadso.c ...@@ -162,6 +163,12 @@ testloadso$(EXE): $(srcdir)/testloadso.c
testlock$(EXE): $(srcdir)/testlock.c testlock$(EXE): $(srcdir)/testlock.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) $(CC) -o $@ $? $(CFLAGS) $(LIBS)
testnative$(EXE): $(srcdir)/testnative.c \
$(srcdir)/testnativecocoa.m \
$(srcdir)/testnativew32.c \
$(srcdir)/testnativex11.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) -L/usr/X11/lib -lX11 -framework Cocoa
testoverlay2$(EXE): $(srcdir)/testoverlay2.c testoverlay2$(EXE): $(srcdir)/testoverlay2.c
$(CC) -o $@ $? $(CFLAGS) $(LIBS) $(CC) -o $@ $? $(CFLAGS) $(LIBS)
......
...@@ -359,6 +359,10 @@ CommonArg(CommonState * state, int index) ...@@ -359,6 +359,10 @@ CommonArg(CommonState * state, int index)
/* Print the usage message */ /* Print the usage message */
return -1; return -1;
} }
if (SDL_strcmp(argv[index], "-NSDocumentRevisionsDebugMode") == 0) {
/* Debug flag sent by Xcode */
return 2;
}
return 0; return 0;
} }
......
...@@ -48,7 +48,7 @@ quit(int rc) ...@@ -48,7 +48,7 @@ quit(int rc)
} }
SDL_Texture * SDL_Texture *
LoadSprite(SDL_Window * window, char *file) LoadSprite(SDL_Renderer *renderer, char *file)
{ {
SDL_Surface *temp; SDL_Surface *temp;
SDL_Texture *sprite; SDL_Texture *sprite;
...@@ -66,8 +66,7 @@ LoadSprite(SDL_Window * window, char *file) ...@@ -66,8 +66,7 @@ LoadSprite(SDL_Window * window, char *file)
} }
/* Create textures from the image */ /* Create textures from the image */
SDL_SelectRenderer(window); sprite = SDL_CreateTextureFromSurface(renderer, temp);
sprite = SDL_CreateTextureFromSurface(0, temp);
if (!sprite) { if (!sprite) {
fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError());
SDL_FreeSurface(temp); SDL_FreeSurface(temp);
...@@ -80,43 +79,42 @@ LoadSprite(SDL_Window * window, char *file) ...@@ -80,43 +79,42 @@ LoadSprite(SDL_Window * window, char *file)
} }
void void
MoveSprites(SDL_Window * window, SDL_Texture * sprite) MoveSprites(SDL_Renderer * renderer, SDL_Texture * sprite)
{ {
int i, n;
int window_w, window_h;
int sprite_w, sprite_h; int sprite_w, sprite_h;
int i;
SDL_Rect viewport;
SDL_Rect *position, *velocity; SDL_Rect *position, *velocity;
SDL_SelectRenderer(window);
/* Query the sizes */ /* Query the sizes */
SDL_GetWindowSize(window, &window_w, &window_h); SDL_RenderGetViewport(renderer, &viewport);
SDL_QueryTexture(sprite, NULL, NULL, &sprite_w, &sprite_h); SDL_QueryTexture(sprite, NULL, NULL, &sprite_w, &sprite_h);
/* Draw a gray background */
SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
SDL_RenderClear(renderer);
/* Move the sprite, bounce at the wall, and draw */ /* Move the sprite, bounce at the wall, and draw */
n = 0;
SDL_SetRenderDrawColor(0xA0, 0xA0, 0xA0, 0xFF);
SDL_RenderClear();
for (i = 0; i < NUM_SPRITES; ++i) { for (i = 0; i < NUM_SPRITES; ++i) {
position = &positions[i]; position = &positions[i];
velocity = &velocities[i]; velocity = &velocities[i];
position->x += velocity->x; position->x += velocity->x;
if ((position->x < 0) || (position->x >= (window_w - sprite_w))) { if ((position->x < 0) || (position->x >= (viewport.w - sprite_w))) {
velocity->x = -velocity->x; velocity->x = -velocity->x;
position->x += velocity->x; position->x += velocity->x;
} }
position->y += velocity->y; position->y += velocity->y;
if ((position->y < 0) || (position->y >= (window_h - sprite_h))) { if ((position->y < 0) || (position->y >= (viewport.h - sprite_h))) {
velocity->y = -velocity->y; velocity->y = -velocity->y;
position->y += velocity->y; position->y += velocity->y;
} }
/* Blit the sprite onto the screen */ /* Blit the sprite onto the screen */
SDL_RenderCopy(sprite, NULL, position); SDL_RenderCopy(renderer, sprite, NULL, position);
} }
/* Update the screen! */ /* Update the screen! */
SDL_RenderPresent(); SDL_RenderPresent(renderer);
} }
int int
...@@ -125,12 +123,13 @@ main(int argc, char *argv[]) ...@@ -125,12 +123,13 @@ main(int argc, char *argv[])
int i, done; int i, done;
const char *driver; const char *driver;
SDL_Window *window; SDL_Window *window;
SDL_Renderer *renderer;
SDL_Texture *sprite; SDL_Texture *sprite;
int window_w, window_h; int window_w, window_h;
int sprite_w, sprite_h; int sprite_w, sprite_h;
SDL_Event event; SDL_Event event;
if (SDL_VideoInit(NULL, 0) < 0) { if (SDL_VideoInit(NULL) < 0) {
fprintf(stderr, "Couldn't initialize SDL video: %s\n", fprintf(stderr, "Couldn't initialize SDL video: %s\n",
SDL_GetError()); SDL_GetError());
exit(1); exit(1);
...@@ -163,17 +162,17 @@ main(int argc, char *argv[]) ...@@ -163,17 +162,17 @@ main(int argc, char *argv[])
SDL_SetWindowTitle(window, "SDL Native Window Test"); SDL_SetWindowTitle(window, "SDL Native Window Test");
/* Create the renderer */ /* Create the renderer */
if (SDL_CreateRenderer(window, -1, 0) < 0) { renderer = SDL_CreateRenderer(window, -1, 0);
if (!renderer) {
fprintf(stderr, "Couldn't create renderer: %s\n", SDL_GetError()); fprintf(stderr, "Couldn't create renderer: %s\n", SDL_GetError());
quit(5); quit(5);
} }
/* Clear the window, load the sprite and go! */ /* Clear the window, load the sprite and go! */
SDL_SelectRenderer(window); SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
SDL_SetRenderDrawColor(0xA0, 0xA0, 0xA0, 0xFF); SDL_RenderClear(renderer);
SDL_RenderClear();
sprite = LoadSprite(window, "icon.bmp"); sprite = LoadSprite(renderer, "icon.bmp");
if (!sprite) { if (!sprite) {
quit(6); quit(6);
} }
...@@ -210,9 +209,8 @@ main(int argc, char *argv[]) ...@@ -210,9 +209,8 @@ main(int argc, char *argv[])
case SDL_WINDOWEVENT: case SDL_WINDOWEVENT:
switch (event.window.event) { switch (event.window.event) {
case SDL_WINDOWEVENT_EXPOSED: case SDL_WINDOWEVENT_EXPOSED:
SDL_SelectRenderer(event.window.windowID); SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
SDL_SetRenderDrawColor(0xA0, 0xA0, 0xA0, 0xFF); SDL_RenderClear(renderer);
SDL_RenderClear();
break; break;
} }
break; break;
...@@ -223,7 +221,7 @@ main(int argc, char *argv[]) ...@@ -223,7 +221,7 @@ main(int argc, char *argv[])
break; break;
} }
} }
MoveSprites(window, sprite); MoveSprites(renderer, sprite);
} }
quit(0); quit(0);
......
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