Switched the test code over to use the common functions in the test library.
authorSam Lantinga <slouken@libsdl.org>
Mon, 31 Dec 2012 10:26:38 -0800
changeset 6785 c094c438c0a6
parent 6784 8fd20f04d5d9
child 6786 7174fb08017a
Switched the test code over to use the common functions in the test library.
test/Makefile.in
test/common.c
test/common.h
test/configure
test/configure.in
test/testdraw2.c
test/testgl2.c
test/testgles.c
test/testime.c
test/testintersections.c
test/testrelative.c
test/testrendercopyex.c
test/testrendertarget.c
test/testscale.c
test/testsprite2.c
test/testwm2.c
--- a/test/Makefile.in	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/Makefile.in	Mon Dec 31 10:26:38 2012 -0800
@@ -84,13 +84,13 @@
 testatomic$(EXE): $(srcdir)/testatomic.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testintersections$(EXE): $(srcdir)/testintersections.c $(srcdir)/common.c
+testintersections$(EXE): $(srcdir)/testintersections.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testrelative$(EXE): $(srcdir)/testrelative.c $(srcdir)/common.c
+testrelative$(EXE): $(srcdir)/testrelative.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testdraw2$(EXE): $(srcdir)/testdraw2.c $(srcdir)/common.c
+testdraw2$(EXE): $(srcdir)/testdraw2.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
 testerror$(EXE): $(srcdir)/testerror.c
@@ -105,10 +105,10 @@
 testgesture$(EXE): $(srcdir)/testgesture.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
  
-testgl2$(EXE): $(srcdir)/testgl2.c $(srcdir)/common.c
+testgl2$(EXE): $(srcdir)/testgl2.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@
 
-testgles$(EXE): $(srcdir)/testgles.c $(srcdir)/common.c
+testgles$(EXE): $(srcdir)/testgles.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@
 
 testhaptic$(EXE): $(srcdir)/testhaptic.c
@@ -123,10 +123,10 @@
 testiconv$(EXE): $(srcdir)/testiconv.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testime$(EXE): $(srcdir)/testime.c $(srcdir)/common.c
+testime$(EXE): $(srcdir)/testime.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @SDL_TTF_LIB@
 
-testjoystick$(EXE): $(srcdir)/testjoystick.c $(srcdir)/common.c
+testjoystick$(EXE): $(srcdir)/testjoystick.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
 testkeys$(EXE): $(srcdir)/testkeys.c
@@ -167,10 +167,10 @@
 testpower$(EXE): $(srcdir)/testpower.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testrendertarget$(EXE): $(srcdir)/testrendertarget.c $(srcdir)/common.c
+testrendertarget$(EXE): $(srcdir)/testrendertarget.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testscale$(EXE): $(srcdir)/testscale.c $(srcdir)/common.c
+testscale$(EXE): $(srcdir)/testscale.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
 testsem$(EXE): $(srcdir)/testsem.c
@@ -182,8 +182,8 @@
 testshape$(EXE): $(srcdir)/testshape.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testsprite2$(EXE): $(srcdir)/testsprite2.c $(srcdir)/common.c
-	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
+testsprite2$(EXE): $(srcdir)/testsprite2.c
+	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
 testspriteminimal$(EXE): $(srcdir)/testspriteminimal.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
@@ -197,13 +197,13 @@
 testver$(EXE): $(srcdir)/testver.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testwm2$(EXE): $(srcdir)/testwm2.c $(srcdir)/common.c
+testwm2$(EXE): $(srcdir)/testwm2.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
 torturethread$(EXE): $(srcdir)/torturethread.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
 
