Mercurial > sdl-ios-xcode
view test/testfill.c @ 5029:5d7d48157be7
Greg Jandl to SDL
I did some digging, and I think I've found a better solution. By
including some additional .m4 macros in the acinclude directory
(http://www.gnu.org/software/autoconf-archive/ax_check_compiler_flags.html,
http://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html and
http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html)
then using the patch below (same as previous patch + one line change
to configure.in), SDL will build correctly out of the box.
The arch can then be overridden by --with-gcc-arch=<arch> (most will
probably want to build with i686 there for general distribution) or
--without-gcc-arch, to disable setting the arch all together.
On my Atom netbook, I get -march=PentiumPro by default, which works
great, as does --with-gcc-arch=i686.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 18 Jan 2011 22:40:45 -0800 |
parents | 5ea08f1c29d0 |
children |
line wrap: on
line source
/* Simple program: Fill the screen with colors as fast as possible */ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <time.h> #include "SDL.h" /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ static void quit(int rc) { SDL_Quit(); exit(rc); } int main(int argc, char *argv[]) { SDL_Surface *screen; int width, height; Uint8 video_bpp; Uint32 videoflags; Uint32 colors[3]; int i, done; SDL_Event event; Uint32 then, now, frames; /* Initialize SDL */ if (SDL_Init(SDL_INIT_VIDEO) < 0) { fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); return (1); } width = 640; height = 480; video_bpp = 8; videoflags = 0; while (argc > 1) { --argc; if (strcmp(argv[argc - 1], "-width") == 0) { width = atoi(argv[argc]); --argc; } else if (strcmp(argv[argc - 1], "-height") == 0) { height = atoi(argv[argc]); --argc; } else if (strcmp(argv[argc - 1], "-bpp") == 0) { video_bpp = atoi(argv[argc]); --argc; } else if (strcmp(argv[argc], "-fullscreen") == 0) { videoflags ^= SDL_FULLSCREEN; } else { fprintf(stderr, "Usage: %s [-width N] [-height N] [-bpp N] [-fullscreen]\n", argv[0]); quit(1); } } /* Set video mode */ screen = SDL_SetVideoMode(width, height, video_bpp, 0); if (!screen) { fprintf(stderr, "Couldn't set %dx%d video mode: %s\n", width, height, SDL_GetError()); quit(2); } /* Get the colors */ colors[0] = SDL_MapRGB(screen->format, 0xFF, 0x00, 0x00); colors[1] = SDL_MapRGB(screen->format, 0x00, 0xFF, 0x00); colors[2] = SDL_MapRGB(screen->format, 0x00, 0x00, 0xFF); /* Loop, filling and waiting for a keystroke */ frames = 0; then = SDL_GetTicks(); done = 0; while (!done) { /* Check for events */ ++frames; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_MOUSEBUTTONDOWN: SDL_WarpMouse(screen->w / 2, screen->h / 2); break; case SDL_KEYDOWN: /* Any keypress quits the app... */ case SDL_QUIT: done = 1; break; default: break; } } SDL_FillRect(screen, NULL, colors[frames%3]); SDL_Flip(screen); } /* Print out some timing information */ now = SDL_GetTicks(); if (now > then) { double fps = ((double) frames * 1000) / (now - then); printf("%2.2f frames per second\n", fps); } SDL_Quit(); return (0); }