-testrendercopyex$(EXE): $(srcdir)/testrendercopyex.c $(srcdir)/common.c
+testrendercopyex$(EXE): $(srcdir)/testrendercopyex.c
 	$(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@
 
 testmessage$(EXE): $(srcdir)/testmessage.c
--- a/test/common.c	Mon Dec 31 10:14:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1256 +0,0 @@
-/*
-  Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely.
-*/
-
-/* A simple test program framework */
-
-#include <stdio.h>
-
-#include "common.h"
-
-#define VIDEO_USAGE \
-"[--video driver] [--renderer driver] [--info all|video|modes|render|event] [--log all|error|system|audio|video|render|input] [--display N] [--fullscreen | --windows N] [--title title] [--icon icon.bmp] [--center | --position X,Y] [--geometry WxH] [--depth N] [--refresh R] [--vsync] [--noframe] [--resize] [--minimize] [--maximize] [--grab]"
-
-#define AUDIO_USAGE \
-"[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]"
-
-CommonState *
-CommonCreateState(char **argv, Uint32 flags)
-{
-    CommonState *state = SDL_calloc(1, sizeof(*state));
-    if (!state) {
-        SDL_OutOfMemory();
-        return NULL;
-    }
-
-    /* Initialize some defaults */
-    state->argv = argv;
-    state->flags = flags;
-#ifdef __NDS__
-    state->window_title = "";
-#else
-    state->window_title = argv[0];
-#endif
-    state->window_flags = 0;
-    state->window_x = SDL_WINDOWPOS_UNDEFINED;
-    state->window_y = SDL_WINDOWPOS_UNDEFINED;
-    state->window_w = DEFAULT_WINDOW_WIDTH;
-    state->window_h = DEFAULT_WINDOW_HEIGHT;
-    state->num_windows = 1;
-    state->audiospec.freq = 22050;
-    state->audiospec.format = AUDIO_S16;
-    state->audiospec.channels = 2;
-    state->audiospec.samples = 2048;
-
-    /* Set some very sane GL defaults */
-    state->gl_red_size = 3;
-    state->gl_green_size = 3;
-    state->gl_blue_size = 2;
-    state->gl_alpha_size = 0;
-    state->gl_buffer_size = 0;
-    state->gl_depth_size = 16;
-    state->gl_stencil_size = 0;
-    state->gl_double_buffer = 1;
-    state->gl_accum_red_size = 0;
-    state->gl_accum_green_size = 0;
-    state->gl_accum_blue_size = 0;
-    state->gl_accum_alpha_size = 0;
-    state->gl_stereo = 0;
-    state->gl_multisamplebuffers = 0;
-    state->gl_multisamplesamples = 0;
-    state->gl_retained_backing = 1;
-    state->gl_accelerated = -1;
-
-    return state;
-}
-
-int
-CommonArg(CommonState * state, int index)
-{
-    char **argv = state->argv;
-
-#ifdef __NDS__
-    return 0;
-#endif
-
-    if (SDL_strcasecmp(argv[index], "--video") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->videodriver = argv[index];
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--renderer") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->renderdriver = argv[index];
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--info") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        if (SDL_strcasecmp(argv[index], "all") == 0) {
-            state->verbose |=
-                (VERBOSE_VIDEO | VERBOSE_MODES | VERBOSE_RENDER |
-                 VERBOSE_EVENT);
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "video") == 0) {
-            state->verbose |= VERBOSE_VIDEO;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "modes") == 0) {
-            state->verbose |= VERBOSE_MODES;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "render") == 0) {
-            state->verbose |= VERBOSE_RENDER;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "event") == 0) {
-            state->verbose |= VERBOSE_EVENT;
-            return 2;
-        }
-        return -1;
-    }
-    if (SDL_strcasecmp(argv[index], "--log") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        if (SDL_strcasecmp(argv[index], "all") == 0) {
-            SDL_LogSetAllPriority(SDL_LOG_PRIORITY_VERBOSE);
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "error") == 0) {
-            SDL_LogSetPriority(SDL_LOG_CATEGORY_ERROR, SDL_LOG_PRIORITY_VERBOSE);
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "system") == 0) {
-            SDL_LogSetPriority(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE);
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "audio") == 0) {
-            SDL_LogSetPriority(SDL_LOG_CATEGORY_AUDIO, SDL_LOG_PRIORITY_VERBOSE);
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "video") == 0) {
-            SDL_LogSetPriority(SDL_LOG_CATEGORY_VIDEO, SDL_LOG_PRIORITY_VERBOSE);
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "render") == 0) {
-            SDL_LogSetPriority(SDL_LOG_CATEGORY_RENDER, SDL_LOG_PRIORITY_VERBOSE);
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "input") == 0) {
-            SDL_LogSetPriority(SDL_LOG_CATEGORY_INPUT, SDL_LOG_PRIORITY_VERBOSE);
-            return 2;
-        }
-        return -1;
-    }
-    if (SDL_strcasecmp(argv[index], "--display") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->display = SDL_atoi(argv[index]);
-        if (SDL_WINDOWPOS_ISUNDEFINED(state->window_x)) {
-            state->window_x = SDL_WINDOWPOS_UNDEFINED_DISPLAY(state->display);
-            state->window_y = SDL_WINDOWPOS_UNDEFINED_DISPLAY(state->display);
-        }
-        if (SDL_WINDOWPOS_ISCENTERED(state->window_x)) {
-            state->window_x = SDL_WINDOWPOS_CENTERED_DISPLAY(state->display);
-            state->window_y = SDL_WINDOWPOS_CENTERED_DISPLAY(state->display);
-        }
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--fullscreen") == 0) {
-        state->window_flags |= SDL_WINDOW_FULLSCREEN;
-        state->num_windows = 1;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--fullscreen-desktop") == 0) {
-        state->window_flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
-        state->num_windows = 1;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--windows") == 0) {
-        ++index;
-        if (!argv[index] || !SDL_isdigit(*argv[index])) {
-            return -1;
-        }
-        if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) {
-            state->num_windows = SDL_atoi(argv[index]);
-        }
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--title") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->window_title = argv[index];
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--icon") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->window_icon = argv[index];
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--center") == 0) {
-        state->window_x = SDL_WINDOWPOS_CENTERED;
-        state->window_y = SDL_WINDOWPOS_CENTERED;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--position") == 0) {
-        char *x, *y;
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        x = argv[index];
-        y = argv[index];
-        while (*y && *y != ',') {
-            ++y;
-        }
-        if (!*y) {
-            return -1;
-        }
-        *y++ = '\0';
-        state->window_x = SDL_atoi(x);
-        state->window_y = SDL_atoi(y);
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--geometry") == 0) {
-        char *w, *h;
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        w = argv[index];
-        h = argv[index];
-        while (*h && *h != 'x') {
-            ++h;
-        }
-        if (!*h) {
-            return -1;
-        }
-        *h++ = '\0';
-        state->window_w = SDL_atoi(w);
-        state->window_h = SDL_atoi(h);
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--depth") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->depth = SDL_atoi(argv[index]);
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--refresh") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->refresh_rate = SDL_atoi(argv[index]);
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--vsync") == 0) {
-        state->render_flags |= SDL_RENDERER_PRESENTVSYNC;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--noframe") == 0) {
-        state->window_flags |= SDL_WINDOW_BORDERLESS;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--resize") == 0) {
-        state->window_flags |= SDL_WINDOW_RESIZABLE;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--minimize") == 0) {
-        state->window_flags |= SDL_WINDOW_MINIMIZED;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--maximize") == 0) {
-        state->window_flags |= SDL_WINDOW_MAXIMIZED;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--grab") == 0) {
-        state->window_flags |= SDL_WINDOW_INPUT_GRABBED;
-        return 1;
-    }
-    if (SDL_strcasecmp(argv[index], "--rate") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->audiospec.freq = SDL_atoi(argv[index]);
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--format") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        if (SDL_strcasecmp(argv[index], "U8") == 0) {
-            state->audiospec.format = AUDIO_U8;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "S8") == 0) {
-            state->audiospec.format = AUDIO_S8;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "U16") == 0) {
-            state->audiospec.format = AUDIO_U16;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "U16LE") == 0) {
-            state->audiospec.format = AUDIO_U16LSB;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "U16BE") == 0) {
-            state->audiospec.format = AUDIO_U16MSB;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "S16") == 0) {
-            state->audiospec.format = AUDIO_S16;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "S16LE") == 0) {
-            state->audiospec.format = AUDIO_S16LSB;
-            return 2;
-        }
-        if (SDL_strcasecmp(argv[index], "S16BE") == 0) {
-            state->audiospec.format = AUDIO_S16MSB;
-            return 2;
-        }
-        return -1;
-    }
-    if (SDL_strcasecmp(argv[index], "--channels") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->audiospec.channels = (Uint8) SDL_atoi(argv[index]);
-        return 2;
-    }
-    if (SDL_strcasecmp(argv[index], "--samples") == 0) {
-        ++index;
-        if (!argv[index]) {
-            return -1;
-        }
-        state->audiospec.samples = (Uint16) SDL_atoi(argv[index]);
-        return 2;
-    }
-    if ((SDL_strcasecmp(argv[index], "-h") == 0)
-        || (SDL_strcasecmp(argv[index], "--help") == 0)) {
-        /* Print the usage message */
-        return -1;
-    }
-    if (SDL_strcmp(argv[index], "-NSDocumentRevisionsDebugMode") == 0) {
-	/* Debug flag sent by Xcode */
-        return 2;
-    }
-    return 0;
-}
-
-const char *
-CommonUsage(CommonState * state)
-{
-    switch (state->flags & (SDL_INIT_VIDEO | SDL_INIT_AUDIO)) {
-    case SDL_INIT_VIDEO:
-        return VIDEO_USAGE;
-    case SDL_INIT_AUDIO:
-        return AUDIO_USAGE;
-    case (SDL_INIT_VIDEO | SDL_INIT_AUDIO):
-        return VIDEO_USAGE " " AUDIO_USAGE;
-    default:
-        return "";
-    }
-}
-
-static void
-PrintRendererFlag(Uint32 flag)
-{
-    switch (flag) {
-    case SDL_RENDERER_PRESENTVSYNC:
-        fprintf(stderr, "PresentVSync");
-        break;
-    case SDL_RENDERER_ACCELERATED:
-        fprintf(stderr, "Accelerated");
-        break;
-    default:
-        fprintf(stderr, "0x%8.8x", flag);
-        break;
-    }
-}
-
-static void
-PrintPixelFormat(Uint32 format)
-{
-    switch (format) {
-    case SDL_PIXELFORMAT_UNKNOWN:
-        fprintf(stderr, "Unknwon");
-        break;
-    case SDL_PIXELFORMAT_INDEX1LSB:
-        fprintf(stderr, "Index1LSB");
-        break;
-    case SDL_PIXELFORMAT_INDEX1MSB:
-        fprintf(stderr, "Index1MSB");
-        break;
-    case SDL_PIXELFORMAT_INDEX4LSB:
-        fprintf(stderr, "Index4LSB");
-        break;
-    case SDL_PIXELFORMAT_INDEX4MSB:
-        fprintf(stderr, "Index4MSB");
-        break;
-    case SDL_PIXELFORMAT_INDEX8:
-        fprintf(stderr, "Index8");
-        break;
-    case SDL_PIXELFORMAT_RGB332:
-        fprintf(stderr, "RGB332");
-        break;
-    case SDL_PIXELFORMAT_RGB444:
-        fprintf(stderr, "RGB444");
-        break;
-    case SDL_PIXELFORMAT_RGB555:
-        fprintf(stderr, "RGB555");
-        break;
-    case SDL_PIXELFORMAT_BGR555:
-        fprintf(stderr, "BGR555");
-        break;
-    case SDL_PIXELFORMAT_ARGB4444:
-        fprintf(stderr, "ARGB4444");
-        break;
-    case SDL_PIXELFORMAT_ABGR4444:
-        fprintf(stderr, "ABGR4444");
-        break;
-    case SDL_PIXELFORMAT_ARGB1555:
-        fprintf(stderr, "ARGB1555");
-        break;
-    case SDL_PIXELFORMAT_ABGR1555:
-        fprintf(stderr, "ABGR1555");
-        break;
-    case SDL_PIXELFORMAT_RGB565:
-        fprintf(stderr, "RGB565");
-        break;
-    case SDL_PIXELFORMAT_BGR565:
-        fprintf(stderr, "BGR565");
-        break;
-    case SDL_PIXELFORMAT_RGB24:
-        fprintf(stderr, "RGB24");
-        break;
-    case SDL_PIXELFORMAT_BGR24:
-        fprintf(stderr, "BGR24");
-        break;
-    case SDL_PIXELFORMAT_RGB888:
-        fprintf(stderr, "RGB888");
-        break;
-    case SDL_PIXELFORMAT_BGR888:
-        fprintf(stderr, "BGR888");
-        break;
-    case SDL_PIXELFORMAT_ARGB8888:
-        fprintf(stderr, "ARGB8888");
-        break;
-    case SDL_PIXELFORMAT_RGBA8888:
-        fprintf(stderr, "RGBA8888");
-        break;
-    case SDL_PIXELFORMAT_ABGR8888:
-        fprintf(stderr, "ABGR8888");
-        break;
-    case SDL_PIXELFORMAT_BGRA8888:
-        fprintf(stderr, "BGRA8888");
-        break;
-    case SDL_PIXELFORMAT_ARGB2101010:
-        fprintf(stderr, "ARGB2101010");
-        break;
-    case SDL_PIXELFORMAT_YV12:
-        fprintf(stderr, "YV12");
-        break;
-    case SDL_PIXELFORMAT_IYUV:
-        fprintf(stderr, "IYUV");
-        break;
-    case SDL_PIXELFORMAT_YUY2:
-        fprintf(stderr, "YUY2");
-        break;
-    case SDL_PIXELFORMAT_UYVY:
-        fprintf(stderr, "UYVY");
-        break;
-    case SDL_PIXELFORMAT_YVYU:
-        fprintf(stderr, "YVYU");
-        break;
-    default:
-        fprintf(stderr, "0x%8.8x", format);
-        break;
-    }
-}
-
-static void
-PrintRenderer(SDL_RendererInfo * info)
-{
-    int i, count;
-
-    fprintf(stderr, "  Renderer %s:\n", info->name);
-
-    fprintf(stderr, "    Flags: 0x%8.8X", info->flags);
-    fprintf(stderr, " (");
-    count = 0;
-    for (i = 0; i < sizeof(info->flags) * 8; ++i) {
-        Uint32 flag = (1 << i);
-        if (info->flags & flag) {
-            if (count > 0) {
-                fprintf(stderr, " | ");
-            }
-            PrintRendererFlag(flag);
-            ++count;
-        }
-    }
-    fprintf(stderr, ")\n");
-
-    fprintf(stderr, "    Texture formats (%d): ", info->num_texture_formats);
-    for (i = 0; i < (int) info->num_texture_formats; ++i) {
-        if (i > 0) {
-            fprintf(stderr, ", ");
-        }
-        PrintPixelFormat(info->texture_formats[i]);
-    }
-    fprintf(stderr, "\n");
-
-    if (info->max_texture_width || info->max_texture_height) {
-        fprintf(stderr, "    Max Texture Size: %dx%d\n",
-                info->max_texture_width, info->max_texture_height);
-    }
-}
-
-static SDL_Surface *
-LoadIcon(const char *file)
-{
-    SDL_Surface *icon;
-
-    /* Load the icon surface */
-    icon = SDL_LoadBMP(file);
-    if (icon == NULL) {
-        fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError());
-        return (NULL);
-    }
-
-    if (icon->format->palette) {
-        /* Set the colorkey */
-        SDL_SetColorKey(icon, 1, *((Uint8 *) icon->pixels));
-    }
-
-    return (icon);
-}
-
-SDL_bool
-CommonInit(CommonState * state)
-{
-    int i, j, m, n, w, h;
-    SDL_DisplayMode fullscreen_mode;
-
-    if (state->flags & SDL_INIT_VIDEO) {
-        if (state->verbose & VERBOSE_VIDEO) {
-            n = SDL_GetNumVideoDrivers();
-            if (n == 0) {
-                fprintf(stderr, "No built-in video drivers\n");
-            } else {
-                fprintf(stderr, "Built-in video drivers:");
-                for (i = 0; i < n; ++i) {
-                    if (i > 0) {
-                        fprintf(stderr, ",");
-                    }
-                    fprintf(stderr, " %s", SDL_GetVideoDriver(i));
-                }
-                fprintf(stderr, "\n");
-            }
-        }
-        if (SDL_VideoInit(state->videodriver) < 0) {
-            fprintf(stderr, "Couldn't initialize video driver: %s\n",
-                    SDL_GetError());
-            return SDL_FALSE;
-        }
-        if (state->verbose & VERBOSE_VIDEO) {
-            fprintf(stderr, "Video driver: %s\n",
-                    SDL_GetCurrentVideoDriver());
-        }
-
-        /* Upload GL settings */
-        SDL_GL_SetAttribute(SDL_GL_RED_SIZE, state->gl_red_size);
-        SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, state->gl_green_size);
-        SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, state->gl_blue_size);
-        SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, state->gl_alpha_size);
-        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, state->gl_double_buffer);
-        SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, state->gl_buffer_size);
-        SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, state->gl_depth_size);
-        SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, state->gl_stencil_size);
-        SDL_GL_SetAttribute(SDL_GL_ACCUM_RED_SIZE, state->gl_accum_red_size);
-        SDL_GL_SetAttribute(SDL_GL_ACCUM_GREEN_SIZE, state->gl_accum_green_size);
-        SDL_GL_SetAttribute(SDL_GL_ACCUM_BLUE_SIZE, state->gl_accum_blue_size);
-        SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE, state->gl_accum_alpha_size);
-        SDL_GL_SetAttribute(SDL_GL_STEREO, state->gl_stereo);
-        SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, state->gl_multisamplebuffers);
-        SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, state->gl_multisamplesamples);
-        if (state->gl_accelerated >= 0) {
-            SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL,
-                                state->gl_accelerated);
-        }
-        SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, state->gl_retained_backing);
-        if (state->gl_major_version) {
-            SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, state->gl_major_version);
-            SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, state->gl_minor_version);
-        }
-
-        if (state->verbose & VERBOSE_MODES) {
-            SDL_Rect bounds;
-            SDL_DisplayMode mode;
-            int bpp;
-            Uint32 Rmask, Gmask, Bmask, Amask;
-
-            n = SDL_GetNumVideoDisplays();
-            fprintf(stderr, "Number of displays: %d\n", n);
-            for (i = 0; i < n; ++i) {
-                fprintf(stderr, "Display %d:\n", i);
-
-                SDL_zero(bounds);
-                SDL_GetDisplayBounds(i, &bounds);
-                fprintf(stderr, "Bounds: %dx%d at %d,%d\n", bounds.w, bounds.h, bounds.x, bounds.y);
-
-                SDL_GetDesktopDisplayMode(i, &mode);
-                SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask, &Gmask,
-                                           &Bmask, &Amask);
-                fprintf(stderr,
-                        "  Current mode: %dx%d@%dHz, %d bits-per-pixel (%s)\n",
-                        mode.w, mode.h, mode.refresh_rate, bpp,
-                        SDL_GetPixelFormatName(mode.format));
-                if (Rmask || Gmask || Bmask) {
-                    fprintf(stderr, "      Red Mask   = 0x%.8x\n", Rmask);
-                    fprintf(stderr, "      Green Mask = 0x%.8x\n", Gmask);
-                    fprintf(stderr, "      Blue Mask  = 0x%.8x\n", Bmask);
-                    if (Amask)
-                        fprintf(stderr, "      Alpha Mask = 0x%.8x\n", Amask);
-                }
-
-                /* Print available fullscreen video modes */
-                m = SDL_GetNumDisplayModes(i);
-                if (m == 0) {
-                    fprintf(stderr, "No available fullscreen video modes\n");
-                } else {
-                    fprintf(stderr, "  Fullscreen video modes:\n");
-                    for (j = 0; j < m; ++j) {
-                        SDL_GetDisplayMode(i, j, &mode);
-                        SDL_PixelFormatEnumToMasks(mode.format, &bpp, &Rmask,
-                                                   &Gmask, &Bmask, &Amask);
-                        fprintf(stderr,
-                                "    Mode %d: %dx%d@%dHz, %d bits-per-pixel (%s)\n",
-                                j, mode.w, mode.h, mode.refresh_rate, bpp,
-                                SDL_GetPixelFormatName(mode.format));
-                        if (Rmask || Gmask || Bmask) {
-                            fprintf(stderr, "        Red Mask   = 0x%.8x\n",
-                                    Rmask);
-                            fprintf(stderr, "        Green Mask = 0x%.8x\n",
-                                    Gmask);
-                            fprintf(stderr, "        Blue Mask  = 0x%.8x\n",
-                                    Bmask);
-                            if (Amask)
-                                fprintf(stderr,
-                                        "        Alpha Mask = 0x%.8x\n",
-                                        Amask);
-                        }
-                    }
-                }
-            }
-        }
-
-        if (state->verbose & VERBOSE_RENDER) {
-            SDL_RendererInfo info;
-
-            n = SDL_GetNumRenderDrivers();
-            if (n == 0) {
-                fprintf(stderr, "No built-in render drivers\n");
-            } else {
-                fprintf(stderr, "Built-in render drivers:\n");
-                for (i = 0; i < n; ++i) {
-                    SDL_GetRenderDriverInfo(i, &info);
-                    PrintRenderer(&info);
-                }
-            }
-        }
-
-        SDL_zero(fullscreen_mode);
-        switch (state->depth) {
-        case 8:
-            fullscreen_mode.format = SDL_PIXELFORMAT_INDEX8;
-            break;
-        case 15:
-            fullscreen_mode.format = SDL_PIXELFORMAT_RGB555;
-            break;
-        case 16:
-            fullscreen_mode.format = SDL_PIXELFORMAT_RGB565;
-            break;
-        case 24:
-            fullscreen_mode.format = SDL_PIXELFORMAT_RGB24;
-            break;
-        default:
-            fullscreen_mode.format = SDL_PIXELFORMAT_RGB888;
-            break;
-        }
-        fullscreen_mode.refresh_rate = state->refresh_rate;
-
-        state->windows =
-            (SDL_Window **) SDL_malloc(state->num_windows *
-                                        sizeof(*state->windows));
-        state->renderers =
-            (SDL_Renderer **) SDL_malloc(state->num_windows *
-                                        sizeof(*state->renderers));
-        if (!state->windows || !state->renderers) {
-            fprintf(stderr, "Out of memory!\n");
-            return SDL_FALSE;
-        }
-        for (i = 0; i < state->num_windows; ++i) {
-            char title[1024];
-
-            if (state->num_windows > 1) {
-                SDL_snprintf(title, SDL_arraysize(title), "%s %d",
-                             state->window_title, i + 1);
-            } else {
-                SDL_strlcpy(title, state->window_title, SDL_arraysize(title));
-            }
-            state->windows[i] =
-                SDL_CreateWindow(title, state->window_x, state->window_y,
-                                 state->window_w, state->window_h,
-                                 state->window_flags);
-            if (!state->windows[i]) {
-                fprintf(stderr, "Couldn't create window: %s\n",
-                        SDL_GetError());
-                return SDL_FALSE;
-            }
-            SDL_GetWindowSize(state->windows[i], &w, &h);
-            if (!(state->window_flags & SDL_WINDOW_RESIZABLE) &&
-                (w != state->window_w || h != state->window_h)) {
-                printf("Window requested size %dx%d, got %dx%d\n", state->window_w, state->window_h, w, h);
-                state->window_w = w;
-                state->window_h = h;
-            }
-            if (SDL_SetWindowDisplayMode(state->windows[i], &fullscreen_mode) < 0) {
-                fprintf(stderr, "Can't set up fullscreen display mode: %s\n",
-                        SDL_GetError());
-                return SDL_FALSE;
-            }
-
-            if (state->window_icon) {
-                SDL_Surface *icon = LoadIcon(state->window_icon);
-                if (icon) {
-                    SDL_SetWindowIcon(state->windows[i], icon);
-                    SDL_FreeSurface(icon);
-                }
-            }
-
-            SDL_ShowWindow(state->windows[i]);
-
-            state->renderers[i] = NULL;
-
-            if (!state->skip_renderer
-                && (state->renderdriver
-                    || !(state->window_flags & SDL_WINDOW_OPENGL))) {
-                m = -1;
-                if (state->renderdriver) {
-                    SDL_RendererInfo info;
-                    n = SDL_GetNumRenderDrivers();
-                    for (j = 0; j < n; ++j) {
-                        SDL_GetRenderDriverInfo(j, &info);
-                        if (SDL_strcasecmp(info.name, state->renderdriver) ==
-                            0) {
-                            m = j;
-                            break;
-                        }
-                    }
-                    if (m == n) {
-                        fprintf(stderr,
-                                "Couldn't find render driver named %s",
-                                state->renderdriver);
-                        return SDL_FALSE;
-                    }
-                }
-                state->renderers[i] = SDL_CreateRenderer(state->windows[i],
-                                            m, state->render_flags);
-                if (!state->renderers[i]) {
-                    fprintf(stderr, "Couldn't create renderer: %s\n",
-                            SDL_GetError());
-                    return SDL_FALSE;
-                }
-                if (state->verbose & VERBOSE_RENDER) {
-                    SDL_RendererInfo info;
-
-                    fprintf(stderr, "Current renderer:\n");
-                    SDL_GetRendererInfo(state->renderers[i], &info);
-                    PrintRenderer(&info);
-                }
-            }
-        }
-    }
-
-    if (state->flags & SDL_INIT_AUDIO) {
-        if (state->verbose & VERBOSE_AUDIO) {
-            n = SDL_GetNumAudioDrivers();
-            if (n == 0) {
-                fprintf(stderr, "No built-in audio drivers\n");
-            } else {
-                fprintf(stderr, "Built-in audio drivers:");
-                for (i = 0; i < n; ++i) {
-                    if (i > 0) {
-                        fprintf(stderr, ",");
-                    }
-                    fprintf(stderr, " %s", SDL_GetAudioDriver(i));
-                }
-                fprintf(stderr, "\n");
-            }
-        }
-        if (SDL_AudioInit(state->audiodriver) < 0) {
-            fprintf(stderr, "Couldn't initialize audio driver: %s\n",
-                    SDL_GetError());
-            return SDL_FALSE;
-        }
-        if (state->verbose & VERBOSE_VIDEO) {
-            fprintf(stderr, "Audio driver: %s\n",
-                    SDL_GetCurrentAudioDriver());
-        }
-
-        if (SDL_OpenAudio(&state->audiospec, NULL) < 0) {
-            fprintf(stderr, "Couldn't open audio: %s\n", SDL_GetError());
-            return SDL_FALSE;
-        }
-    }
-
-    return SDL_TRUE;
-}
-
-static void
-PrintEvent(SDL_Event * event)
-{
-    if (event->type == SDL_MOUSEMOTION) {
-        /* Mouse motion is really spammy */
-        //return;
-    }
-
-    fprintf(stderr, "SDL EVENT: ");
-    switch (event->type) {
-    case SDL_WINDOWEVENT:
-        switch (event->window.event) {
-        case SDL_WINDOWEVENT_SHOWN:
-            fprintf(stderr, "Window %d shown", event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_HIDDEN:
-            fprintf(stderr, "Window %d hidden", event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_EXPOSED:
-            fprintf(stderr, "Window %d exposed", event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_MOVED:
-            fprintf(stderr, "Window %d moved to %d,%d",
-                    event->window.windowID, event->window.data1,
-                    event->window.data2);
-            break;
-        case SDL_WINDOWEVENT_RESIZED:
-            fprintf(stderr, "Window %d resized to %dx%d",
-                    event->window.windowID, event->window.data1,
-                    event->window.data2);
-            break;
-        case SDL_WINDOWEVENT_SIZE_CHANGED:
-            fprintf(stderr, "Window %d changed size to %dx%d",
-                    event->window.windowID, event->window.data1,
-                    event->window.data2);
-            break;
-        case SDL_WINDOWEVENT_MINIMIZED:
-            fprintf(stderr, "Window %d minimized", event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_MAXIMIZED:
-            fprintf(stderr, "Window %d maximized", event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_RESTORED:
-            fprintf(stderr, "Window %d restored", event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_ENTER:
-            fprintf(stderr, "Mouse entered window %d",
-                    event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_LEAVE:
-            fprintf(stderr, "Mouse left window %d", event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_FOCUS_GAINED:
-            fprintf(stderr, "Window %d gained keyboard focus",
-                    event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_FOCUS_LOST:
-            fprintf(stderr, "Window %d lost keyboard focus",
-                    event->window.windowID);
-            break;
-        case SDL_WINDOWEVENT_CLOSE:
-            fprintf(stderr, "Window %d closed", event->window.windowID);
-            break;
-        default:
-            fprintf(stderr, "Window %d got unknown event %d",
-                    event->window.windowID, event->window.event);
-            break;
-        }
-        break;
-    case SDL_KEYDOWN:
-        fprintf(stderr,
-                "Keyboard: key pressed  in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
-                event->key.windowID,
-                event->key.keysym.scancode,
-                SDL_GetScancodeName(event->key.keysym.scancode),
-                event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
-        break;
-    case SDL_KEYUP:
-        fprintf(stderr,
-                "Keyboard: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
-                event->key.windowID,
-                event->key.keysym.scancode,
-                SDL_GetScancodeName(event->key.keysym.scancode),
-                event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
-        break;
-    case SDL_TEXTINPUT:
-        fprintf(stderr, "Keyboard: text input \"%s\" in window %d",
-                event->text.text, event->text.windowID);
-        break;
-    case SDL_MOUSEMOTION:
-        fprintf(stderr, "Mouse: moved to %d,%d (%d,%d) in window %d",
-                event->motion.x, event->motion.y,
-                event->motion.xrel, event->motion.yrel,
-                event->motion.windowID);
-        break;
-    case SDL_MOUSEBUTTONDOWN:
-        fprintf(stderr, "Mouse: button %d pressed at %d,%d in window %d",
-                event->button.button, event->button.x, event->button.y,
-                event->button.windowID);
-        break;
-    case SDL_MOUSEBUTTONUP:
-        fprintf(stderr, "Mouse: button %d released at %d,%d in window %d",
-                event->button.button, event->button.x, event->button.y,
-                event->button.windowID);
-        break;
-    case SDL_MOUSEWHEEL:
-        fprintf(stderr,
-                "Mouse: wheel scrolled %d in x and %d in y in window %d",
-                event->wheel.x, event->wheel.y, event->wheel.windowID);
-        break;
-    case SDL_JOYBALLMOTION:
-        fprintf(stderr, "Joystick %d: ball %d moved by %d,%d",
-                event->jball.which, event->jball.ball, event->jball.xrel,
-                event->jball.yrel);
-        break;
-    case SDL_JOYHATMOTION:
-        fprintf(stderr, "Joystick %d: hat %d moved to ", event->jhat.which,
-                event->jhat.hat);
-        switch (event->jhat.value) {
-        case SDL_HAT_CENTERED:
-            fprintf(stderr, "CENTER");
-            break;
-        case SDL_HAT_UP:
-            fprintf(stderr, "UP");
-            break;
-        case SDL_HAT_RIGHTUP:
-            fprintf(stderr, "RIGHTUP");
-            break;
-        case SDL_HAT_RIGHT:
-            fprintf(stderr, "RIGHT");
-            break;
-        case SDL_HAT_RIGHTDOWN:
-            fprintf(stderr, "RIGHTDOWN");
-            break;
-        case SDL_HAT_DOWN:
-            fprintf(stderr, "DOWN");
-            break;
-        case SDL_HAT_LEFTDOWN:
-            fprintf(stderr, "LEFTDOWN");
-            break;
-        case SDL_HAT_LEFT:
-            fprintf(stderr, "LEFT");
-            break;
-        case SDL_HAT_LEFTUP:
-            fprintf(stderr, "LEFTUP");
-            break;
-        default:
-            fprintf(stderr, "UNKNOWN");
-            break;
-        }
-        break;
-    case SDL_JOYBUTTONDOWN:
-        fprintf(stderr, "Joystick %d: button %d pressed",
-                event->jbutton.which, event->jbutton.button);
-        break;
-    case SDL_JOYBUTTONUP:
-        fprintf(stderr, "Joystick %d: button %d released",
-                event->jbutton.which, event->jbutton.button);
-        break;
-    case SDL_CLIPBOARDUPDATE:
-        fprintf(stderr, "Clipboard updated");
-        break;
-    case SDL_QUIT:
-        fprintf(stderr, "Quit requested");
-        break;
-    case SDL_USEREVENT:
-        fprintf(stderr, "User event %d", event->user.code);
-        break;
-    default:
-        fprintf(stderr, "Unknown event %d", event->type);
-        break;
-    }
-    fprintf(stderr, "\n");
-}
-
-static void
-ScreenShot(SDL_Renderer *renderer)
-{
-    SDL_Rect viewport;
-    SDL_Surface *surface;
-
-    if (!renderer) {
-        return;
-    }
-
-    SDL_RenderGetViewport(renderer, &viewport);
-    surface = SDL_CreateRGBSurface(0, viewport.w, viewport.h, 24,
-#if SDL_BYTEORDER == SDL_LIL_ENDIAN
-                    0x00FF0000, 0x0000FF00, 0x000000FF,
-#else
-                    0x000000FF, 0x0000FF00, 0x00FF0000,
-#endif
-                    0x00000000);
-    if (!surface) {
-        fprintf(stderr, "Couldn't create surface: %s\n", SDL_GetError());
-        return;
-    }
-
-    if (SDL_RenderReadPixels(renderer, NULL, surface->format->format,
-                             surface->pixels, surface->pitch) < 0) {
-        fprintf(stderr, "Couldn't read screen: %s\n", SDL_GetError());
-        return;
-    }
-
-    if (SDL_SaveBMP(surface, "screenshot.bmp") < 0) {
-        fprintf(stderr, "Couldn't save screenshot.bmp: %s\n", SDL_GetError());
-        return;
-    }
-}
-
-void
-CommonEvent(CommonState * state, SDL_Event * event, int *done)
-{
-    int i;
-
-    if (state->verbose & VERBOSE_EVENT) {
-        PrintEvent(event);
-    }
-
-    switch (event->type) {
-    case SDL_WINDOWEVENT:
-        switch (event->window.event) {
-        case SDL_WINDOWEVENT_SIZE_CHANGED:
-            {
-                SDL_Window *window = SDL_GetWindowFromID(event->window.windowID);
-                if (window) {
-                    for (i = 0; i < state->num_windows; ++i) {
-                        if (window == state->windows[i] &&
-                            (state->window_flags & SDL_WINDOW_RESIZABLE)) {
-                            SDL_Rect viewport;
-
-                            viewport.x = 0;
-                            viewport.y = 0;
-                            SDL_GetWindowSize(window, &viewport.w, &viewport.h);
-                            SDL_RenderSetViewport(state->renderers[i], &viewport);
-                        }
-                    }
-                }
-            }
-            break;
-        case SDL_WINDOWEVENT_CLOSE:
-			{
-                SDL_Window *window = SDL_GetWindowFromID(event->window.windowID);
-                if (window) {
-					SDL_DestroyWindow(window);
-				}
-			}
-            break;
-        }
-        break;
-    case SDL_KEYDOWN:
-        switch (event->key.keysym.sym) {
-            /* Add hotkeys here */
-        case SDLK_PRINTSCREEN: {
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                if (window) {
-                    for (i = 0; i < state->num_windows; ++i) {
-                        if (window == state->windows[i]) {
-                            ScreenShot(state->renderers[i]);
-                        }
-                    }
-                }
-            }
-            break;
-        case SDLK_EQUALS:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrt-+ double the size of the window */
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                if (window) {
-                    int w, h;
-                    SDL_GetWindowSize(window, &w, &h);
-                    SDL_SetWindowSize(window, w*2, h*2);
-                }
-            }
-            break;
-        case SDLK_MINUS:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrt-- double the size of the window */
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                if (window) {
-                    int w, h;
-                    SDL_GetWindowSize(window, &w, &h);
-                    SDL_SetWindowSize(window, w/2, h/2);
-                }
-            }
-            break;
-        case SDLK_c:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrl-C copy awesome text! */
-                SDL_SetClipboardText("SDL rocks!\nYou know it!");
-                printf("Copied text to clipboard\n");
-            }
-            break;
-        case SDLK_v:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrl-V paste awesome text! */
-                char *text = SDL_GetClipboardText();
-                if (*text) {
-                    printf("Clipboard: %s\n", text);
-                } else {
-                    printf("Clipboard is empty\n");
-                }
-                SDL_free(text);
-            }
-            break;
-        case SDLK_g:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrl-G toggle grab */
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                if (window) {
-                    SDL_SetWindowGrab(window, !SDL_GetWindowGrab(window));
-                }
-            }
-            break;
-        case SDLK_m:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrl-M maximize */
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                if (window) {
-                    Uint32 flags = SDL_GetWindowFlags(window);
-                    if (flags & SDL_WINDOW_MAXIMIZED) {
-                        SDL_RestoreWindow(window);
-                    } else {
-                        SDL_MaximizeWindow(window);
-                    }
-                }
-            }
-            break;
-        case SDLK_r:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrl-R toggle mouse relative mode */
-                SDL_SetRelativeMouseMode(!SDL_GetRelativeMouseMode());
-            }
-            break;
-        case SDLK_z:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrl-Z minimize */
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                if (window) {
-                    SDL_MinimizeWindow(window);
-                }
-            }
-            break;
-        case SDLK_RETURN:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrl-Enter toggle fullscreen */
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                if (window) {
-                    Uint32 flags = SDL_GetWindowFlags(window);
-                    if (flags & SDL_WINDOW_FULLSCREEN) {
-                        SDL_SetWindowFullscreen(window, SDL_FALSE);
-                    } else {
-                        SDL_SetWindowFullscreen(window, SDL_TRUE);
-                    }
-                }
-            }
-            break;
-        case SDLK_b:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                /* Ctrl-B toggle window border */
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                if (window) {
-                    const Uint32 flags = SDL_GetWindowFlags(window);
-                    const SDL_bool b = ((flags & SDL_WINDOW_BORDERLESS) != 0);
-                    SDL_SetWindowBordered(window, b);
-                }
-            }
-            break;
-        case SDLK_1:
-            if (event->key.keysym.mod & KMOD_CTRL) {
-                SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
-                SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "Test Message", "You're awesome!", window);
-            }
-            break;
-        case SDLK_ESCAPE:
-            *done = 1;
-            break;
-        default:
-            break;
-        }
-        break;
-    case SDL_QUIT:
-        *done = 1;
-        break;
-    }
-}
-
-void
-CommonQuit(CommonState * state)
-{
-    int i;
-
-    if (state->windows) {
-        SDL_free(state->windows);
-    }
-    if (state->renderers) {
-        for (i = 0; i < state->num_windows; ++i) {
-            if (state->renderers[i]) {
-                SDL_DestroyRenderer(state->renderers[i]);
-            }
-        }
-        SDL_free(state->renderers);
-    }
-    if (state->flags & SDL_INIT_VIDEO) {
-        SDL_VideoQuit();
-    }
-    if (state->flags & SDL_INIT_AUDIO) {
-        SDL_AudioQuit();
-    }
-    SDL_free(state);
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/test/common.h	Mon Dec 31 10:14:38 2012 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
-  Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely.
-*/
-
-/* A simple test program framework */
-
-#include "SDL.h"
-
-#ifdef __NDS__
-#define DEFAULT_WINDOW_WIDTH  256
-#define DEFAULT_WINDOW_HEIGHT (2*192)
-#else
-#define DEFAULT_WINDOW_WIDTH  640
-#define DEFAULT_WINDOW_HEIGHT 480
-#endif
-
-#define VERBOSE_VIDEO   0x00000001
-#define VERBOSE_MODES   0x00000002
-#define VERBOSE_RENDER  0x00000004
-#define VERBOSE_EVENT   0x00000008
-#define VERBOSE_AUDIO   0x00000010
-
-typedef struct
-{
-    /* SDL init flags */
-    char **argv;
-    Uint32 flags;
-    Uint32 verbose;
-
-    /* Video info */
-    const char *videodriver;
-    int display;
-    const char *window_title;
-    const char *window_icon;
-    Uint32 window_flags;
-    int window_x;
-    int window_y;
-    int window_w;
-    int window_h;
-    int depth;
-    int refresh_rate;
-    int num_windows;
-    SDL_Window **windows;
-
-    /* Renderer info */
-    const char *renderdriver;
-    Uint32 render_flags;
-    SDL_bool skip_renderer;
-    SDL_Renderer **renderers;
-
-    /* Audio info */
-    const char *audiodriver;
-    SDL_AudioSpec audiospec;
-
-    /* GL settings */
-    int gl_red_size;
-    int gl_green_size;
-    int gl_blue_size;
-    int gl_alpha_size;
-    int gl_buffer_size;
-    int gl_depth_size;
-    int gl_stencil_size;
-    int gl_double_buffer;
-    int gl_accum_red_size;
-    int gl_accum_green_size;
-    int gl_accum_blue_size;
-    int gl_accum_alpha_size;
-    int gl_stereo;
-    int gl_multisamplebuffers;
-    int gl_multisamplesamples;
-    int gl_retained_backing;
-    int gl_accelerated;
-    int gl_major_version;
-    int gl_minor_version;
-} CommonState;
-
-extern CommonState *CommonCreateState(char **argv, Uint32 flags);
-extern int CommonArg(CommonState * state, int index);
-extern const char *CommonUsage(CommonState * state);
-extern SDL_bool CommonInit(CommonState * state);
-extern void CommonEvent(CommonState * state, SDL_Event * event, int *done);
-extern void CommonQuit(CommonState * state);
-
-/* vi: set ts=4 sw=4 expandtab: */
--- a/test/configure	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/configure	Mon Dec 31 10:26:38 2012 -0800
@@ -1,11 +1,9 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68.
+# Generated by GNU Autoconf 2.69.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -134,6 +132,31 @@
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -167,7 +190,8 @@
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -211,21 +235,25 @@
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	# Preserve -v and -x to the replacement shell.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	case $- in # ((((
-	  *v*x* | *x*v* ) as_opts=-vx ;;
-	  *v* ) as_opts=-v ;;
-	  *x* ) as_opts=-x ;;
-	  * ) as_opts= ;;
-	esac
-	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -327,6 +355,14 @@
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -448,6 +484,10 @@
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -482,16 +522,16 @@
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -503,28 +543,8 @@
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -1111,8 +1131,6 @@
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1367,9 +1385,9 @@
 if $ac_init_version; then
   cat <<\_ACEOF
 configure
-generated by GNU Autoconf 2.68
-
-Copyright (C) 2010 Free Software Foundation, Inc.
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1487,7 +1505,7 @@
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
+	 test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -1547,7 +1565,7 @@
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -2019,7 +2037,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2059,7 +2077,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2112,7 +2130,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2153,7 +2171,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -2211,7 +2229,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2255,7 +2273,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2701,8 +2719,7 @@
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -2801,11 +2818,11 @@
 int
 main ()
 {
-/* FIXME: Include the comments suggested by Paul. */
+
 #ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
+  /* Ultrix mips cc rejects this sort of thing.  */
   typedef int charset[2];
-  const charset cs;
+  const charset cs = { 0, 0 };
   /* SunOS 4.1.1 cc rejects this.  */
   char const *const *pcpcc;
   char **ppc;
@@ -2822,8 +2839,9 @@
   ++pcpcc;
   ppc = (char**) pcpcc;
   pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
@@ -2839,10 +2857,10 @@
     iptr p = 0;
     ++p;
   }
-  { /* AIX XL C 1.02.0.0 rejects this saying
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
@@ -2922,7 +2940,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_OSMESA_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2999,7 +3017,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3042,7 +3060,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3230,7 +3248,7 @@
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3432,7 +3450,7 @@
   rm -f conf.sdltest
 
 CFLAGS="$CFLAGS $SDL_CFLAGS"
-LIBS="$LIBS $SDL_LIBS"
+LIBS="$LIBS -lSDL2_test $SDL_LIBS"
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -4338,16 +4356,16 @@
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -4407,28 +4425,16 @@
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -4450,7 +4456,7 @@
 # values after options handling.
 ac_log="
 This file was extended by $as_me, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -4503,10 +4509,10 @@
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.68,
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -4583,7 +4589,7 @@
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
--- a/test/configure.in	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/configure.in	Mon Dec 31 10:26:38 2012 -0800
@@ -86,7 +86,7 @@
 	    AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])
 )
 CFLAGS="$CFLAGS $SDL_CFLAGS"
-LIBS="$LIBS $SDL_LIBS"
+LIBS="$LIBS -lSDL2_test $SDL_LIBS"
 
 dnl Check for X11 path, needed for OpenGL on some systems
 AC_PATH_X
--- a/test/testdraw2.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testdraw2.c	Mon Dec 31 10:26:38 2012 -0800
@@ -16,11 +16,11 @@
 #include <stdio.h>
 #include <time.h>
 
-#include "common.h"
+#include "SDL_test_common.h"
 
 #define NUM_OBJECTS	100
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 static int num_objects;
 static SDL_bool cycle_color;
 static SDL_bool cycle_alpha;
@@ -180,14 +180,14 @@
     num_objects = NUM_OBJECTS;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
             consumed = -1;
             if (SDL_strcasecmp(argv[i], "--blend") == 0) {
@@ -220,12 +220,12 @@
         if (consumed < 0) {
             fprintf(stderr,
                     "Usage: %s %s [--blend none|blend|add|mod] [--cyclecolor] [--cyclealpha]\n",
-                    argv[0], CommonUsage(state));
+                    argv[0], SDLTest_CommonUsage(state));
             return 1;
         }
         i += consumed;
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         return 2;
     }
 
@@ -247,7 +247,7 @@
         /* Check for events */
         ++frames;
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
         }
         for (i = 0; i < state->num_windows; ++i) {
             SDL_Renderer *renderer = state->renderers[i];
@@ -262,7 +262,7 @@
         }
     }
 
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
 
     /* Print out some timing information */
     now = SDL_GetTicks();
--- a/test/testgl2.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testgl2.c	Mon Dec 31 10:26:38 2012 -0800
@@ -14,7 +14,7 @@
 #include <string.h>
 #include <math.h>
 
-#include "common.h"
+#include "SDL_test_common.h"
 
 #ifdef __MACOS__
 #define HAVE_OPENGL
@@ -27,7 +27,7 @@
 /* Undefine this if you want a flat cube instead of a rainbow cube */
 #define SHADED_CUBE
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 static SDL_GLContext context;
 
 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
@@ -38,7 +38,7 @@
         /* SDL_GL_MakeCurrent(0, NULL); *//* doesn't do anything */
         SDL_GL_DeleteContext(context);
     }
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     exit(rc);
 }
 
@@ -186,14 +186,14 @@
     accel = -1;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
             if (SDL_strcasecmp(argv[i], "--fsaa") == 0) {
                 ++fsaa;
@@ -207,7 +207,7 @@
         }
         if (consumed < 0) {
             fprintf(stderr, "Usage: %s %s [--fsaa] [--accel n]\n", argv[0],
-                    CommonUsage(state));
+                    SDLTest_CommonUsage(state));
             quit(1);
         }
         i += consumed;
@@ -228,7 +228,7 @@
         state->gl_accelerated = accel;
     }
 
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         quit(2);
     }
 
@@ -327,7 +327,7 @@
         /* Check for events */
         ++frames;
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
         }
         for (i = 0; i < state->num_windows; ++i) {
             int w, h;
--- a/test/testgles.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testgles.c	Mon Dec 31 10:26:38 2012 -0800
@@ -14,7 +14,7 @@
 #include <string.h>
 #include <math.h>
 
-#include "common.h"
+#include "SDL_test_common.h"
 
 #if defined(__IPHONEOS__) || defined(__ANDROID__)
 #define HAVE_OPENGLES
@@ -24,7 +24,7 @@
 
 #include "SDL_opengles.h"
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 static SDL_GLContext *context = NULL;
 static int depth = 16;
 
@@ -44,7 +44,7 @@
         SDL_free(context);
     }
 
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     exit(rc);
 }
 
@@ -115,14 +115,14 @@
     accel = 0;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
             if (SDL_strcasecmp(argv[i], "--fsaa") == 0) {
                 ++fsaa;
@@ -144,7 +144,7 @@
         }
         if (consumed < 0) {
             fprintf(stderr, "Usage: %s %s [--fsaa] [--accel] [--zdepth %%d]\n", argv[0],
-                    CommonUsage(state));
+                    SDLTest_CommonUsage(state));
             quit(1);
         }
         i += consumed;
@@ -163,7 +163,7 @@
     if (accel) {
         state->gl_accelerated=1;
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         quit(2);
     }
 
@@ -306,7 +306,7 @@
                         break;
                 }
             }
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
         }
         for (i = 0; i < state->num_windows; ++i) {
             status = SDL_GL_MakeCurrent(state->windows[i], context[i]);
--- a/test/testime.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testime.c	Mon Dec 31 10:26:38 2012 -0800
@@ -20,13 +20,13 @@
 #include "SDL_ttf.h"
 #endif
 
-#include "common.h"
+#include "SDL_test_common.h"
 
 #define DEFAULT_PTSIZE  30
 #define DEFAULT_FONT    "/System/Library/Fonts/华文细黑.ttf"
 #define MAX_TEXT_LENGTH 256
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 static SDL_Rect textRect, markedRect;
 static SDL_Color lineColor = {0,0,0,0};
 static SDL_Color backColor = {255,255,255,0};
@@ -211,12 +211,12 @@
     const char *fontname = DEFAULT_FONT;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;i++) {
-        CommonArg(state, i);
+        SDLTest_CommonArg(state, i);
     }
     for (argc--, argv++; argc > 0; argc--, argv++)
     {
@@ -239,7 +239,7 @@
         }
     }
     
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         return 2;
     }
 
@@ -273,7 +273,7 @@
     while (!done) {
         /* Check for events */
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
             switch(event.type) {
                 case SDL_KEYDOWN: {
                     switch (event.key.keysym.sym)
@@ -361,7 +361,7 @@
         }
     }
     CleanupVideo();
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     return 0;
 }
 
--- a/test/testintersections.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testintersections.c	Mon Dec 31 10:26:38 2012 -0800
@@ -16,12 +16,12 @@
 #include <stdio.h>
 #include <time.h>
 
-#include "common.h"
+#include "SDL_test_common.h"
 
 #define SWAP(typ,a,b) do{typ t=a;a=b;b=t;}while(0)
 #define NUM_OBJECTS	100
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 static int num_objects;
 static SDL_bool cycle_color;
 static SDL_bool cycle_alpha;
@@ -204,14 +204,14 @@
     num_objects = NUM_OBJECTS;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
             consumed = -1;
             if (SDL_strcasecmp(argv[i], "--blend") == 0) {
@@ -244,12 +244,12 @@
         if (consumed < 0) {
             fprintf(stderr,
                     "Usage: %s %s [--blend none|blend|add|mod] [--cyclecolor] [--cyclealpha]\n",
-                    argv[0], CommonUsage(state));
+                    argv[0], SDLTest_CommonUsage(state));
             return 1;
         }
         i += consumed;
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         return 2;
     }
 
@@ -271,7 +271,7 @@
         /* Check for events */
         ++frames;
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
             switch (event.type) {
             case SDL_MOUSEBUTTONDOWN:
                 mouse_begin_x = event.button.x;
@@ -322,7 +322,7 @@
         }
     }
 
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
 
     /* Print out some timing information */
     now = SDL_GetTicks();
--- a/test/testrelative.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testrelative.c	Mon Dec 31 10:26:38 2012 -0800
@@ -16,10 +16,10 @@
 #include <stdio.h>
 #include <time.h>
 
-#include "common.h"
+#include "SDL_test_common.h"
 
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 static SDL_Rect rect;
 
 static void
@@ -37,14 +37,14 @@
 
  
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;i++) {
-        CommonArg(state, i);
+        SDLTest_CommonArg(state, i);
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         return 2;
     }
 
@@ -70,7 +70,7 @@
     while (!done) {
         /* Check for events */
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
             switch(event.type) {
                 case SDL_MOUSEMOTION:
                 {
@@ -93,7 +93,7 @@
         }
     }
 
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     return 0;
 }
 
--- a/test/testrendercopyex.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testrendercopyex.c	Mon Dec 31 10:26:38 2012 -0800
@@ -15,13 +15,12 @@
 #include <stdio.h>
 #include <time.h>
 
-#include "SDL.h"
-#include "common.h"
+#include "SDL_test_common.h"
 
 #define WINDOW_WIDTH    640
 #define WINDOW_HEIGHT   480
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 
 typedef struct {
     SDL_Window *window;
@@ -36,7 +35,7 @@
 static void
 quit(int rc)
 {
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     exit(rc);
 }
 
@@ -143,21 +142,21 @@
     Uint32 then, now;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
-            fprintf(stderr, "Usage: %s %s\n", argv[0], CommonUsage(state));
+            fprintf(stderr, "Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
             return 1;
         }
         i += consumed;
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         quit(2);
     }
 
@@ -185,7 +184,7 @@
         /* Check for events */
         ++frames;
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
         }
         for (i = 0; i < state->num_windows; ++i) {
             Draw(&drawstates[i]);
--- a/test/testrendertarget.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testrendertarget.c	Mon Dec 31 10:26:38 2012 -0800
@@ -15,13 +15,12 @@
 #include <stdio.h>
 #include <time.h>
 
-#include "SDL.h"
-#include "common.h"
+#include "SDL_test_common.h"
 
 #define WINDOW_WIDTH    640
 #define WINDOW_HEIGHT   480
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 
 typedef struct {
     SDL_Window *window;
@@ -36,7 +35,7 @@
 static void
 quit(int rc)
 {
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     exit(rc);
 }
 
@@ -139,21 +138,21 @@
     Uint32 then, now;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
-            fprintf(stderr, "Usage: %s %s\n", argv[0], CommonUsage(state));
+            fprintf(stderr, "Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
             return 1;
         }
         i += consumed;
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         quit(2);
     }
 
@@ -181,7 +180,7 @@
         /* Check for events */
         ++frames;
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
         }
         for (i = 0; i < state->num_windows; ++i) {
             Draw(&drawstates[i]);
--- a/test/testscale.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testscale.c	Mon Dec 31 10:26:38 2012 -0800
@@ -15,13 +15,12 @@
 #include <stdio.h>
 #include <time.h>
 
-#include "SDL.h"
-#include "common.h"
+#include "SDL_test_common.h"
 
 #define WINDOW_WIDTH    640
 #define WINDOW_HEIGHT   480
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 
 typedef struct {
     SDL_Window *window;
@@ -36,7 +35,7 @@
 static void
 quit(int rc)
 {
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     exit(rc);
 }
 
@@ -131,21 +130,21 @@
     Uint32 then, now;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
-            fprintf(stderr, "Usage: %s %s\n", argv[0], CommonUsage(state));
+            fprintf(stderr, "Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
             return 1;
         }
         i += consumed;
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         quit(2);
     }
 
@@ -173,7 +172,7 @@
         /* Check for events */
         ++frames;
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
         }
         for (i = 0; i < state->num_windows; ++i) {
             Draw(&drawstates[i]);
--- a/test/testsprite2.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testsprite2.c	Mon Dec 31 10:26:38 2012 -0800
@@ -15,12 +15,12 @@
 #include <stdio.h>
 #include <time.h>
 
-#include "common.h"
+#include "SDL_test_common.h"
 
 #define NUM_SPRITES    100
 #define MAX_SPEED     1
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 static int num_sprites;
 static SDL_Texture **sprites;
 static SDL_bool cycle_color;
@@ -46,7 +46,7 @@
     if (velocities) {
         SDL_free(velocities);
     }
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     exit(rc);
 }
 
@@ -226,7 +226,7 @@
     num_sprites = NUM_SPRITES;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
@@ -236,7 +236,7 @@
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
             consumed = -1;
             if (SDL_strcasecmp(argv[i], "--blend") == 0) {
@@ -269,12 +269,12 @@
         if (consumed < 0) {
             fprintf(stderr,
                     "Usage: %s %s [--blend none|blend|add|mod] [--cyclecolor] [--cyclealpha]\n",
-                    argv[0], CommonUsage(state));
+                    argv[0], SDLTest_CommonUsage(state));
             quit(1);
         }
         i += consumed;
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         quit(2);
     }
 
@@ -323,7 +323,7 @@
         /* Check for events */
         ++frames;
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
         }
         for (i = 0; i < state->num_windows; ++i) {
             MoveSprites(state->renderers[i], sprites[i]);
--- a/test/testwm2.c	Mon Dec 31 10:14:38 2012 -0800
+++ b/test/testwm2.c	Mon Dec 31 10:26:38 2012 -0800
@@ -13,15 +13,15 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-#include "common.h"
+#include "SDL_test_common.h"
 
-static CommonState *state;
+static SDLTest_CommonState *state;
 
 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
 static void
 quit(int rc)
 {
-    CommonQuit(state);
+    SDLTest_CommonQuit(state);
     exit(rc);
 }
 
@@ -50,7 +50,7 @@
     SDL_Cursor *cursor = NULL;
 
     /* Initialize test framework */
-    state = CommonCreateState(argv, SDL_INIT_VIDEO);
+    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
     if (!state) {
         return 1;
     }
@@ -58,17 +58,17 @@
     for (i = 1; i < argc;) {
         int consumed;
 
-        consumed = CommonArg(state, i);
+        consumed = SDLTest_CommonArg(state, i);
         if (consumed == 0) {
             consumed = -1;
         }
         if (consumed < 0) {
-            fprintf(stderr, "Usage: %s %s\n", argv[0], CommonUsage(state));
+            fprintf(stderr, "Usage: %s %s\n", argv[0], SDLTest_CommonUsage(state));
             quit(1);
         }
         i += consumed;
     }
-    if (!CommonInit(state)) {
+    if (!SDLTest_CommonInit(state)) {
         quit(2);
     }
 
@@ -77,7 +77,7 @@
     while (!done) {
         /* Check for events */
         while (SDL_PollEvent(&event)) {
-            CommonEvent(state, &event, &done);
+            SDLTest_CommonEvent(state, &event, &done);
 
             if (event.type == SDL_WINDOWEVENT) {
                 if (event.window.event == SDL_WINDOWEVENT_MOVED) {