Browse Source

Updated SDL to version 2.0.5

Martin Felis 9 years ago
parent
commit
6dedec28a2
100 changed files with 1759 additions and 2924 deletions
  1. 0 81
      jni/SDL2-2.0.4/Xcode-iOS/Demos/src/rectangles.c
  2. 0 7
      jni/SDL2-2.0.4/build-scripts/showrev.sh
  3. 0 174
      jni/SDL2-2.0.4/src/audio/disk/SDL_diskaudio.c
  4. 0 808
      jni/SDL2-2.0.4/src/core/linux/SDL_evdev.c
  5. 0 481
      jni/SDL2-2.0.4/src/stdlib/SDL_qsort.c
  6. 0 254
      jni/SDL2-2.0.4/src/video/mir/SDL_mirevents.c
  7. 0 161
      jni/SDL2-2.0.4/src/video/mir/SDL_mirmouse.c
  8. 0 49
      jni/SDL2-2.0.4/src/video/mir/SDL_mirsym.h
  9. 0 230
      jni/SDL2-2.0.4/src/video/mir/SDL_mirwindow.c
  10. 0 31
      jni/SDL2-2.0.4/src/video/x11/imKStoUCS.h
  11. 0 373
      jni/SDL2-2.0.4/test/testime.c
  12. 0 0
      jni/SDL2-2.0.5/.hg_archival.txt
  13. 0 0
      jni/SDL2-2.0.5/.hgignore
  14. 0 0
      jni/SDL2-2.0.5/.hgtags
  15. 1 1
      jni/SDL2-2.0.5/Android.mk
  16. 1 1
      jni/SDL2-2.0.5/BUGS.txt
  17. 125 37
      jni/SDL2-2.0.5/CMakeLists.txt
  18. 0 0
      jni/SDL2-2.0.5/COPYING.txt
  19. 0 0
      jni/SDL2-2.0.5/CREDITS.txt
  20. 0 0
      jni/SDL2-2.0.5/INSTALL.txt
  21. 9 2
      jni/SDL2-2.0.5/Makefile.in
  22. 0 0
      jni/SDL2-2.0.5/Makefile.minimal
  23. 1 1
      jni/SDL2-2.0.5/Makefile.pandora
  24. 1 0
      jni/SDL2-2.0.5/Makefile.psp
  25. 5 5
      jni/SDL2-2.0.5/Makefile.wiz
  26. 2 2
      jni/SDL2-2.0.5/README-SDL.txt
  27. 0 0
      jni/SDL2-2.0.5/README.txt
  28. 0 0
      jni/SDL2-2.0.5/SDL.tag
  29. 0 0
      jni/SDL2-2.0.5/SDL2.spec.in
  30. 0 0
      jni/SDL2-2.0.5/TODO.txt
  31. 2 2
      jni/SDL2-2.0.5/VisualC.html
  32. 63 0
      jni/SDL2-2.0.5/WhatsNew.txt
  33. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/Default.png
  34. 257 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj
  35. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/Icon.png
  36. 3 1
      jni/SDL2-2.0.5/Xcode-iOS/Demos/Info.plist
  37. 3 3
      jni/SDL2-2.0.5/Xcode-iOS/Demos/README
  38. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp
  39. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/bitmapfont/license.txt
  40. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav
  41. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/drums/ds_china.wav
  42. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav
  43. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav
  44. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/icon.bmp
  45. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/ship.bmp
  46. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/space.bmp
  47. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/data/stroke.bmp
  48. 16 29
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/accelerometer.c
  49. 20 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/common.c
  50. 1 3
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/common.h
  51. 35 36
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/fireworks.c
  52. 38 35
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/happy.c
  53. 13 6
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/keyboard.c
  54. 19 28
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/mixer.c
  55. 92 0
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/rectangles.c
  56. 10 6
      jni/SDL2-2.0.5/Xcode-iOS/Demos/src/touch.c
  57. 334 8
      jni/SDL2-2.0.5/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj
  58. 143 2
      jni/SDL2-2.0.5/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj
  59. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/[email protected]
  60. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/Default.png
  61. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/Icon.png
  62. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/Info.plist
  63. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateIcon.icns
  64. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateInfo.plist
  65. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.pbxproj
  66. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  67. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/main.c
  68. 0 0
      jni/SDL2-2.0.5/Xcode-iOS/Test/Info.plist
  69. 0 11
      jni/SDL2-2.0.5/Xcode-iOS/Test/README
  70. 480 5
      jni/SDL2-2.0.5/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj
  71. 3 3
      jni/SDL2-2.0.5/Xcode/SDL/Info-Framework.plist
  72. 72 45
      jni/SDL2-2.0.5/Xcode/SDL/SDL.xcodeproj/project.pbxproj
  73. 0 0
      jni/SDL2-2.0.5/Xcode/SDL/pkg-support/SDL.info
  74. 0 0
      jni/SDL2-2.0.5/Xcode/SDL/pkg-support/codesign-frameworks.sh
  75. 0 0
      jni/SDL2-2.0.5/Xcode/SDL/pkg-support/resources/License.txt
  76. 0 0
      jni/SDL2-2.0.5/Xcode/SDL/pkg-support/resources/ReadMe.txt
  77. 0 0
      jni/SDL2-2.0.5/Xcode/SDL/pkg-support/resources/SDL_DS_Store
  78. 0 0
      jni/SDL2-2.0.5/Xcode/SDL/pkg-support/sdl_logo.pdf
  79. 2 2
      jni/SDL2-2.0.5/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj
  80. 0 0
      jni/SDL2-2.0.5/Xcode/SDLTest/TestDropFile-Info.plist
  81. 0 0
      jni/SDL2-2.0.5/Xcode/XcodeDocSet/Doxyfile
  82. 0 0
      jni/SDL2-2.0.5/acinclude/ac_check_define.m4
  83. 0 0
      jni/SDL2-2.0.5/acinclude/alsa.m4
  84. 0 0
      jni/SDL2-2.0.5/acinclude/ax_check_compiler_flags.m4
  85. 0 0
      jni/SDL2-2.0.5/acinclude/ax_gcc_archflag.m4
  86. 0 0
      jni/SDL2-2.0.5/acinclude/ax_gcc_x86_cpuid.m4.htm
  87. 0 0
      jni/SDL2-2.0.5/acinclude/esd.m4
  88. 0 0
      jni/SDL2-2.0.5/acinclude/libtool.m4
  89. 0 0
      jni/SDL2-2.0.5/acinclude/ltoptions.m4
  90. 0 0
      jni/SDL2-2.0.5/acinclude/ltsugar.m4
  91. 0 0
      jni/SDL2-2.0.5/acinclude/ltversion.m4
  92. 0 0
      jni/SDL2-2.0.5/acinclude/lt~obsolete.m4
  93. 4 1
      jni/SDL2-2.0.5/android-project/AndroidManifest.xml
  94. 0 0
      jni/SDL2-2.0.5/android-project/ant.properties
  95. 0 0
      jni/SDL2-2.0.5/android-project/build.properties
  96. 0 0
      jni/SDL2-2.0.5/android-project/build.xml
  97. 0 0
      jni/SDL2-2.0.5/android-project/default.properties
  98. 0 0
      jni/SDL2-2.0.5/android-project/jni/Android.mk
  99. 4 0
      jni/SDL2-2.0.5/android-project/jni/Application.mk
  100. 0 0
      jni/SDL2-2.0.5/android-project/jni/src/Android.mk

+ 0 - 81
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/rectangles.c

@@ -1,81 +0,0 @@
-/*
- *  rectangles.c
- *  written by Holmes Futrell
- *  use however you want
-*/
-
-#include "SDL.h"
-#include <time.h>
-#include "common.h"
-
-void
-render(SDL_Renderer *renderer)
-{
-
-    Uint8 r, g, b;
-    /*  Come up with a random rectangle */
-    SDL_Rect rect;
-    rect.w = randomInt(64, 128);
-    rect.h = randomInt(64, 128);
-    rect.x = randomInt(0, SCREEN_WIDTH);
-    rect.y = randomInt(0, SCREEN_HEIGHT);
-
-    /* Come up with a random color */
-    r = randomInt(50, 255);
-    g = randomInt(50, 255);
-    b = randomInt(50, 255);
-
-    /*  Fill the rectangle in the color */
-    SDL_SetRenderDrawColor(renderer, r, g, b, 255);
-    SDL_RenderFillRect(renderer, &rect);
-
-    /* update screen */
-    SDL_RenderPresent(renderer);
-
-}
-
-int
-main(int argc, char *argv[])
-{
-    if (SDL_Init(SDL_INIT_VIDEO/* | SDL_INIT_AUDIO */) < 0)
-    {
-        printf("Unable to initialize SDL");
-    }
-    
-    SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);
-    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
-    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
-    
-    int landscape = 1;
-    int modes = SDL_GetNumDisplayModes(0);
-    int sx = 0, sy = 0;
-    for (int i = 0; i < modes; i++)
-    {
-        SDL_DisplayMode mode;
-        SDL_GetDisplayMode(0, i, &mode);
-        if (landscape ? mode.w > sx : mode.h > sy)
-        {
-            sx = mode.w;
-            sy = mode.h;
-        }
-    }
-    
-    printf("picked: %d %d\n", sx, sy);
-    
-    SDL_Window *_sdl_window = NULL;
-    SDL_GLContext _sdl_context = NULL;
-    
-    _sdl_window = SDL_CreateWindow("fred",
-                                   0, 0,
-                                   sx, sy,
-                                   SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS);
-    
-    SDL_SetHint("SDL_HINT_ORIENTATIONS", "LandscapeLeft LandscapeRight");
-    
-    int ax = 0, ay = 0;
-    SDL_GetWindowSize(_sdl_window, &ax, &ay);
-    
-    printf("given: %d %d\n", ax, ay);
-
-    return 0;
-}

+ 0 - 7
jni/SDL2-2.0.4/build-scripts/showrev.sh

@@ -1,7 +0,0 @@
-#!/bin/sh
-#
-# Print the current source revision, if available
-
-# FIXME: this prints the tip, which isn't useful if you're on a different
-#  branch, or just not sync'd to the tip.
-hg tip --template 'hg-{rev}:{node|short}' || (echo "hg-0:baadf00d"; exit 1)

+ 0 - 174
jni/SDL2-2.0.4/src/audio/disk/SDL_diskaudio.c

@@ -1,174 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2016 Sam Lantinga <[email protected]>
-
-  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, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#if SDL_AUDIO_DRIVER_DISK
-
-/* Output raw audio data to a file. */
-
-#if HAVE_STDIO_H
-#include <stdio.h>
-#endif
-
-#include "SDL_rwops.h"
-#include "SDL_timer.h"
-#include "SDL_audio.h"
-#include "../SDL_audiomem.h"
-#include "../SDL_audio_c.h"
-#include "SDL_diskaudio.h"
-
-/* environment variables and defaults. */
-#define DISKENVR_OUTFILE         "SDL_DISKAUDIOFILE"
-#define DISKDEFAULT_OUTFILE      "sdlaudio.raw"
-#define DISKENVR_WRITEDELAY      "SDL_DISKAUDIODELAY"
-#define DISKDEFAULT_WRITEDELAY   150
-
-static const char *
-DISKAUD_GetOutputFilename(const char *devname)
-{
-    if (devname == NULL) {
-        devname = SDL_getenv(DISKENVR_OUTFILE);
-        if (devname == NULL) {
-            devname = DISKDEFAULT_OUTFILE;
-        }
-    }
-    return devname;
-}
-
-/* This function waits until it is possible to write a full sound buffer */
-static void
-DISKAUD_WaitDevice(_THIS)
-{
-    SDL_Delay(this->hidden->write_delay);
-}
-
-static void
-DISKAUD_PlayDevice(_THIS)
-{
-    size_t written;
-
-    /* Write the audio data */
-    written = SDL_RWwrite(this->hidden->output,
-                          this->hidden->mixbuf, 1, this->hidden->mixlen);
-
-    /* If we couldn't write, assume fatal error for now */
-    if (written != this->hidden->mixlen) {
-        SDL_OpenedAudioDeviceDisconnected(this);
-    }
-#ifdef DEBUG_AUDIO
-    fprintf(stderr, "Wrote %d bytes of audio data\n", written);
-#endif
-}
-
-static Uint8 *
-DISKAUD_GetDeviceBuf(_THIS)
-{
-    return (this->hidden->mixbuf);
-}
-
-static void
-DISKAUD_CloseDevice(_THIS)
-{
-    if (this->hidden != NULL) {
-        SDL_FreeAudioMem(this->hidden->mixbuf);
-        this->hidden->mixbuf = NULL;
-        if (this->hidden->output != NULL) {
-            SDL_RWclose(this->hidden->output);
-            this->hidden->output = NULL;
-        }
-        SDL_free(this->hidden);
-        this->hidden = NULL;
-    }
-}
-
-static int
-DISKAUD_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
-{
-    /* handle != NULL means "user specified the placeholder name on the fake detected device list" */
-    const char *fname = DISKAUD_GetOutputFilename(handle ? NULL : devname);
-    const char *envr = SDL_getenv(DISKENVR_WRITEDELAY);
-
-    this->hidden = (struct SDL_PrivateAudioData *)
-        SDL_malloc(sizeof(*this->hidden));
-    if (this->hidden == NULL) {
-        return SDL_OutOfMemory();
-    }
-    SDL_memset(this->hidden, 0, sizeof(*this->hidden));
-
-    this->hidden->mixlen = this->spec.size;
-    this->hidden->write_delay =
-        (envr) ? SDL_atoi(envr) : DISKDEFAULT_WRITEDELAY;
-
-    /* Open the audio device */
-    this->hidden->output = SDL_RWFromFile(fname, "wb");
-    if (this->hidden->output == NULL) {
-        DISKAUD_CloseDevice(this);
-        return -1;
-    }
-
-    /* Allocate mixing buffer */
-    this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen);
-    if (this->hidden->mixbuf == NULL) {
-        DISKAUD_CloseDevice(this);
-        return -1;
-    }
-    SDL_memset(this->hidden->mixbuf, this->spec.silence, this->spec.size);
-
-#if HAVE_STDIO_H
-    fprintf(stderr,
-            "WARNING: You are using the SDL disk writer audio driver!\n"
-            " Writing to file [%s].\n", fname);
-#endif
-
-    /* We're ready to rock and roll. :-) */
-    return 0;
-}
-
-static void
-DISKAUD_DetectDevices(void)
-{
-    /* !!! FIXME: stole this literal string from DEFAULT_OUTPUT_DEVNAME in SDL_audio.c */
-    SDL_AddAudioDevice(SDL_FALSE, "System audio output device", (void *) 0x1);
-}
-
-static int
-DISKAUD_Init(SDL_AudioDriverImpl * impl)
-{
-    /* Set the function pointers */
-    impl->OpenDevice = DISKAUD_OpenDevice;
-    impl->WaitDevice = DISKAUD_WaitDevice;
-    impl->PlayDevice = DISKAUD_PlayDevice;
-    impl->GetDeviceBuf = DISKAUD_GetDeviceBuf;
-    impl->CloseDevice = DISKAUD_CloseDevice;
-    impl->DetectDevices = DISKAUD_DetectDevices;
-
-    impl->AllowsArbitraryDeviceNames = 1;
-
-    return 1;   /* this audio target is available. */
-}
-
-AudioBootStrap DISKAUD_bootstrap = {
-    "disk", "direct-to-disk audio", DISKAUD_Init, 1
-};
-
-#endif /* SDL_AUDIO_DRIVER_DISK */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 808
jni/SDL2-2.0.4/src/core/linux/SDL_evdev.c

@@ -1,808 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2016 Sam Lantinga <[email protected]>
-
-  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, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#ifdef SDL_INPUT_LINUXEV
-
-/* This is based on the linux joystick driver */
-/* References: https://www.kernel.org/doc/Documentation/input/input.txt 
- *             https://www.kernel.org/doc/Documentation/input/event-codes.txt
- *             /usr/include/linux/input.h
- *             The evtest application is also useful to debug the protocol
- */
-
-
-#include "SDL_evdev.h"
-#define _THIS SDL_EVDEV_PrivateData *_this
-static _THIS = NULL;
-
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <limits.h>             /* For the definition of PATH_MAX */
-#include <linux/input.h>
-#ifdef SDL_INPUT_LINUXKD
-#include <linux/kd.h>
-#include <linux/keyboard.h>
-#endif
-
-
-/* We need this to prevent keystrokes from appear in the console */
-#ifndef KDSKBMUTE
-#define KDSKBMUTE 0x4B51
-#endif
-#ifndef KDSKBMODE
-#define KDSKBMODE 0x4B45
-#endif
-#ifndef K_OFF
-#define K_OFF 0x04
-#endif
-
-#include "SDL.h"
-#include "SDL_assert.h"
-#include "SDL_endian.h"
-#include "../../core/linux/SDL_udev.h"
-#include "SDL_scancode.h"
-#include "../../events/SDL_events_c.h"
-
-/* This isn't defined in older Linux kernel headers */
-#ifndef SYN_DROPPED
-#define SYN_DROPPED 3
-#endif
-
-static SDL_Scancode SDL_EVDEV_translate_keycode(int keycode);
-static void SDL_EVDEV_sync_device(SDL_evdevlist_item *item);
-static int SDL_EVDEV_device_removed(const char *devpath);
-
-#if SDL_USE_LIBUDEV
-static int SDL_EVDEV_device_added(const char *devpath);
-void SDL_EVDEV_udev_callback(SDL_UDEV_deviceevent udev_type, int udev_class, const char *devpath);
-#endif /* SDL_USE_LIBUDEV */
-
-static SDL_Scancode EVDEV_Keycodes[] = {
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_RESERVED        0 */
-    SDL_SCANCODE_ESCAPE,        /*  KEY_ESC         1 */
-    SDL_SCANCODE_1,             /*  KEY_1           2 */
-    SDL_SCANCODE_2,             /*  KEY_2           3 */
-    SDL_SCANCODE_3,             /*  KEY_3           4 */
-    SDL_SCANCODE_4,             /*  KEY_4           5 */
-    SDL_SCANCODE_5,             /*  KEY_5           6 */
-    SDL_SCANCODE_6,             /*  KEY_6           7 */
-    SDL_SCANCODE_7,             /*  KEY_7           8 */
-    SDL_SCANCODE_8,             /*  KEY_8           9 */
-    SDL_SCANCODE_9,             /*  KEY_9           10 */
-    SDL_SCANCODE_0,             /*  KEY_0           11 */
-    SDL_SCANCODE_MINUS,         /*  KEY_MINUS       12 */
-    SDL_SCANCODE_EQUALS,        /*  KEY_EQUAL       13 */
-    SDL_SCANCODE_BACKSPACE,     /*  KEY_BACKSPACE       14 */
-    SDL_SCANCODE_TAB,           /*  KEY_TAB         15 */
-    SDL_SCANCODE_Q,             /*  KEY_Q           16 */
-    SDL_SCANCODE_W,             /*  KEY_W           17 */
-    SDL_SCANCODE_E,             /*  KEY_E           18 */
-    SDL_SCANCODE_R,             /*  KEY_R           19 */
-    SDL_SCANCODE_T,             /*  KEY_T           20 */
-    SDL_SCANCODE_Y,             /*  KEY_Y           21 */
-    SDL_SCANCODE_U,             /*  KEY_U           22 */
-    SDL_SCANCODE_I,             /*  KEY_I           23 */
-    SDL_SCANCODE_O,             /*  KEY_O           24 */
-    SDL_SCANCODE_P,             /*  KEY_P           25 */
-    SDL_SCANCODE_LEFTBRACKET,   /*  KEY_LEFTBRACE       26 */
-    SDL_SCANCODE_RIGHTBRACKET,  /*  KEY_RIGHTBRACE      27 */
-    SDL_SCANCODE_RETURN,        /*  KEY_ENTER       28 */
-    SDL_SCANCODE_LCTRL,         /*  KEY_LEFTCTRL        29 */
-    SDL_SCANCODE_A,             /*  KEY_A           30 */
-    SDL_SCANCODE_S,             /*  KEY_S           31 */
-    SDL_SCANCODE_D,             /*  KEY_D           32 */
-    SDL_SCANCODE_F,             /*  KEY_F           33 */
-    SDL_SCANCODE_G,             /*  KEY_G           34 */
-    SDL_SCANCODE_H,             /*  KEY_H           35 */
-    SDL_SCANCODE_J,             /*  KEY_J           36 */
-    SDL_SCANCODE_K,             /*  KEY_K           37 */
-    SDL_SCANCODE_L,             /*  KEY_L           38 */
-    SDL_SCANCODE_SEMICOLON,     /*  KEY_SEMICOLON       39 */
-    SDL_SCANCODE_APOSTROPHE,    /*  KEY_APOSTROPHE      40 */
-    SDL_SCANCODE_GRAVE,         /*  KEY_GRAVE       41 */
-    SDL_SCANCODE_LSHIFT,        /*  KEY_LEFTSHIFT       42 */
-    SDL_SCANCODE_BACKSLASH,     /*  KEY_BACKSLASH       43 */
-    SDL_SCANCODE_Z,             /*  KEY_Z           44 */
-    SDL_SCANCODE_X,             /*  KEY_X           45 */
-    SDL_SCANCODE_C,             /*  KEY_C           46 */
-    SDL_SCANCODE_V,             /*  KEY_V           47 */
-    SDL_SCANCODE_B,             /*  KEY_B           48 */
-    SDL_SCANCODE_N,             /*  KEY_N           49 */
-    SDL_SCANCODE_M,             /*  KEY_M           50 */
-    SDL_SCANCODE_COMMA,         /*  KEY_COMMA       51 */
-    SDL_SCANCODE_PERIOD,        /*  KEY_DOT         52 */
-    SDL_SCANCODE_SLASH,         /*  KEY_SLASH       53 */
-    SDL_SCANCODE_RSHIFT,        /*  KEY_RIGHTSHIFT      54 */
-    SDL_SCANCODE_KP_MULTIPLY,   /*  KEY_KPASTERISK      55 */
-    SDL_SCANCODE_LALT,          /*  KEY_LEFTALT     56 */
-    SDL_SCANCODE_SPACE,         /*  KEY_SPACE       57 */
-    SDL_SCANCODE_CAPSLOCK,      /*  KEY_CAPSLOCK        58 */
-    SDL_SCANCODE_F1,            /*  KEY_F1          59 */
-    SDL_SCANCODE_F2,            /*  KEY_F2          60 */
-    SDL_SCANCODE_F3,            /*  KEY_F3          61 */
-    SDL_SCANCODE_F4,            /*  KEY_F4          62 */
-    SDL_SCANCODE_F5,            /*  KEY_F5          63 */
-    SDL_SCANCODE_F6,            /*  KEY_F6          64 */
-    SDL_SCANCODE_F7,            /*  KEY_F7          65 */
-    SDL_SCANCODE_F8,            /*  KEY_F8          66 */
-    SDL_SCANCODE_F9,            /*  KEY_F9          67 */
-    SDL_SCANCODE_F10,           /*  KEY_F10         68 */
-    SDL_SCANCODE_NUMLOCKCLEAR,  /*  KEY_NUMLOCK     69 */
-    SDL_SCANCODE_SCROLLLOCK,    /*  KEY_SCROLLLOCK      70 */
-    SDL_SCANCODE_KP_7,          /*  KEY_KP7         71 */
-    SDL_SCANCODE_KP_8,          /*  KEY_KP8         72 */
-    SDL_SCANCODE_KP_9,          /*  KEY_KP9         73 */
-    SDL_SCANCODE_KP_MINUS,      /*  KEY_KPMINUS     74 */
-    SDL_SCANCODE_KP_4,          /*  KEY_KP4         75 */
-    SDL_SCANCODE_KP_5,          /*  KEY_KP5         76 */
-    SDL_SCANCODE_KP_6,          /*  KEY_KP6         77 */
-    SDL_SCANCODE_KP_PLUS,       /*  KEY_KPPLUS      78 */
-    SDL_SCANCODE_KP_1,          /*  KEY_KP1         79 */
-    SDL_SCANCODE_KP_2,          /*  KEY_KP2         80 */
-    SDL_SCANCODE_KP_3,          /*  KEY_KP3         81 */
-    SDL_SCANCODE_KP_0,          /*  KEY_KP0         82 */
-    SDL_SCANCODE_KP_PERIOD,     /*  KEY_KPDOT       83 */
-    SDL_SCANCODE_UNKNOWN,       /*  84 */
-    SDL_SCANCODE_LANG5,         /*  KEY_ZENKAKUHANKAKU  85 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_102ND       86 */
-    SDL_SCANCODE_F11,           /*  KEY_F11         87 */
-    SDL_SCANCODE_F12,           /*  KEY_F12         88 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_RO          89 */
-    SDL_SCANCODE_LANG3,         /*  KEY_KATAKANA        90 */
-    SDL_SCANCODE_LANG4,         /*  KEY_HIRAGANA        91 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_HENKAN      92 */
-    SDL_SCANCODE_LANG3,         /*  KEY_KATAKANAHIRAGANA    93 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_MUHENKAN        94 */
-    SDL_SCANCODE_KP_COMMA,      /*  KEY_KPJPCOMMA       95 */
-    SDL_SCANCODE_KP_ENTER,      /*  KEY_KPENTER     96 */
-    SDL_SCANCODE_RCTRL,         /*  KEY_RIGHTCTRL       97 */
-    SDL_SCANCODE_KP_DIVIDE,     /*  KEY_KPSLASH     98 */
-    SDL_SCANCODE_SYSREQ,        /*  KEY_SYSRQ       99 */
-    SDL_SCANCODE_RALT,          /*  KEY_RIGHTALT        100 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_LINEFEED        101 */
-    SDL_SCANCODE_HOME,          /*  KEY_HOME        102 */
-    SDL_SCANCODE_UP,            /*  KEY_UP          103 */
-    SDL_SCANCODE_PAGEUP,        /*  KEY_PAGEUP      104 */
-    SDL_SCANCODE_LEFT,          /*  KEY_LEFT        105 */
-    SDL_SCANCODE_RIGHT,         /*  KEY_RIGHT       106 */
-    SDL_SCANCODE_END,           /*  KEY_END         107 */
-    SDL_SCANCODE_DOWN,          /*  KEY_DOWN        108 */
-    SDL_SCANCODE_PAGEDOWN,      /*  KEY_PAGEDOWN        109 */
-    SDL_SCANCODE_INSERT,        /*  KEY_INSERT      110 */
-    SDL_SCANCODE_DELETE,        /*  KEY_DELETE      111 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_MACRO       112 */
-    SDL_SCANCODE_MUTE,          /*  KEY_MUTE        113 */
-    SDL_SCANCODE_VOLUMEDOWN,    /*  KEY_VOLUMEDOWN      114 */
-    SDL_SCANCODE_VOLUMEUP,      /*  KEY_VOLUMEUP        115 */
-    SDL_SCANCODE_POWER,         /*  KEY_POWER       116 SC System Power Down */
-    SDL_SCANCODE_KP_EQUALS,     /*  KEY_KPEQUAL     117 */
-    SDL_SCANCODE_KP_MINUS,      /*  KEY_KPPLUSMINUS     118 */
-    SDL_SCANCODE_PAUSE,         /*  KEY_PAUSE       119 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SCALE       120 AL Compiz Scale (Expose) */
-    SDL_SCANCODE_KP_COMMA,      /*  KEY_KPCOMMA     121 */
-    SDL_SCANCODE_LANG1,         /*  KEY_HANGEUL,KEY_HANGUEL 122 */
-    SDL_SCANCODE_LANG2,         /*  KEY_HANJA       123 */
-    SDL_SCANCODE_INTERNATIONAL3,/*  KEY_YEN         124 */
-    SDL_SCANCODE_LGUI,          /*  KEY_LEFTMETA        125 */
-    SDL_SCANCODE_RGUI,          /*  KEY_RIGHTMETA       126 */
-    SDL_SCANCODE_APPLICATION,   /*  KEY_COMPOSE     127 */
-    SDL_SCANCODE_STOP,          /*  KEY_STOP        128 AC Stop */
-    SDL_SCANCODE_AGAIN,         /*  KEY_AGAIN       129 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_PROPS       130 AC Properties */
-    SDL_SCANCODE_UNDO,          /*  KEY_UNDO        131 AC Undo */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_FRONT       132 */
-    SDL_SCANCODE_COPY,          /*  KEY_COPY        133 AC Copy */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_OPEN        134 AC Open */
-    SDL_SCANCODE_PASTE,         /*  KEY_PASTE       135 AC Paste */
-    SDL_SCANCODE_FIND,          /*  KEY_FIND        136 AC Search */
-    SDL_SCANCODE_CUT,           /*  KEY_CUT         137 AC Cut */
-    SDL_SCANCODE_HELP,          /*  KEY_HELP        138 AL Integrated Help Center */
-    SDL_SCANCODE_MENU,          /*  KEY_MENU        139 Menu (show menu) */
-    SDL_SCANCODE_CALCULATOR,    /*  KEY_CALC        140 AL Calculator */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SETUP       141 */
-    SDL_SCANCODE_SLEEP,         /*  KEY_SLEEP       142 SC System Sleep */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_WAKEUP      143 System Wake Up */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_FILE        144 AL Local Machine Browser */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SENDFILE        145 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_DELETEFILE      146 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_XFER        147 */
-    SDL_SCANCODE_APP1,          /*  KEY_PROG1       148 */
-    SDL_SCANCODE_APP1,          /*  KEY_PROG2       149 */
-    SDL_SCANCODE_WWW,           /*  KEY_WWW         150 AL Internet Browser */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_MSDOS       151 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_COFFEE,KEY_SCREENLOCK      152 AL Terminal Lock/Screensaver */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_DIRECTION       153 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_CYCLEWINDOWS    154 */
-    SDL_SCANCODE_MAIL,          /*  KEY_MAIL        155 */
-    SDL_SCANCODE_AC_BOOKMARKS,  /*  KEY_BOOKMARKS       156 AC Bookmarks */
-    SDL_SCANCODE_COMPUTER,      /*  KEY_COMPUTER        157 */
-    SDL_SCANCODE_AC_BACK,       /*  KEY_BACK        158 AC Back */
-    SDL_SCANCODE_AC_FORWARD,    /*  KEY_FORWARD     159 AC Forward */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_CLOSECD     160 */
-    SDL_SCANCODE_EJECT,         /*  KEY_EJECTCD     161 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_EJECTCLOSECD    162 */
-    SDL_SCANCODE_AUDIONEXT,     /*  KEY_NEXTSONG        163 */
-    SDL_SCANCODE_AUDIOPLAY,     /*  KEY_PLAYPAUSE       164 */
-    SDL_SCANCODE_AUDIOPREV,     /*  KEY_PREVIOUSSONG    165 */
-    SDL_SCANCODE_AUDIOSTOP,     /*  KEY_STOPCD      166 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_RECORD      167 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_REWIND      168 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_PHONE       169 Media Select Telephone */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_ISO         170 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_CONFIG      171 AL Consumer Control Configuration */
-    SDL_SCANCODE_AC_HOME,       /*  KEY_HOMEPAGE        172 AC Home */
-    SDL_SCANCODE_AC_REFRESH,    /*  KEY_REFRESH     173 AC Refresh */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_EXIT        174 AC Exit */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_MOVE        175 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_EDIT        176 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SCROLLUP        177 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SCROLLDOWN      178 */
-    SDL_SCANCODE_KP_LEFTPAREN,  /*  KEY_KPLEFTPAREN     179 */
-    SDL_SCANCODE_KP_RIGHTPAREN, /*  KEY_KPRIGHTPAREN    180 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_NEW         181 AC New */
-    SDL_SCANCODE_AGAIN,         /*  KEY_REDO        182 AC Redo/Repeat */
-    SDL_SCANCODE_F13,           /*  KEY_F13         183 */
-    SDL_SCANCODE_F14,           /*  KEY_F14         184 */
-    SDL_SCANCODE_F15,           /*  KEY_F15         185 */
-    SDL_SCANCODE_F16,           /*  KEY_F16         186 */
-    SDL_SCANCODE_F17,           /*  KEY_F17         187 */
-    SDL_SCANCODE_F18,           /*  KEY_F18         188 */
-    SDL_SCANCODE_F19,           /*  KEY_F19         189 */
-    SDL_SCANCODE_F20,           /*  KEY_F20         190 */
-    SDL_SCANCODE_F21,           /*  KEY_F21         191 */
-    SDL_SCANCODE_F22,           /*  KEY_F22         192 */
-    SDL_SCANCODE_F23,           /*  KEY_F23         193 */
-    SDL_SCANCODE_F24,           /*  KEY_F24         194 */
-    SDL_SCANCODE_UNKNOWN,       /*  195 */
-    SDL_SCANCODE_UNKNOWN,       /*  196 */
-    SDL_SCANCODE_UNKNOWN,       /*  197 */
-    SDL_SCANCODE_UNKNOWN,       /*  198 */
-    SDL_SCANCODE_UNKNOWN,       /*  199 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_PLAYCD      200 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_PAUSECD     201 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_PROG3       202 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_PROG4       203 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_DASHBOARD       204 AL Dashboard */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SUSPEND     205 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_CLOSE       206 AC Close */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_PLAY        207 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_FASTFORWARD     208 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_BASSBOOST       209 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_PRINT       210 AC Print */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_HP          211 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_CAMERA      212 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SOUND       213 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_QUESTION        214 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_EMAIL       215 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_CHAT        216 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SEARCH      217 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_CONNECT     218 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_FINANCE     219 AL Checkbook/Finance */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SPORT       220 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SHOP        221 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_ALTERASE        222 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_CANCEL      223 AC Cancel */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_BRIGHTNESSDOWN  224 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_BRIGHTNESSUP    225 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_MEDIA       226 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SWITCHVIDEOMODE 227 Cycle between available video outputs (Monitor/LCD/TV-out/etc) */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_KBDILLUMTOGGLE  228 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_KBDILLUMDOWN    229 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_KBDILLUMUP      230 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SEND        231 AC Send */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_REPLY       232 AC Reply */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_FORWARDMAIL     233 AC Forward Msg */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_SAVE        234 AC Save */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_DOCUMENTS       235 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_BATTERY     236  */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_BLUETOOTH       237 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_WLAN        238 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_UWB         239 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_UNKNOWN     240 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_VIDEO_NEXT      241 drive next video source */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_VIDEO_PREV      242 drive previous video source */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_BRIGHTNESS_CYCLE    243 brightness up, after max is min */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_BRIGHTNESS_ZERO 244 brightness off, use ambient */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_DISPLAY_OFF     245 display device to off state */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_WIMAX       246 */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_RFKILL      247 Key that controls all radios */
-    SDL_SCANCODE_UNKNOWN,       /*  KEY_MICMUTE     248 Mute / unmute the microphone */
-};
-
-static Uint8 EVDEV_MouseButtons[] = {
-    SDL_BUTTON_LEFT,            /*  BTN_LEFT        0x110 */
-    SDL_BUTTON_RIGHT,           /*  BTN_RIGHT       0x111 */
-    SDL_BUTTON_MIDDLE,          /*  BTN_MIDDLE      0x112 */
-    SDL_BUTTON_X1,              /*  BTN_SIDE        0x113 */
-    SDL_BUTTON_X2,              /*  BTN_EXTRA       0x114 */
-    SDL_BUTTON_X2 + 1,          /*  BTN_FORWARD     0x115 */
-    SDL_BUTTON_X2 + 2,          /*  BTN_BACK        0x116 */
-    SDL_BUTTON_X2 + 3           /*  BTN_TASK        0x117 */
-};
-
-static const char* EVDEV_consoles[] = {
-    "/proc/self/fd/0",
-    "/dev/tty",
-    "/dev/tty0",
-    "/dev/tty1",
-    "/dev/tty2",
-    "/dev/tty3",
-    "/dev/tty4",
-    "/dev/tty5",
-    "/dev/tty6",
-    "/dev/vc/0",
-    "/dev/console"
-};
-
-#define IS_CONSOLE(fd) isatty (fd) && ioctl(fd, KDGKBTYPE, &arg) == 0 && ((arg == KB_101) || (arg == KB_84))
-
-static int SDL_EVDEV_get_console_fd(void)
-{
-    int fd, i;
-    char arg = 0;
-    
-    /* Try a few consoles to see which one we have read access to */
-    
-    for(i = 0; i < SDL_arraysize(EVDEV_consoles); i++) {
-        fd = open(EVDEV_consoles[i], O_RDONLY);
-        if (fd >= 0) {
-            if (IS_CONSOLE(fd)) return fd;
-            close(fd);
-        }
-    }
-    
-    /* Try stdin, stdout, stderr */
-    
-    for(fd = 0; fd < 3; fd++) {
-        if (IS_CONSOLE(fd)) return fd;
-    }
-    
-    /* We won't be able to send SDL_TEXTINPUT events */
-    return -1;
-}
-
-/* Prevent keystrokes from reaching the tty */
-static int SDL_EVDEV_mute_keyboard(int tty, int *kb_mode)
-{
-    char arg;
-    
-    *kb_mode = 0; /* FIXME: Is this a sane default in case KDGKBMODE fails? */
-    if (!IS_CONSOLE(tty)) {
-        return SDL_SetError("Tried to mute an invalid tty");
-    }
-    ioctl(tty, KDGKBMODE, kb_mode); /* It's not fatal if this fails */
-    if (ioctl(tty, KDSKBMUTE, 1) && ioctl(tty, KDSKBMODE, K_OFF)) {
-        return SDL_SetError("EVDEV: Failed muting keyboard");
-    }
-    
-    return 0;  
-}
-
-/* Restore the keyboard mode for given tty */
-static void SDL_EVDEV_unmute_keyboard(int tty, int kb_mode)
-{
-    if (ioctl(tty, KDSKBMUTE, 0) && ioctl(tty, KDSKBMODE, kb_mode)) {
-        SDL_Log("EVDEV: Failed restoring keyboard mode");
-    }
-}
-
-/* Read /sys/class/tty/tty0/active and open the tty */
-static int SDL_EVDEV_get_active_tty()
-{
-    int fd, len;
-    char ttyname[NAME_MAX + 1];
-    char ttypath[PATH_MAX+1] = "/dev/";
-    char arg;
-    
-    fd = open("/sys/class/tty/tty0/active", O_RDONLY);
-    if (fd < 0) {
-        return SDL_SetError("Could not determine which tty is active");
-    }
-    
-    len = read(fd, ttyname, NAME_MAX);
-    close(fd);
-    
-    if (len <= 0) {
-        return SDL_SetError("Could not read which tty is active");
-    }
-    
-    if (ttyname[len-1] == '\n') {
-        ttyname[len-1] = '\0';
-    }
-    else {
-        ttyname[len] = '\0';
-    }
-    
-    SDL_strlcat(ttypath, ttyname, PATH_MAX);
-    fd = open(ttypath, O_RDWR | O_NOCTTY);
-    if (fd < 0) {
-        return SDL_SetError("Could not open tty: %s", ttypath);
-    }
-    
-    if (!IS_CONSOLE(fd)) {
-        close(fd);
-        return SDL_SetError("Invalid tty obtained: %s", ttypath);
-    }
-
-    return fd;  
-}
-
-int
-SDL_EVDEV_Init(void)
-{
-    int retval = 0;
-    
-    if (_this == NULL) {
-        
-        _this = (SDL_EVDEV_PrivateData *) SDL_calloc(1, sizeof(*_this));
-        if(_this == NULL) {
-            return SDL_OutOfMemory();
-        }
-
-#if SDL_USE_LIBUDEV
-        if (SDL_UDEV_Init() < 0) {
-            SDL_free(_this);
-            _this = NULL;
-            return -1;
-        }
-
-        /* Set up the udev callback */
-        if (SDL_UDEV_AddCallback(SDL_EVDEV_udev_callback) < 0) {
-            SDL_EVDEV_Quit();
-            return -1;
-        }
-        
-        /* Force a scan to build the initial device list */
-        SDL_UDEV_Scan();
-#else
-        /* TODO: Scan the devices manually, like a caveman */
-#endif /* SDL_USE_LIBUDEV */
-        
-        /* We need a physical terminal (not PTS) to be able to translate key code to symbols via the kernel tables */
-        _this->console_fd = SDL_EVDEV_get_console_fd();
-        
-        /* Mute the keyboard so keystrokes only generate evdev events and do not leak through to the console */
-        _this->tty = STDIN_FILENO;
-        if (SDL_EVDEV_mute_keyboard(_this->tty, &_this->kb_mode) < 0) {
-            /* stdin is not a tty, probably we were launched remotely, so we try to disable the active tty */
-            _this->tty = SDL_EVDEV_get_active_tty();
-            if (_this->tty >= 0) {
-                if (SDL_EVDEV_mute_keyboard(_this->tty, &_this->kb_mode) < 0) {
-                    close(_this->tty);
-                    _this->tty = -1;
-                }
-            }
-        }
-    }
-    
-    _this->ref_count += 1;
-    
-    return retval;
-}
-
-void
-SDL_EVDEV_Quit(void)
-{
-    if (_this == NULL) {
-        return;
-    }
-    
-    _this->ref_count -= 1;
-    
-    if (_this->ref_count < 1) {
-        
-#if SDL_USE_LIBUDEV
-        SDL_UDEV_DelCallback(SDL_EVDEV_udev_callback);
-        SDL_UDEV_Quit();
-#endif /* SDL_USE_LIBUDEV */
-       
-        if (_this->console_fd >= 0) {
-            close(_this->console_fd);
-        }
-        
-        if (_this->tty >= 0) {
-            SDL_EVDEV_unmute_keyboard(_this->tty, _this->kb_mode);
-            close(_this->tty);
-        }
-        
-        /* Remove existing devices */
-        while(_this->first != NULL) {
-            SDL_EVDEV_device_removed(_this->first->path);
-        }
-        
-        SDL_assert(_this->first == NULL);
-        SDL_assert(_this->last == NULL);
-        SDL_assert(_this->numdevices == 0);
-        
-        SDL_free(_this);
-        _this = NULL;
-    }
-}
-
-#if SDL_USE_LIBUDEV
-void SDL_EVDEV_udev_callback(SDL_UDEV_deviceevent udev_type, int udev_class, const char *devpath)
-{
-    if (devpath == NULL) {
-        return;
-    }
-    
-    switch(udev_type) {
-    case SDL_UDEV_DEVICEADDED:
-        if (!(udev_class & (SDL_UDEV_DEVICE_MOUSE|SDL_UDEV_DEVICE_KEYBOARD))) {
-            return;
-        }
-        SDL_EVDEV_device_added(devpath);
-        break;
-            
-    case SDL_UDEV_DEVICEREMOVED:
-        SDL_EVDEV_device_removed(devpath);
-        break;
-            
-    default:
-        break;
-    }
-}
-
-#endif /* SDL_USE_LIBUDEV */
-
-void 
-SDL_EVDEV_Poll(void)
-{
-    struct input_event events[32];
-    int i, len;
-    SDL_evdevlist_item *item;
-    SDL_Scancode scan_code;
-    int mouse_button;
-    SDL_Mouse *mouse;
-#ifdef SDL_INPUT_LINUXKD
-    Uint16 modstate;
-    struct kbentry kbe;
-    static char keysym[8];
-    char *end;
-    Uint32 kval;
-#endif
-
-    if (!_this) {
-        return;
-    }
-
-#if SDL_USE_LIBUDEV
-    SDL_UDEV_Poll();
-#endif
-
-    mouse = SDL_GetMouse();
-
-    for (item = _this->first; item != NULL; item = item->next) {
-        while ((len = read(item->fd, events, (sizeof events))) > 0) {
-            len /= sizeof(events[0]);
-            for (i = 0; i < len; ++i) {
-                switch (events[i].type) {
-                case EV_KEY:
-                    if (events[i].code >= BTN_MOUSE && events[i].code < BTN_MOUSE + SDL_arraysize(EVDEV_MouseButtons)) {
-                        mouse_button = events[i].code - BTN_MOUSE;
-                        if (events[i].value == 0) {
-                            SDL_SendMouseButton(mouse->focus, mouse->mouseID, SDL_RELEASED, EVDEV_MouseButtons[mouse_button]);
-                        } else if (events[i].value == 1) {
-                            SDL_SendMouseButton(mouse->focus, mouse->mouseID, SDL_PRESSED, EVDEV_MouseButtons[mouse_button]);
-                        }
-                        break;
-                    }
-
-                    /* Probably keyboard */
-                    scan_code = SDL_EVDEV_translate_keycode(events[i].code);
-                    if (scan_code != SDL_SCANCODE_UNKNOWN) {
-                        if (events[i].value == 0) {
-                            SDL_SendKeyboardKey(SDL_RELEASED, scan_code);
-                        } else if (events[i].value == 1 || events[i].value == 2 /* Key repeated */) {
-                            SDL_SendKeyboardKey(SDL_PRESSED, scan_code);
-#ifdef SDL_INPUT_LINUXKD
-                            if (_this->console_fd >= 0) {
-                                kbe.kb_index = events[i].code;
-                                /* Convert the key to an UTF-8 char */
-                                /* Ref: http://www.linuxjournal.com/article/2783 */
-                                modstate = SDL_GetModState();
-                                kbe.kb_table = 0;
-                                
-                                /* Ref: http://graphics.stanford.edu/~seander/bithacks.html#ConditionalSetOrClearBitsWithoutBranching */
-                                kbe.kb_table |= -((modstate & KMOD_LCTRL) != 0) & (1 << KG_CTRLL | 1 << KG_CTRL);
-                                kbe.kb_table |= -((modstate & KMOD_RCTRL) != 0) & (1 << KG_CTRLR | 1 << KG_CTRL);
-                                kbe.kb_table |= -((modstate & KMOD_LSHIFT) != 0) & (1 << KG_SHIFTL | 1 << KG_SHIFT);
-                                kbe.kb_table |= -((modstate & KMOD_RSHIFT) != 0) & (1 << KG_SHIFTR | 1 << KG_SHIFT);
-                                kbe.kb_table |= -((modstate & KMOD_LALT) != 0) & (1 << KG_ALT);
-                                kbe.kb_table |= -((modstate & KMOD_RALT) != 0) & (1 << KG_ALTGR);
-
-                                if (ioctl(_this->console_fd, KDGKBENT, (unsigned long)&kbe) == 0 && 
-                                    ((KTYP(kbe.kb_value) == KT_LATIN) || (KTYP(kbe.kb_value) == KT_ASCII) || (KTYP(kbe.kb_value) == KT_LETTER))) 
-                                {
-                                    kval = KVAL(kbe.kb_value);
-                                    
-                                    /* While there's a KG_CAPSSHIFT symbol, it's not useful to build the table index with it
-                                     * because 1 << KG_CAPSSHIFT overflows the 8 bits of kb_table 
-                                     * So, we do the CAPS LOCK logic here. Note that isalpha depends on the locale!
-                                     */
-                                    if (modstate & KMOD_CAPS && isalpha(kval)) {
-                                        if (isupper(kval)) {
-                                            kval = tolower(kval);
-                                        } else {
-                                            kval = toupper(kval);
-                                        }
-                                    }
-                                     
-                                    /* Convert to UTF-8 and send */
-                                    end = SDL_UCS4ToUTF8(kval, keysym);
-                                    *end = '\0';
-                                    SDL_SendKeyboardText(keysym);
-                                }
-                            }
-#endif /* SDL_INPUT_LINUXKD */
-                        }
-                    }
-                    break;
-                case EV_ABS:
-                    switch(events[i].code) {
-                    case ABS_X:
-                        SDL_SendMouseMotion(mouse->focus, mouse->mouseID, SDL_FALSE, events[i].value, mouse->y);
-                        break;
-                    case ABS_Y:
-                        SDL_SendMouseMotion(mouse->focus, mouse->mouseID, SDL_FALSE, mouse->x, events[i].value);
-                        break;
-                    default:
-                        break;
-                    }
-                    break;
-                case EV_REL:
-                    switch(events[i].code) {
-                    case REL_X:
-                        SDL_SendMouseMotion(mouse->focus, mouse->mouseID, SDL_TRUE, events[i].value, 0);
-                        break;
-                    case REL_Y:
-                        SDL_SendMouseMotion(mouse->focus, mouse->mouseID, SDL_TRUE, 0, events[i].value);
-                        break;
-                    case REL_WHEEL:
-                        SDL_SendMouseWheel(mouse->focus, mouse->mouseID, 0, events[i].value, SDL_MOUSEWHEEL_NORMAL);
-                        break;
-                    case REL_HWHEEL:
-                        SDL_SendMouseWheel(mouse->focus, mouse->mouseID, events[i].value, 0, SDL_MOUSEWHEEL_NORMAL);
-                        break;
-                    default:
-                        break;
-                    }
-                    break;
-                case EV_SYN:
-                    switch (events[i].code) {
-                    case SYN_DROPPED:
-                        SDL_EVDEV_sync_device(item);
-                        break;
-                    default:
-                        break;
-                    }
-                    break;
-                }
-            }
-        }    
-    }
-}
-
-static SDL_Scancode
-SDL_EVDEV_translate_keycode(int keycode)
-{
-    SDL_Scancode scancode = SDL_SCANCODE_UNKNOWN;
-
-    if (keycode < SDL_arraysize(EVDEV_Keycodes)) {
-        scancode = EVDEV_Keycodes[keycode];
-    }
-    if (scancode == SDL_SCANCODE_UNKNOWN) {
-        SDL_Log("The key you just pressed is not recognized by SDL. To help get this fixed, please report this to the SDL mailing list <[email protected]> EVDEV KeyCode %d \n", keycode);
-    }
-    return scancode;
-}
-
-static void
-SDL_EVDEV_sync_device(SDL_evdevlist_item *item) 
-{
-    /* TODO: get full state of device and report whatever is required */
-}
-
-#if SDL_USE_LIBUDEV
-static int
-SDL_EVDEV_device_added(const char *devpath)
-{
-    SDL_evdevlist_item *item;
-
-    /* Check to make sure it's not already in list. */
-    for (item = _this->first; item != NULL; item = item->next) {
-        if (SDL_strcmp(devpath, item->path) == 0) {
-            return -1;  /* already have this one */
-        }
-    }
-    
-    item = (SDL_evdevlist_item *) SDL_calloc(1, sizeof (SDL_evdevlist_item));
-    if (item == NULL) {
-        return SDL_OutOfMemory();
-    }
-
-    item->fd = open(devpath, O_RDONLY, 0);
-    if (item->fd < 0) {
-        SDL_free(item);
-        return SDL_SetError("Unable to open %s", devpath);
-    }
-    
-    item->path = SDL_strdup(devpath);
-    if (item->path == NULL) {
-        close(item->fd);
-        SDL_free(item);
-        return SDL_OutOfMemory();
-    }
-    
-    /* Non blocking read mode */
-    fcntl(item->fd, F_SETFL, O_NONBLOCK);
-    
-    if (_this->last == NULL) {
-        _this->first = _this->last = item;
-    } else {
-        _this->last->next = item;
-        _this->last = item;
-    }
-    
-    SDL_EVDEV_sync_device(item);
-    
-    return _this->numdevices++;
-}
-#endif /* SDL_USE_LIBUDEV */
-
-static int
-SDL_EVDEV_device_removed(const char *devpath)
-{
-    SDL_evdevlist_item *item;
-    SDL_evdevlist_item *prev = NULL;
-
-    for (item = _this->first; item != NULL; item = item->next) {
-        /* found it, remove it. */
-        if (SDL_strcmp(devpath, item->path) == 0) {
-            if (prev != NULL) {
-                prev->next = item->next;
-            } else {
-                SDL_assert(_this->first == item);
-                _this->first = item->next;
-            }
-            if (item == _this->last) {
-                _this->last = prev;
-            }
-            close(item->fd);
-            SDL_free(item->path);
-            SDL_free(item);
-            _this->numdevices--;
-            return 0;
-        }
-        prev = item;
-    }
-
-    return -1;
-}
-
-
-#endif /* SDL_INPUT_LINUXEV */
-
-/* vi: set ts=4 sw=4 expandtab: */
-

+ 0 - 481
jni/SDL2-2.0.4/src/stdlib/SDL_qsort.c

@@ -1,481 +0,0 @@
-/* qsort.c
- * (c) 1998 Gareth McCaughan
- *
- * This is a drop-in replacement for the C library's |qsort()| routine.
- *
- * Features:
- *   - Median-of-three pivoting (and more)
- *   - Truncation and final polishing by a single insertion sort
- *   - Early truncation when no swaps needed in pivoting step
- *   - Explicit recursion, guaranteed not to overflow
- *   - A few little wrinkles stolen from the GNU |qsort()|.
- *   - separate code for non-aligned / aligned / word-size objects
- *
- * This code may be reproduced freely provided
- *   - this file is retained unaltered apart from minor
- *     changes for portability and efficiency
- *   - no changes are made to this comment
- *   - any changes that *are* made are clearly flagged
- *   - the _ID string below is altered by inserting, after
- *     the date, the string " altered" followed at your option
- *     by other material. (Exceptions: you may change the name
- *     of the exported routine without changing the ID string.
- *     You may change the values of the macros TRUNC_* and
- *     PIVOT_THRESHOLD without changing the ID string, provided
- *     they remain constants with TRUNC_nonaligned, TRUNC_aligned
- *     and TRUNC_words/WORD_BYTES between 8 and 24, and
- *     PIVOT_THRESHOLD between 32 and 200.)
- *
- * You may use it in anything you like; you may make money
- * out of it; you may distribute it in object form or as
- * part of an executable without including source code;
- * you don't have to credit me. (But it would be nice if
- * you did.)
- *
- * If you find problems with this code, or find ways of
- * making it significantly faster, please let me know!
- * My e-mail address, valid as of early 1998 and certainly
- * OK for at least the next 18 months, is
- *    [email protected]
- * Thanks!
- *
- * Gareth McCaughan   Peterhouse   Cambridge   1998
- */
-
-#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
-#define SDL_DISABLE_ANALYZE_MACROS 1
-#endif
-
-#include "../SDL_internal.h"
-
-/*
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-*/
-#include "SDL_stdinc.h"
-#include "SDL_assert.h"
-
-#if defined(HAVE_QSORT)
-void
-SDL_qsort(void *base, size_t nmemb, size_t size, int (*compare) (const void *, const void *))
-{
-    qsort(base, nmemb, size, compare);
-}
-#else
-
-#ifdef assert
-#undef assert
-#endif
-#define assert(X) SDL_assert(X)
-#ifdef malloc
-#undef malloc
-#endif
-#define malloc	SDL_malloc
-#ifdef free
-#undef free
-#endif
-#define free	SDL_free
-#ifdef memcpy
-#undef memcpy
-#endif
-#define memcpy	SDL_memcpy
-#ifdef memmove
-#undef memmove
-#endif
-#define memmove	SDL_memmove
-#ifdef qsort
-#undef qsort
-#endif
-#define qsort	SDL_qsort
-
-static const char _ID[] = "<qsort.c gjm 1.12 1998-03-19>";
-
-/* How many bytes are there per word? (Must be a power of 2,
- * and must in fact equal sizeof(int).)
- */
-#define WORD_BYTES sizeof(int)
-
-/* How big does our stack need to be? Answer: one entry per
- * bit in a |size_t|.
- */
-#define STACK_SIZE (8*sizeof(size_t))
-
-/* Different situations have slightly different requirements,
- * and we make life epsilon easier by using different truncation
- * points for the three different cases.
- * So far, I have tuned TRUNC_words and guessed that the same
- * value might work well for the other two cases. Of course
- * what works well on my machine might work badly on yours.
- */
-#define TRUNC_nonaligned	12
-#define TRUNC_aligned		12
-#define TRUNC_words		12*WORD_BYTES   /* nb different meaning */
-
-/* We use a simple pivoting algorithm for shortish sub-arrays
- * and a more complicated one for larger ones. The threshold
- * is PIVOT_THRESHOLD.
- */
-#define PIVOT_THRESHOLD 40
-
-typedef struct
-{
-    char *first;
-    char *last;
-} stack_entry;
-#define pushLeft {stack[stacktop].first=ffirst;stack[stacktop++].last=last;}
-#define pushRight {stack[stacktop].first=first;stack[stacktop++].last=llast;}
-#define doLeft {first=ffirst;llast=last;continue;}
-#define doRight {ffirst=first;last=llast;continue;}
-#define pop {if (--stacktop<0) break;\
-  first=ffirst=stack[stacktop].first;\
-  last=llast=stack[stacktop].last;\
-  continue;}
-
-/* Some comments on the implementation.
- * 1. When we finish partitioning the array into "low"
- *    and "high", we forget entirely about short subarrays,
- *    because they'll be done later by insertion sort.
- *    Doing lots of little insertion sorts might be a win
- *    on large datasets for locality-of-reference reasons,
- *    but it makes the code much nastier and increases
- *    bookkeeping overhead.
- * 2. We always save the shorter and get to work on the
- *    longer. This guarantees that every time we push
- *    an item onto the stack its size is <= 1/2 of that
- *    of its parent; so the stack can't need more than
- *    log_2(max-array-size) entries.
- * 3. We choose a pivot by looking at the first, last
- *    and middle elements. We arrange them into order
- *    because it's easy to do that in conjunction with
- *    choosing the pivot, and it makes things a little
- *    easier in the partitioning step. Anyway, the pivot
- *    is the middle of these three. It's still possible
- *    to construct datasets where the algorithm takes
- *    time of order n^2, but it simply never happens in
- *    practice.
- * 3' Newsflash: On further investigation I find that
- *    it's easy to construct datasets where median-of-3
- *    simply isn't good enough. So on large-ish subarrays
- *    we do a more sophisticated pivoting: we take three
- *    sets of 3 elements, find their medians, and then
- *    take the median of those.
- * 4. We copy the pivot element to a separate place
- *    because that way we can always do our comparisons
- *    directly against a pointer to that separate place,
- *    and don't have to wonder "did we move the pivot
- *    element?". This makes the inner loop better.
- * 5. It's possible to make the pivoting even more
- *    reliable by looking at more candidates when n
- *    is larger. (Taking this to its logical conclusion
- *    results in a variant of quicksort that doesn't
- *    have that n^2 worst case.) However, the overhead
- *    from the extra bookkeeping means that it's just
- *    not worth while.
- * 6. This is pretty clean and portable code. Here are
- *    all the potential portability pitfalls and problems
- *    I know of:
- *      - In one place (the insertion sort) I construct
- *        a pointer that points just past the end of the
- *        supplied array, and assume that (a) it won't
- *        compare equal to any pointer within the array,
- *        and (b) it will compare equal to a pointer
- *        obtained by stepping off the end of the array.
- *        These might fail on some segmented architectures.
- *      - I assume that there are 8 bits in a |char| when
- *        computing the size of stack needed. This would
- *        fail on machines with 9-bit or 16-bit bytes.
- *      - I assume that if |((int)base&(sizeof(int)-1))==0|
- *        and |(size&(sizeof(int)-1))==0| then it's safe to
- *        get at array elements via |int*|s, and that if
- *        actually |size==sizeof(int)| as well then it's
- *        safe to treat the elements as |int|s. This might
- *        fail on systems that convert pointers to integers
- *        in non-standard ways.
- *      - I assume that |8*sizeof(size_t)<=INT_MAX|. This
- *        would be false on a machine with 8-bit |char|s,
- *        16-bit |int|s and 4096-bit |size_t|s. :-)
- */
-
-/* The recursion logic is the same in each case: */
-#define Recurse(Trunc)				\
-      { size_t l=last-ffirst,r=llast-first;	\
-        if (l<Trunc) {				\
-          if (r>=Trunc) doRight			\
-          else pop				\
-        }					\
-        else if (l<=r) { pushLeft; doRight }	\
-        else if (r>=Trunc) { pushRight; doLeft }\
-        else doLeft				\
-      }
-
-/* and so is the pivoting logic: */
-#define Pivot(swapper,sz)			\
-  if ((size_t)(last-first)>PIVOT_THRESHOLD*sz) mid=pivot_big(first,mid,last,sz,compare);\
-  else {	\
-    if (compare(first,mid)<0) {			\
-      if (compare(mid,last)>0) {		\
-        swapper(mid,last);			\
-        if (compare(first,mid)>0) swapper(first,mid);\
-      }						\
-    }						\
-    else {					\
-      if (compare(mid,last)>0) swapper(first,last)\
-      else {					\
-        swapper(first,mid);			\
-        if (compare(mid,last)>0) swapper(mid,last);\
-      }						\
-    }						\
-    first+=sz; last-=sz;			\
-  }
-
-#ifdef DEBUG_QSORT
-#include <stdio.h>
-#endif
-
-/* and so is the partitioning logic: */
-#define Partition(swapper,sz) {			\
-  int swapped=0;				\
-  do {						\
-    while (compare(first,pivot)<0) first+=sz;	\
-    while (compare(pivot,last)<0) last-=sz;	\
-    if (first<last) {				\
-      swapper(first,last); swapped=1;		\
-      first+=sz; last-=sz; }			\
-    else if (first==last) { first+=sz; last-=sz; break; }\
-  } while (first<=last);			\
-  if (!swapped) pop				\
-}
-
-/* and so is the pre-insertion-sort operation of putting
- * the smallest element into place as a sentinel.
- * Doing this makes the inner loop nicer. I got this
- * idea from the GNU implementation of qsort().
- */
-#define PreInsertion(swapper,limit,sz)		\
-  first=base;					\
-  last=first + (nmemb>limit ? limit : nmemb-1)*sz;\
-  while (last!=base) {				\
-    if (compare(first,last)>0) first=last;	\
-    last-=sz; }					\
-  if (first!=base) swapper(first,(char*)base);
-
-/* and so is the insertion sort, in the first two cases: */
-#define Insertion(swapper)			\
-  last=((char*)base)+nmemb*size;		\
-  for (first=((char*)base)+size;first!=last;first+=size) {	\
-    char *test;					\
-    /* Find the right place for |first|.	\
-     * My apologies for var reuse. */		\
-    for (test=first-size;compare(test,first)>0;test-=size) ;	\
-    test+=size;					\
-    if (test!=first) {				\
-      /* Shift everything in [test,first)	\
-       * up by one, and place |first|		\
-       * where |test| is. */			\
-      memcpy(pivot,first,size);			\
-      memmove(test+size,test,first-test);	\
-      memcpy(test,pivot,size);			\
-    }						\
-  }
-
-#define SWAP_nonaligned(a,b) { \
-  register char *aa=(a),*bb=(b); \
-  register size_t sz=size; \
-  do { register char t=*aa; *aa++=*bb; *bb++=t; } while (--sz); }
-
-#define SWAP_aligned(a,b) { \
-  register int *aa=(int*)(a),*bb=(int*)(b); \
-  register size_t sz=size; \
-  do { register int t=*aa;*aa++=*bb; *bb++=t; } while (sz-=WORD_BYTES); }
-
-#define SWAP_words(a,b) { \
-  register int t=*((int*)a); *((int*)a)=*((int*)b); *((int*)b)=t; }
-
-/* ---------------------------------------------------------------------- */
-
-static char *
-pivot_big(char *first, char *mid, char *last, size_t size,
-          int compare(const void *, const void *))
-{
-    size_t d = (((last - first) / size) >> 3) * size;
-    char *m1, *m2, *m3;
-    {
-        char *a = first, *b = first + d, *c = first + 2 * d;
-#ifdef DEBUG_QSORT
-        fprintf(stderr, "< %d %d %d\n", *(int *) a, *(int *) b, *(int *) c);
-#endif
-        m1 = compare(a, b) < 0 ?
-            (compare(b, c) < 0 ? b : (compare(a, c) < 0 ? c : a))
-            : (compare(a, c) < 0 ? a : (compare(b, c) < 0 ? c : b));
-    }
-    {
-        char *a = mid - d, *b = mid, *c = mid + d;
-#ifdef DEBUG_QSORT
-        fprintf(stderr, ". %d %d %d\n", *(int *) a, *(int *) b, *(int *) c);
-#endif
-        m2 = compare(a, b) < 0 ?
-            (compare(b, c) < 0 ? b : (compare(a, c) < 0 ? c : a))
-            : (compare(a, c) < 0 ? a : (compare(b, c) < 0 ? c : b));
-    }
-    {
-        char *a = last - 2 * d, *b = last - d, *c = last;
-#ifdef DEBUG_QSORT
-        fprintf(stderr, "> %d %d %d\n", *(int *) a, *(int *) b, *(int *) c);
-#endif
-        m3 = compare(a, b) < 0 ?
-            (compare(b, c) < 0 ? b : (compare(a, c) < 0 ? c : a))
-            : (compare(a, c) < 0 ? a : (compare(b, c) < 0 ? c : b));
-    }
-#ifdef DEBUG_QSORT
-    fprintf(stderr, "-> %d %d %d\n", *(int *) m1, *(int *) m2, *(int *) m3);
-#endif
-    return compare(m1, m2) < 0 ?
-        (compare(m2, m3) < 0 ? m2 : (compare(m1, m3) < 0 ? m3 : m1))
-        : (compare(m1, m3) < 0 ? m1 : (compare(m2, m3) < 0 ? m3 : m2));
-}
-
-/* ---------------------------------------------------------------------- */
-
-static void
-qsort_nonaligned(void *base, size_t nmemb, size_t size,
-                 int (*compare) (const void *, const void *))
-{
-
-    stack_entry stack[STACK_SIZE];
-    int stacktop = 0;
-    char *first, *last;
-    char *pivot = malloc(size);
-    size_t trunc = TRUNC_nonaligned * size;
-    assert(pivot != 0);
-
-    first = (char *) base;
-    last = first + (nmemb - 1) * size;
-
-    if ((size_t) (last - first) > trunc) {
-        char *ffirst = first, *llast = last;
-        while (1) {
-            /* Select pivot */
-            {
-                char *mid = first + size * ((last - first) / size >> 1);
-                Pivot(SWAP_nonaligned, size);
-                memcpy(pivot, mid, size);
-            }
-            /* Partition. */
-            Partition(SWAP_nonaligned, size);
-            /* Prepare to recurse/iterate. */
-        Recurse(trunc)}
-    }
-    PreInsertion(SWAP_nonaligned, TRUNC_nonaligned, size);
-    Insertion(SWAP_nonaligned);
-    free(pivot);
-}
-
-static void
-qsort_aligned(void *base, size_t nmemb, size_t size,
-              int (*compare) (const void *, const void *))
-{
-
-    stack_entry stack[STACK_SIZE];
-    int stacktop = 0;
-    char *first, *last;
-    char *pivot = malloc(size);
-    size_t trunc = TRUNC_aligned * size;
-    assert(pivot != 0);
-
-    first = (char *) base;
-    last = first + (nmemb - 1) * size;
-
-    if ((size_t) (last - first) > trunc) {
-        char *ffirst = first, *llast = last;
-        while (1) {
-            /* Select pivot */
-            {
-                char *mid = first + size * ((last - first) / size >> 1);
-                Pivot(SWAP_aligned, size);
-                memcpy(pivot, mid, size);
-            }
-            /* Partition. */
-            Partition(SWAP_aligned, size);
-            /* Prepare to recurse/iterate. */
-        Recurse(trunc)}
-    }
-    PreInsertion(SWAP_aligned, TRUNC_aligned, size);
-    Insertion(SWAP_aligned);
-    free(pivot);
-}
-
-static void
-qsort_words(void *base, size_t nmemb,
-            int (*compare) (const void *, const void *))
-{
-
-    stack_entry stack[STACK_SIZE];
-    int stacktop = 0;
-    char *first, *last;
-    char *pivot = malloc(WORD_BYTES);
-    assert(pivot != 0);
-
-    first = (char *) base;
-    last = first + (nmemb - 1) * WORD_BYTES;
-
-    if (last - first > TRUNC_words) {
-        char *ffirst = first, *llast = last;
-        while (1) {
-#ifdef DEBUG_QSORT
-            fprintf(stderr, "Doing %d:%d: ",
-                    (first - (char *) base) / WORD_BYTES,
-                    (last - (char *) base) / WORD_BYTES);
-#endif
-            /* Select pivot */
-            {
-                char *mid =
-                    first + WORD_BYTES * ((last - first) / (2 * WORD_BYTES));
-                Pivot(SWAP_words, WORD_BYTES);
-                *(int *) pivot = *(int *) mid;
-            }
-#ifdef DEBUG_QSORT
-            fprintf(stderr, "pivot=%d\n", *(int *) pivot);
-#endif
-            /* Partition. */
-            Partition(SWAP_words, WORD_BYTES);
-            /* Prepare to recurse/iterate. */
-        Recurse(TRUNC_words)}
-    }
-    PreInsertion(SWAP_words, (TRUNC_words / WORD_BYTES), WORD_BYTES);
-    /* Now do insertion sort. */
-    last = ((char *) base) + nmemb * WORD_BYTES;
-    for (first = ((char *) base) + WORD_BYTES; first != last;
-         first += WORD_BYTES) {
-        /* Find the right place for |first|. My apologies for var reuse */
-        int *pl = (int *) (first - WORD_BYTES), *pr = (int *) first;
-        *(int *) pivot = *(int *) first;
-        for (; compare(pl, pivot) > 0; pr = pl, --pl) {
-            *pr = *pl;
-        }
-        if (pr != (int *) first)
-            *pr = *(int *) pivot;
-    }
-    free(pivot);
-}
-
-/* ---------------------------------------------------------------------- */
-
-void
-qsort(void *base, size_t nmemb, size_t size,
-      int (*compare) (const void *, const void *))
-{
-
-    if (nmemb <= 1)
-        return;
-    if (((uintptr_t) base | size) & (WORD_BYTES - 1))
-        qsort_nonaligned(base, nmemb, size, compare);
-    else if (size != WORD_BYTES)
-        qsort_aligned(base, nmemb, size, compare);
-    else
-        qsort_words(base, nmemb, compare);
-}
-
-#endif /* !SDL_qsort */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 254
jni/SDL2-2.0.4/src/video/mir/SDL_mirevents.c

@@ -1,254 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2016 Sam Lantinga <[email protected]>
-
-  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, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/*
-  Contributed by Brandon Schaefer, <[email protected]>
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_MIR
-
-#include "../../events/SDL_events_c.h"
-#include "../../events/SDL_keyboard_c.h"
-#include "../../events/SDL_touch_c.h"
-#include "../../events/scancodes_xfree86.h"
-
-#include "SDL_mirevents.h"
-#include "SDL_mirwindow.h"
-
-#include <xkbcommon/xkbcommon.h>
-
-#include "SDL_mirdyn.h"
-
-static void
-HandleKeyText(int32_t key_code)
-{
-    char text[8];
-    int size = 0;
-
-    size = MIR_xkb_keysym_to_utf8(key_code, text, sizeof text);
-
-    if (size > 0) {
-        text[size] = '\0';
-        SDL_SendKeyboardText(text);
-    }
-}
-
-static void
-CheckKeyboardFocus(SDL_Window* sdl_window)
-{
-    SDL_Window* keyboard_window = SDL_GetKeyboardFocus();
-
-    if (keyboard_window != sdl_window)
-        SDL_SetKeyboardFocus(sdl_window);
-}
-
-
-/* FIXME
-   Mir still needs to implement its IM API, for now we assume
-   a single key press produces a character.
-*/
-static void
-HandleKeyEvent(MirKeyEvent const ev, SDL_Window* window)
-{
-    uint32_t scancode = SDL_SCANCODE_UNKNOWN;
-    Uint8 key_state = ev.action == mir_key_action_up ? SDL_RELEASED : SDL_PRESSED;
-
-    CheckKeyboardFocus(window);
-
-    if (ev.scan_code < SDL_arraysize(xfree86_scancode_table2))
-        scancode = xfree86_scancode_table2[ev.scan_code];
-
-    if (scancode != SDL_SCANCODE_UNKNOWN)
-        SDL_SendKeyboardKey(key_state, scancode);
-
-    if (key_state == SDL_PRESSED)
-        HandleKeyText(ev.key_code);
-}
-
-static void
-HandleMouseButton(SDL_Window* sdl_window, Uint8 state, MirMotionButton button_state)
-{
-    static uint32_t last_sdl_button;
-    uint32_t sdl_button;
-
-    switch (button_state) {
-        case mir_motion_button_primary:
-            sdl_button = SDL_BUTTON_LEFT;
-            break;
-        case mir_motion_button_secondary:
-            sdl_button = SDL_BUTTON_RIGHT;
-            break;
-        case mir_motion_button_tertiary:
-            sdl_button = SDL_BUTTON_MIDDLE;
-            break;
-        case mir_motion_button_forward:
-            sdl_button = SDL_BUTTON_X1;
-            break;
-        case mir_motion_button_back:
-            sdl_button = SDL_BUTTON_X2;
-            break;
-        default:
-            sdl_button = last_sdl_button;
-            break;
-    }
-
-    last_sdl_button = sdl_button;
-    SDL_SendMouseButton(sdl_window, 0, state, sdl_button);
-}
-
-static void
-HandleMouseMotion(SDL_Window* sdl_window, int x, int y)
-{
-    SDL_SendMouseMotion(sdl_window, 0, 0, x, y);
-}
-
-static void
-HandleTouchPress(int device_id, int source_id, SDL_bool down, float x, float y, float pressure)
-{
-    SDL_SendTouch(device_id, source_id, down, x, y, pressure);
-}
-
-static void
-HandleTouchMotion(int device_id, int source_id, float x, float y, float pressure)
-{
-    SDL_SendTouchMotion(device_id, source_id, x, y, pressure);
-}
-
-static void
-HandleMouseScroll(SDL_Window* sdl_window, int hscroll, int vscroll)
-{
-    SDL_SendMouseWheel(sdl_window, 0, hscroll, vscroll, SDL_MOUSEWHEEL_NORMAL);
-}
-
-static void
-AddTouchDevice(int device_id)
-{
-    if (SDL_AddTouch(device_id, "") < 0)
-        SDL_SetError("Error: can't add touch %s, %d", __FILE__, __LINE__);
-}
-
-static void
-HandleTouchEvent(MirMotionEvent const motion, int cord_index, SDL_Window* sdl_window)
-{
-    int device_id = motion.device_id;
-    int id = motion.pointer_coordinates[cord_index].id;
-
-    int width  = sdl_window->w;
-    int height = sdl_window->h;
-    float x   = motion.pointer_coordinates[cord_index].x;
-    float y   = motion.pointer_coordinates[cord_index].y;
-
-    float n_x = x / width;
-    float n_y = y / height;
-    float pressure = motion.pointer_coordinates[cord_index].pressure;
-
-    AddTouchDevice(motion.device_id);
-
-    switch (motion.action) {
-        case mir_motion_action_down:
-        case mir_motion_action_pointer_down:
-            HandleTouchPress(device_id, id, SDL_TRUE, n_x, n_y, pressure);
-            break;
-        case mir_motion_action_up:
-        case mir_motion_action_pointer_up:
-            HandleTouchPress(device_id, id, SDL_FALSE, n_x, n_y, pressure);
-            break;
-        case mir_motion_action_hover_move:
-        case mir_motion_action_move:
-            HandleTouchMotion(device_id, id, n_x, n_y, pressure);
-            break;
-        default:
-            break;
-    }
-}
-
-static void
-HandleMouseEvent(MirMotionEvent const motion, int cord_index, SDL_Window* sdl_window)
-{
-    SDL_SetMouseFocus(sdl_window);
-
-    switch (motion.action) {
-        case mir_motion_action_down:
-        case mir_motion_action_pointer_down:
-            HandleMouseButton(sdl_window, SDL_PRESSED, motion.button_state);
-            break;
-        case mir_motion_action_up:
-        case mir_motion_action_pointer_up:
-            HandleMouseButton(sdl_window, SDL_RELEASED, motion.button_state);
-            break;
-        case mir_motion_action_hover_move:
-        case mir_motion_action_move:
-            HandleMouseMotion(sdl_window,
-                              motion.pointer_coordinates[cord_index].x,
-                              motion.pointer_coordinates[cord_index].y);
-            break;
-        case mir_motion_action_outside:
-            SDL_SetMouseFocus(NULL);
-            break;
-        case mir_motion_action_scroll:
-            HandleMouseScroll(sdl_window,
-                              motion.pointer_coordinates[cord_index].hscroll,
-                              motion.pointer_coordinates[cord_index].vscroll);
-            break;
-        case mir_motion_action_cancel:
-        case mir_motion_action_hover_enter:
-        case mir_motion_action_hover_exit:
-            break;
-        default:
-            break;
-    }
-}
-
-static void
-HandleMotionEvent(MirMotionEvent const motion, SDL_Window* sdl_window)
-{
-    int cord_index;
-    for (cord_index = 0; cord_index < motion.pointer_count; cord_index++) {
-        if (motion.pointer_coordinates[cord_index].tool_type == mir_motion_tool_type_finger) {
-            HandleTouchEvent(motion, cord_index, sdl_window);
-        }
-        else {
-            HandleMouseEvent(motion, cord_index, sdl_window);
-        }
-    }
-}
-
-void
-MIR_HandleInput(MirSurface* surface, MirEvent const* ev, void* context)
-{
-    SDL_Window* window = (SDL_Window*)context;
-    switch (ev->type) {
-        case (mir_event_type_key):
-            HandleKeyEvent(ev->key, window);
-            break;
-        case (mir_event_type_motion):
-            HandleMotionEvent(ev->motion, window);
-            break;
-        default:
-            break;
-    }
-}
-
-#endif /* SDL_VIDEO_DRIVER_MIR */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 161
jni/SDL2-2.0.4/src/video/mir/SDL_mirmouse.c

@@ -1,161 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2016 Sam Lantinga <[email protected]>
-
-  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, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/*
-  Contributed by Brandon Schaefer, <[email protected]>
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_MIR
-
-#include "SDL_mirmouse.h"
-
-#include "../../events/SDL_mouse_c.h"
-#include "SDL_assert.h"
-
-#include "SDL_mirdyn.h"
-
-static SDL_Cursor*
-MIR_CreateDefaultCursor()
-{
-    SDL_Cursor* cursor;
-
-    cursor = SDL_calloc(1, sizeof(SDL_Cursor));
-    if (cursor) {
-    }
-    else {
-        SDL_OutOfMemory();
-    }
-
-    return cursor;
-}
-
-static SDL_Cursor*
-MIR_CreateCursor(SDL_Surface* sruface, int hot_x, int hot_y)
-{
-    return MIR_CreateDefaultCursor();
-}
-
-static SDL_Cursor*
-MIR_CreateSystemCursor(SDL_SystemCursor id)
-{
-    switch(id) {
-        case SDL_SYSTEM_CURSOR_ARROW:
-            break;
-        case SDL_SYSTEM_CURSOR_IBEAM:
-            break;
-        case SDL_SYSTEM_CURSOR_WAIT:
-            break;
-        case SDL_SYSTEM_CURSOR_CROSSHAIR:
-            break;
-        case SDL_SYSTEM_CURSOR_WAITARROW:
-            break;
-        case SDL_SYSTEM_CURSOR_SIZENWSE:
-            break;
-        case SDL_SYSTEM_CURSOR_SIZENESW:
-            break;
-        case SDL_SYSTEM_CURSOR_SIZEWE:
-            break;
-        case SDL_SYSTEM_CURSOR_SIZENS:
-            break;
-        case SDL_SYSTEM_CURSOR_SIZEALL:
-            break;
-        case SDL_SYSTEM_CURSOR_NO:
-            break;
-        case SDL_SYSTEM_CURSOR_HAND:
-            break;
-        default:
-            SDL_assert(0);
-            return NULL;
-    }
-
-    return MIR_CreateDefaultCursor();
-}
-
-static void
-MIR_FreeCursor(SDL_Cursor* cursor)
-{
-    if (cursor)
-      SDL_free(cursor);
-}
-
-static int
-MIR_ShowCursor(SDL_Cursor* cursor)
-{
-    return 0;
-}
-
-static void
-MIR_WarpMouse(SDL_Window* window, int x, int y)
-{
-    SDL_Unsupported();
-}
-
-static int
-MIR_WarpMouseGlobal(int x, int y)
-{
-    return SDL_Unsupported();
-}
-
-static int
-MIR_SetRelativeMouseMode(SDL_bool enabled)
-{
-    return SDL_Unsupported();
-}
-
-/* TODO Actually implement the cursor, need to wait for mir support */
-void
-MIR_InitMouse()
-{
-    SDL_Mouse* mouse = SDL_GetMouse();
-
-    mouse->CreateCursor         = MIR_CreateCursor;
-    mouse->ShowCursor           = MIR_ShowCursor;
-    mouse->FreeCursor           = MIR_FreeCursor;
-    mouse->WarpMouse            = MIR_WarpMouse;
-    mouse->WarpMouseGlobal      = MIR_WarpMouseGlobal;
-    mouse->CreateSystemCursor   = MIR_CreateSystemCursor;
-    mouse->SetRelativeMouseMode = MIR_SetRelativeMouseMode;
-
-    SDL_SetDefaultCursor(MIR_CreateDefaultCursor());
-}
-
-void
-MIR_FiniMouse()
-{
-    SDL_Mouse* mouse = SDL_GetMouse();
-
-    MIR_FreeCursor(mouse->def_cursor);
-    mouse->def_cursor = NULL;
-
-    mouse->CreateCursor         = NULL;
-    mouse->ShowCursor           = NULL;
-    mouse->FreeCursor           = NULL;
-    mouse->WarpMouse            = NULL;
-    mouse->CreateSystemCursor   = NULL;
-    mouse->SetRelativeMouseMode = NULL;
-}
-
-#endif /* SDL_VIDEO_DRIVER_MIR */
-
-/* vi: set ts=4 sw=4 expandtab: */
-

+ 0 - 49
jni/SDL2-2.0.4/src/video/mir/SDL_mirsym.h

@@ -1,49 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2016 Sam Lantinga <[email protected]>
-
-  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, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/* *INDENT-OFF* */
-
-SDL_MIR_MODULE(MIR_CLIENT)
-SDL_MIR_SYM(MirDisplayConfiguration*,mir_connection_create_display_config,(MirConnection *connection))
-SDL_MIR_SYM(MirSurface *,mir_connection_create_surface_sync,(MirConnection *connection, MirSurfaceParameters const *params))
-SDL_MIR_SYM(void,mir_connection_get_available_surface_formats,(MirConnection* connection, MirPixelFormat* formats, unsigned const int format_size, unsigned int *num_valid_formats))
-SDL_MIR_SYM(MirEGLNativeDisplayType,mir_connection_get_egl_native_display,(MirConnection *connection))
-SDL_MIR_SYM(MirBool,mir_connection_is_valid,(MirConnection *connection))
-SDL_MIR_SYM(void,mir_connection_release,(MirConnection *connection))
-SDL_MIR_SYM(MirConnection *,mir_connect_sync,(char const *server, char const *app_name))
-SDL_MIR_SYM(void,mir_display_config_destroy,(MirDisplayConfiguration* display_configuration))
-SDL_MIR_SYM(MirEGLNativeWindowType,mir_surface_get_egl_native_window,(MirSurface *surface))
-SDL_MIR_SYM(char const *,mir_surface_get_error_message,(MirSurface *surface))
-SDL_MIR_SYM(void,mir_surface_get_graphics_region,(MirSurface *surface, MirGraphicsRegion *graphics_region))
-SDL_MIR_SYM(void,mir_surface_get_parameters,(MirSurface *surface, MirSurfaceParameters *parameters))
-SDL_MIR_SYM(MirBool,mir_surface_is_valid,(MirSurface *surface))
-SDL_MIR_SYM(void,mir_surface_release_sync,(MirSurface *surface))
-SDL_MIR_SYM(void,mir_surface_set_event_handler,(MirSurface *surface, MirEventDelegate const *event_handler))
-SDL_MIR_SYM(MirWaitHandle*,mir_surface_set_type,(MirSurface *surface, MirSurfaceType type))
-SDL_MIR_SYM(MirWaitHandle*,mir_surface_set_state,(MirSurface *surface, MirSurfaceState state))
-SDL_MIR_SYM(void,mir_surface_swap_buffers_sync,(MirSurface *surface))
-
-SDL_MIR_MODULE(XKBCOMMON)
-SDL_MIR_SYM(int,xkb_keysym_to_utf8,(xkb_keysym_t keysym, char *buffer, size_t size))
-
-/* *INDENT-ON* */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 230
jni/SDL2-2.0.4/src/video/mir/SDL_mirwindow.c

@@ -1,230 +0,0 @@
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2016 Sam Lantinga <[email protected]>
-
-  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, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-/*
-  Contributed by Brandon Schaefer, <[email protected]>
-*/
-
-#include "../../SDL_internal.h"
-
-#if SDL_VIDEO_DRIVER_MIR
-
-#include "../SDL_egl_c.h"
-#include "../SDL_sysvideo.h"
-
-#include "SDL_mirevents.h"
-#include "SDL_mirwindow.h"
-
-#include "SDL_mirdyn.h"
-
-int
-IsSurfaceValid(MIR_Window* mir_window)
-{
-    if (!MIR_mir_surface_is_valid(mir_window->surface)) {
-        const char* error = MIR_mir_surface_get_error_message(mir_window->surface);
-        return SDL_SetError("Failed to created a mir surface: %s", error);
-    }
-
-    return 0;
-}
-
-MirPixelFormat
-FindValidPixelFormat(MIR_Data* mir_data)
-{
-    unsigned int pf_size = 32;
-    unsigned int valid_formats;
-    unsigned int f;
-
-    MirPixelFormat formats[pf_size];
-    MIR_mir_connection_get_available_surface_formats(mir_data->connection, formats,
-                                                 pf_size, &valid_formats);
-
-    for (f = 0; f < valid_formats; f++) {
-        MirPixelFormat cur_pf = formats[f];
-
-        if (cur_pf == mir_pixel_format_abgr_8888 ||
-            cur_pf == mir_pixel_format_xbgr_8888 ||
-            cur_pf == mir_pixel_format_argb_8888 ||
-            cur_pf == mir_pixel_format_xrgb_8888) {
-
-            return cur_pf;
-        }
-    }
-
-    return mir_pixel_format_invalid;
-}
-
-int
-MIR_CreateWindow(_THIS, SDL_Window* window)
-{
-    MIR_Window* mir_window;
-    MIR_Data* mir_data;
-
-    MirSurfaceParameters surfaceparm =
-    {
-        .name = "MirSurface",
-        .width = window->w,
-        .height = window->h,
-        .pixel_format = mir_pixel_format_invalid,
-        .buffer_usage = mir_buffer_usage_hardware,
-        .output_id = mir_display_output_id_invalid
-    };
-
-    MirEventDelegate delegate = {
-        MIR_HandleInput,
-        window
-    };
-
-    mir_window = SDL_calloc(1, sizeof(MIR_Window));
-    if (!mir_window)
-        return SDL_OutOfMemory();
-
-    mir_data = _this->driverdata;
-    window->driverdata = mir_window;
-
-    if (mir_data->software)
-        surfaceparm.buffer_usage = mir_buffer_usage_software;
-
-    if (window->x == SDL_WINDOWPOS_UNDEFINED)
-        window->x = 0;
-
-    if (window->y == SDL_WINDOWPOS_UNDEFINED)
-        window->y = 0;
-
-    mir_window->mir_data = mir_data;
-    mir_window->sdl_window = window;
-
-    surfaceparm.pixel_format = FindValidPixelFormat(mir_data);
-    if (surfaceparm.pixel_format == mir_pixel_format_invalid) {
-        return SDL_SetError("Failed to find a valid pixel format.");
-    }
-
-    mir_window->surface = MIR_mir_connection_create_surface_sync(mir_data->connection, &surfaceparm);
-    if (!MIR_mir_surface_is_valid(mir_window->surface)) {
-        const char* error = MIR_mir_surface_get_error_message(mir_window->surface);
-        return SDL_SetError("Failed to created a mir surface: %s", error);
-    }
-
-    if (window->flags & SDL_WINDOW_OPENGL) {
-        EGLNativeWindowType egl_native_window =
-                        (EGLNativeWindowType)MIR_mir_surface_get_egl_native_window(mir_window->surface);
-
-        mir_window->egl_surface = SDL_EGL_CreateSurface(_this, egl_native_window);
-
-        if (mir_window->egl_surface == EGL_NO_SURFACE) {
-            return SDL_SetError("Failed to created a window surface %p",
-                                _this->egl_data->egl_display);
-        }
-    }
-    else {
-        mir_window->egl_surface = EGL_NO_SURFACE;
-    }
-
-    MIR_mir_surface_set_event_handler(mir_window->surface, &delegate);
-
-    return 0;
-}
-
-void
-MIR_DestroyWindow(_THIS, SDL_Window* window)
-{
-    MIR_Data* mir_data = _this->driverdata;
-    MIR_Window* mir_window = window->driverdata;
-
-    if (mir_data) {
-        SDL_EGL_DestroySurface(_this, mir_window->egl_surface);
-        MIR_mir_surface_release_sync(mir_window->surface);
-
-        SDL_free(mir_window);
-    }
-    window->driverdata = NULL;
-}
-
-SDL_bool
-MIR_GetWindowWMInfo(_THIS, SDL_Window* window, SDL_SysWMinfo* info)
-{
-    if (info->version.major == SDL_MAJOR_VERSION &&
-        info->version.minor == SDL_MINOR_VERSION) {
-        MIR_Window* mir_window = window->driverdata;
-
-        info->subsystem = SDL_SYSWM_MIR;
-        info->info.mir.connection = mir_window->mir_data->connection;
-        info->info.mir.surface = mir_window->surface;
-
-        return SDL_TRUE;
-    }
-
-    return SDL_FALSE;
-}
-
-void
-MIR_SetWindowFullscreen(_THIS, SDL_Window* window,
-                        SDL_VideoDisplay* display,
-                        SDL_bool fullscreen)
-{
-    MIR_Window* mir_window = window->driverdata;
-
-    if (IsSurfaceValid(mir_window) < 0)
-        return;
-
-    if (fullscreen) {
-        MIR_mir_surface_set_state(mir_window->surface, mir_surface_state_fullscreen);
-    } else {
-        MIR_mir_surface_set_state(mir_window->surface, mir_surface_state_restored);
-    }
-}
-
-void
-MIR_MaximizeWindow(_THIS, SDL_Window* window)
-{
-    MIR_Window* mir_window = window->driverdata;
-
-    if (IsSurfaceValid(mir_window) < 0)
-        return;
-
-    MIR_mir_surface_set_state(mir_window->surface, mir_surface_state_maximized);
-}
-
-void
-MIR_MinimizeWindow(_THIS, SDL_Window* window)
-{
-    MIR_Window* mir_window = window->driverdata;
-
-    if (IsSurfaceValid(mir_window) < 0)
-        return;
-
-    MIR_mir_surface_set_state(mir_window->surface, mir_surface_state_minimized);
-}
-
-void
-MIR_RestoreWindow(_THIS, SDL_Window * window)
-{
-    MIR_Window* mir_window = window->driverdata;
-
-    if (IsSurfaceValid(mir_window) < 0)
-        return;
-
-    MIR_mir_surface_set_state(mir_window->surface, mir_surface_state_restored);
-}
-
-#endif /* SDL_VIDEO_DRIVER_MIR */
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 31
jni/SDL2-2.0.4/src/video/x11/imKStoUCS.h

@@ -1,31 +0,0 @@
-#ifndef _imKStoUCS_h
-#define _imKStoUCS_h
-
-/* Copyright (C) 1994-2003 The XFree86 Project, Inc.  All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is fur-
-nished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
-NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
-NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the XFree86 Project shall not
-be used in advertising or otherwise to promote the sale, use or other deal-
-ings in this Software without prior written authorization from the XFree86
-Project.
-*/
-
-extern unsigned int X11_KeySymToUcs4(KeySym keysym);
-
-#endif /* _imKStoUCS_h */

+ 0 - 373
jni/SDL2-2.0.4/test/testime.c

@@ -1,373 +0,0 @@
-/*
-  Copyright (C) 1997-2016 Sam Lantinga <[email protected]>
-
-  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 program to test the Input Method support in the SDL library (2.0+) */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "SDL.h"
-#ifdef HAVE_SDL_TTF
-#include "SDL_ttf.h"
-#endif
-
-#include "SDL_test_common.h"
-
-#define DEFAULT_PTSIZE  30
-#define DEFAULT_FONT    "/System/Library/Fonts/华文细黑.ttf"
-#define MAX_TEXT_LENGTH 256
-
-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};
-static SDL_Color textColor = {0,0,0,0};
-static char text[MAX_TEXT_LENGTH], markedText[SDL_TEXTEDITINGEVENT_TEXT_SIZE];
-static int cursor = 0;
-#ifdef HAVE_SDL_TTF
-static TTF_Font *font;
-#endif
-
-size_t utf8_length(unsigned char c)
-{
-    c = (unsigned char)(0xff & c);
-    if (c < 0x80)
-        return 1;
-    else if ((c >> 5) ==0x6)
-        return 2;
-    else if ((c >> 4) == 0xe)
-        return 3;
-    else if ((c >> 3) == 0x1e)
-        return 4;
-    else
-        return 0;
-}
-
-char *utf8_next(char *p)
-{
-    size_t len = utf8_length(*p);
-    size_t i = 0;
-    if (!len)
-        return 0;
-
-    for (; i < len; ++i)
-    {
-        ++p;
-        if (!*p)
-            return 0;
-    }
-    return p;
-}
-
-char *utf8_advance(char *p, size_t distance)
-{
-    size_t i = 0;
-    for (; i < distance && p; ++i)
-    {
-        p = utf8_next(p);
-    }
-    return p;
-}
-
-void usage()
-{
-    SDL_Log("usage: testime [--font fontfile]\n");
-    exit(0);
-}
-
-void InitInput()
-{
-
-    /* Prepare a rect for text input */
-    textRect.x = textRect.y = 100;
-    textRect.w = DEFAULT_WINDOW_WIDTH - 2 * textRect.x;
-    textRect.h = 50;
-
-    text[0] = 0;
-    markedRect = textRect;
-    markedText[0] = 0;
-
-    SDL_StartTextInput();
-}
-
-void CleanupVideo()
-{
-    SDL_StopTextInput();
-#ifdef HAVE_SDL_TTF
-    TTF_CloseFont(font);
-    TTF_Quit();
-#endif
-}
-
-
-void _Redraw(SDL_Renderer * renderer) {
-    int w = 0, h = textRect.h;
-    SDL_Rect cursorRect, underlineRect;
-
-    SDL_SetRenderDrawColor(renderer, 255,255,255,255);
-    SDL_RenderFillRect(renderer,&textRect);
-
-#ifdef HAVE_SDL_TTF
-    if (*text)
-    {
-        SDL_Surface *textSur = TTF_RenderUTF8_Blended(font, text, textColor);
-        SDL_Rect dest = {textRect.x, textRect.y, textSur->w, textSur->h };
-
-        SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer,textSur);
-        SDL_FreeSurface(textSur);
-
-        SDL_RenderCopy(renderer,texture,NULL,&dest);
-        SDL_DestroyTexture(texture);
-        TTF_SizeUTF8(font, text, &w, &h);
-    }
-#endif
-
-    markedRect.x = textRect.x + w;
-    markedRect.w = textRect.w - w;
-    if (markedRect.w < 0)
-    {
-        /* Stop text input because we cannot hold any more characters */
-        SDL_StopTextInput();
-        return;
-    }
-    else
-    {
-        SDL_StartTextInput();
-    }
-
-    cursorRect = markedRect;
-    cursorRect.w = 2;
-    cursorRect.h = h;
-
-    SDL_SetRenderDrawColor(renderer, 255,255,255,255);
-    SDL_RenderFillRect(renderer,&markedRect);
-
-    if (markedText[0])
-    {
-#ifdef HAVE_SDL_TTF
-        if (cursor)
-        {
-            char *p = utf8_advance(markedText, cursor);
-            char c = 0;
-            if (!p)
-                p = &markedText[strlen(markedText)];
-
-            c = *p;
-            *p = 0;
-            TTF_SizeUTF8(font, markedText, &w, 0);
-            cursorRect.x += w;
-            *p = c;
-        }
-        SDL_Surface *textSur = TTF_RenderUTF8_Blended(font, markedText, textColor);
-        SDL_Rect dest = {markedRect.x, markedRect.y, textSur->w, textSur->h };
-        TTF_SizeUTF8(font, markedText, &w, &h);
-        SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer,textSur);
-        SDL_FreeSurface(textSur);
-
-        SDL_RenderCopy(renderer,texture,NULL,&dest);
-        SDL_DestroyTexture(texture);
-#endif
-
-        underlineRect = markedRect;
-        underlineRect.y += (h - 2);
-        underlineRect.h = 2;
-        underlineRect.w = w;
-
-        SDL_SetRenderDrawColor(renderer, 0,0,0,0);
-        SDL_RenderFillRect(renderer,&markedRect);
-    }
-
-    SDL_SetRenderDrawColor(renderer, 0,0,0,0);
-    SDL_RenderFillRect(renderer,&cursorRect);
-
-    SDL_SetTextInputRect(&markedRect);
-}
-
-void Redraw() {
-    int i;
-    for (i = 0; i < state->num_windows; ++i) {
-        SDL_Renderer *renderer = state->renderers[i];
-        if (state->windows[i] == NULL)
-            continue;
-        SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
-        SDL_RenderClear(renderer);
-
-        _Redraw(renderer);
-
-        SDL_RenderPresent(renderer);
-    }
-}
-
-int main(int argc, char *argv[]) {
-    int i, done;
-    SDL_Event event;
-    const char *fontname = DEFAULT_FONT;
-
-    /* Enable standard application logging */
-    SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
-
-    /* Initialize test framework */
-    state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
-    if (!state) {
-        return 1;
-    }
-    for (i = 1; i < argc;i++) {
-        SDLTest_CommonArg(state, i);
-    }
-    for (argc--, argv++; argc > 0; argc--, argv++)
-    {
-        if (strcmp(argv[0], "--help") == 0) {
-            usage();
-            return 0;
-        }
-
-        else if (strcmp(argv[0], "--font") == 0)
-        {
-            argc--;
-            argv++;
-
-            if (argc > 0)
-                fontname = argv[0];
-            else {
-                usage();
-                return 0;
-            }
-        }
-    }
-
-    if (!SDLTest_CommonInit(state)) {
-        return 2;
-    }
-
-
-#ifdef HAVE_SDL_TTF
-    /* Initialize fonts */
-    TTF_Init();
-
-    font = TTF_OpenFont(fontname, DEFAULT_PTSIZE);
-    if (! font)
-    {
-        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Failed to find font: %s\n", TTF_GetError());
-        exit(-1);
-    }
-#endif
-
-    SDL_Log("Using font: %s\n", fontname);
-    atexit(SDL_Quit);
-
-    InitInput();
-    /* Create the windows and initialize the renderers */
-    for (i = 0; i < state->num_windows; ++i) {
-        SDL_Renderer *renderer = state->renderers[i];
-        SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_NONE);
-        SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
-        SDL_RenderClear(renderer);
-    }
-    Redraw();
-    /* Main render loop */
-    done = 0;
-    while (!done) {
-        /* Check for events */
-        while (SDL_PollEvent(&event)) {
-            SDLTest_CommonEvent(state, &event, &done);
-            switch(event.type) {
-                case SDL_KEYDOWN: {
-                    switch (event.key.keysym.sym)
-                    {
-                        case SDLK_RETURN:
-                             text[0]=0x00;
-                             Redraw();
-                             break;
-                        case SDLK_BACKSPACE:
-                             {
-                                 size_t textlen = SDL_strlen(text);
-
-                                 do {
-                                     if (textlen==0)
-                                     {
-                                         break;
-                                     }
-                                     if ((text[textlen-1] & 0x80) == 0x00)
-                                     {
-                                         /* One byte */
-                                         text[textlen-1]=0x00;
-                                         break;
-                                     }
-                                     if ((text[textlen-1] & 0xC0) == 0x80)
-                                     {
-                                         /* Byte from the multibyte sequence */
-                                         text[textlen-1]=0x00;
-                                         textlen--;
-                                     }
-                                     if ((text[textlen-1] & 0xC0) == 0xC0)
-                                     {
-                                         /* First byte of multibyte sequence */
-                                         text[textlen-1]=0x00;
-                                         break;
-                                     }
-                                 } while(1);
-
-                                 Redraw();
-                             }
-                             break;
-                    }
-
-                    if (done)
-                    {
-                        break;
-                    }
-
-                    SDL_Log("Keyboard: scancode 0x%08X = %s, keycode 0x%08X = %s\n",
-                            event.key.keysym.scancode,
-                            SDL_GetScancodeName(event.key.keysym.scancode),
-                            event.key.keysym.sym, SDL_GetKeyName(event.key.keysym.sym));
-                    break;
-
-                case SDL_TEXTINPUT:
-                    if (event.text.text[0] == '\0' || event.text.text[0] == '\n' ||
-                        markedRect.w < 0)
-                        break;
-
-                    SDL_Log("Keyboard: text input \"%s\"\n", event.text.text);
-
-                    if (SDL_strlen(text) + SDL_strlen(event.text.text) < sizeof(text))
-                        SDL_strlcat(text, event.text.text, sizeof(text));
-
-                    SDL_Log("text inputed: %s\n", text);
-
-                    /* After text inputed, we can clear up markedText because it */
-                    /* is committed */
-                    markedText[0] = 0;
-                    Redraw();
-                    break;
-
-                case SDL_TEXTEDITING:
-                    SDL_Log("text editing \"%s\", selected range (%d, %d)\n",
-                            event.edit.text, event.edit.start, event.edit.length);
-
-                    strcpy(markedText, event.edit.text);
-                    cursor = event.edit.start;
-                    Redraw();
-                    break;
-                }
-                break;
-
-            }
-        }
-    }
-    CleanupVideo();
-    SDLTest_CommonQuit(state);
-    return 0;
-}
-
-
-/* vi: set ts=4 sw=4 expandtab: */

+ 0 - 0
jni/SDL2-2.0.4/.hg_archival.txt → jni/SDL2-2.0.5/.hg_archival.txt


+ 0 - 0
jni/SDL2-2.0.4/.hgignore → jni/SDL2-2.0.5/.hgignore


+ 0 - 0
jni/SDL2-2.0.4/.hgtags → jni/SDL2-2.0.5/.hgtags


+ 1 - 1
jni/SDL2-2.0.4/Android.mk → jni/SDL2-2.0.5/Android.mk

@@ -49,7 +49,7 @@ LOCAL_SRC_FILES := \
 LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
 LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -llog -landroid
 
-# include $(BUILD_SHARED_LIBRARY)
+include $(BUILD_SHARED_LIBRARY)
 
 ###########################
 #

+ 1 - 1
jni/SDL2-2.0.4/BUGS.txt → jni/SDL2-2.0.5/BUGS.txt

@@ -1,7 +1,7 @@
 
 Bugs are now managed in the SDL bug tracker, here:
 
-    http://bugzilla.libsdl.org/
+    https://bugzilla.libsdl.org/
 
 You may report bugs there, and search to see if a given issue has already
  been reported, discussed, and maybe even fixed.

+ 125 - 37
jni/SDL2-2.0.4/CMakeLists.txt → jni/SDL2-2.0.5/CMakeLists.txt

@@ -2,8 +2,19 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
   message(FATAL_ERROR "Prevented in-tree built. Please create a build directory outside of the SDL source code and call cmake from there")
 endif()
 
-cmake_minimum_required(VERSION 2.8)
+cmake_minimum_required(VERSION 2.8.5)
 project(SDL2 C)
+
+# !!! FIXME: this should probably do "MACOSX_RPATH ON" as a target property
+# !!! FIXME:  for the SDL2 shared library (so you get an
+# !!! FIXME:  install_name ("soname") of "@rpath/libSDL-whatever.dylib"
+# !!! FIXME:  instead of "/usr/local/lib/libSDL-whatever.dylib"), but I'm
+# !!! FIXME:  punting for now and leaving the existing behavior. Until this
+# !!! FIXME:  properly resolved, this line silences a warning in CMake 3.0+.
+# !!! FIXME:  remove it and this comment entirely once the problem is
+# !!! FIXME:  properly resolved.
+#cmake_policy(SET CMP0042 OLD)
+
 include(CheckFunctionExists)
 include(CheckLibraryExists)
 include(CheckIncludeFiles)
@@ -15,6 +26,7 @@ include(CheckTypeSize)
 include(CheckStructHasMember)
 include(CMakeDependentOption)
 include(FindPkgConfig)
+include(GNUInstallDirs)
 set(CMAKE_MODULE_PATH "${SDL2_SOURCE_DIR}/cmake")
 include(${SDL2_SOURCE_DIR}/cmake/macros.cmake)
 include(${SDL2_SOURCE_DIR}/cmake/sdlchecks.cmake)
@@ -29,9 +41,9 @@ include(${SDL2_SOURCE_DIR}/cmake/sdlchecks.cmake)
 # set SDL_BINARY_AGE and SDL_INTERFACE_AGE to 0.
 set(SDL_MAJOR_VERSION 2)
 set(SDL_MINOR_VERSION 0)
-set(SDL_MICRO_VERSION 4)
-set(SDL_INTERFACE_AGE 0)
-set(SDL_BINARY_AGE 4)
+set(SDL_MICRO_VERSION 5)
+set(SDL_INTERFACE_AGE 1)
+set(SDL_BINARY_AGE 5)
 set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
 
 # Calculate a libtool-like version number
@@ -147,8 +159,10 @@ endif()
 
 # Default flags, if not set otherwise
 if("$ENV{CFLAGS}" STREQUAL "")
-  if(USE_GCC OR USE_CLANG)
-    set(CMAKE_C_FLAGS "-g -O3")
+  if(CMAKE_BUILD_TYPE STREQUAL "")
+    if(USE_GCC OR USE_CLANG)
+      set(CMAKE_C_FLAGS "-g -O3")
+    endif()
   endif()
 else()
   set(CMAKE_C_FLAGS "$ENV{CFLAGS}")
@@ -192,7 +206,7 @@ set(ORIG_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
 if(CYGWIN)
   # We build SDL on cygwin without the UNIX emulation layer
   include_directories("-I/usr/include/mingw")
-  set(CMAKE_REQUIRED_FLAGS "-mno-cygwin")
+  set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -mno-cygwin")
   check_c_source_compiles("int main(int argc, char **argv) {}"
     HAVE_GCC_NO_CYGWIN)
   set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS})
@@ -299,6 +313,8 @@ set_option(VIDEO_VIVANTE       "Use Vivante EGL video driver" ${UNIX_SYS})
 set(SDL_SHARED ${SDL_SHARED_ENABLED_BY_DEFAULT} CACHE BOOL "Build a shared version of the library")
 set(SDL_STATIC ON CACHE BOOL "Build a static version of the library")
 
+dep_option(SDL_STATIC_PIC      "Static version of the library should be built with Position Independent Code" OFF "SDL_STATIC" OFF)
+
 # General source files
 file(GLOB SOURCE_FILES
   ${SDL2_SOURCE_DIR}/src/*.c
@@ -334,6 +350,24 @@ set(HAVE_ASSERTIONS ${ASSERTIONS})
 
 # Compiler option evaluation
 if(USE_GCC OR USE_CLANG)
+  # Check for -Wall first, so later things can override pieces of it.
+  check_c_compiler_flag(-Wall HAVE_GCC_WALL)
+  if(HAVE_GCC_WALL)
+    list(APPEND EXTRA_CFLAGS "-Wall")
+    if(HAIKU)
+      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar")
+    endif()
+  endif()
+
+  check_c_compiler_flag(-Wdeclaration-after-statement HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
+  if(HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
+    check_c_compiler_flag(-Werror=declaration-after-statement HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT)
+    if(HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT)
+      list(APPEND EXTRA_CFLAGS "-Werror=declaration-after-statement")
+    endif()
+    list(APPEND EXTRA_CFLAGS "-Wdeclaration-after-statement")
+  endif()
+
   if(DEPENDENCY_TRACKING)
     check_c_source_compiles("
         #if !defined(__GNUC__) || __GNUC__ < 3
@@ -375,13 +409,6 @@ if(USE_GCC OR USE_CLANG)
   endif()
   set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS})
 
-  check_c_compiler_flag(-Wall HAVE_GCC_WALL)
-  if(HAVE_GCC_WALL)
-    list(APPEND EXTRA_CFLAGS "-Wall")
-    if(HAIKU)
-      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar")
-    endif()
-  endif()
   check_c_compiler_flag(-Wshadow HAVE_GCC_WSHADOW)
   if(HAVE_GCC_WSHADOW)
     list(APPEND EXTRA_CFLAGS "-Wshadow")
@@ -770,6 +797,16 @@ if(EMSCRIPTEN)
     set(SOURCE_FILES ${SOURCE_FILES} ${EM_POWER_SOURCES})
     set(HAVE_SDL_POWER TRUE)
   endif()
+  if(SDL_TIMERS)
+    set(SDL_TIMER_UNIX 1)
+    file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/unix/*.c)
+    set(SOURCE_FILES ${SOURCE_FILES} ${TIMER_SOURCES})
+    set(HAVE_SDL_TIMERS TRUE)
+
+    if(CLOCK_GETTIME)
+      set(HAVE_CLOCK_GETTIME 1)
+    endif()
+  endif()
   if(SDL_VIDEO)
     set(SDL_VIDEO_DRIVER_EMSCRIPTEN 1)
     file(GLOB EM_VIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/emscripten/*.c)
@@ -863,8 +900,24 @@ elseif(UNIX AND NOT APPLE)
 
     check_include_file("libudev.h" HAVE_LIBUDEV_H)
 
-    # !!! FIXME: this needs pkg-config to find the include path, I think.
-    check_include_file("dbus/dbus.h" HAVE_DBUS_DBUS_H)
+    if(PKG_CONFIG_FOUND)
+      pkg_search_module(DBUS dbus-1 dbus)
+      if(DBUS_FOUND)
+        set(HAVE_DBUS_DBUS_H TRUE)
+        include_directories(${DBUS_INCLUDE_DIRS})
+        list(APPEND EXTRA_LIBS ${DBUS_LIBRARIES})
+      endif()
+
+      pkg_search_module(IBUS ibus-1.0 ibus)
+      if(IBUS_FOUND)
+        set(HAVE_IBUS_IBUS_H TRUE)
+        include_directories(${IBUS_INCLUDE_DIRS})
+        list(APPEND EXTRA_LIBS ${IBUS_LIBRARIES})
+      endif()
+    endif()
+
+    check_include_file("fcitx/frontend.h" HAVE_FCITX_FRONTEND_H)
+
   endif()
 
   if(INPUT_TSLIB)
@@ -933,7 +986,14 @@ elseif(UNIX AND NOT APPLE)
   if(RPATH)
     set(SDL_RLD_FLAGS "")
     if(BSDI OR FREEBSD OR LINUX OR NETBSD)
-      set(SDL_RLD_FLAGS "-Wl,-rpath,\${libdir}")
+      set(CMAKE_REQUIRED_FLAGS "-Wl,--enable-new-dtags")
+      check_c_compiler_flag("" HAVE_ENABLE_NEW_DTAGS)
+      set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS})
+      if(HAVE_ENABLE_NEW_DTAGS)
+        set(SDL_RLD_FLAGS "-Wl,-rpath,\${libdir} -Wl,--enable-new-dtags")
+      else()
+        set(SDL_RLD_FLAGS "-Wl,-rpath,\${libdir}")
+      endif()
     elseif(SOLARIS)
       set(SDL_RLD_FLAGS "-R\${libdir}")
     endif()
@@ -1105,7 +1165,7 @@ elseif(WINDOWS)
     set(SOURCE_FILES ${SOURCE_FILES} ${JOYSTICK_SOURCES})
     if(HAVE_DINPUT_H)
       set(SDL_JOYSTICK_DINPUT 1)
-      list(APPEND EXTRA_LIBS dinput8 dxguid)
+      list(APPEND EXTRA_LIBS dinput8)
       if(CMAKE_COMPILER_IS_MINGW)
         list(APPEND EXTRA_LIBS dxerr8)
       elseif (NOT USE_WINSDK_DIRECTX)
@@ -1163,16 +1223,20 @@ elseif(APPLE)
 
   if(SDL_AUDIO)
     set(SDL_AUDIO_DRIVER_COREAUDIO 1)
-    file(GLOB AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/coreaudio/*.c)
+    file(GLOB AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/coreaudio/*.m)
     set(SOURCE_FILES ${SOURCE_FILES} ${AUDIO_SOURCES})
     set(HAVE_SDL_AUDIO TRUE)
     set(SDL_FRAMEWORK_COREAUDIO 1)
-    set(SDL_FRAMEWORK_AUDIOUNIT 1)
+    set(SDL_FRAMEWORK_AUDIOTOOLBOX 1)
   endif()
 
   if(SDL_JOYSTICK)
     set(SDL_JOYSTICK_IOKIT 1)
-    file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/darwin/*.c)
+    if (IOS)
+      file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/iphoneos/*.m)
+    else()
+      file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/darwin/*.c)
+    endif()
     set(SOURCE_FILES ${SOURCE_FILES} ${JOYSTICK_SOURCES})
     set(HAVE_SDL_JOYSTICK TRUE)
     set(SDL_FRAMEWORK_IOKIT 1)
@@ -1181,7 +1245,12 @@ elseif(APPLE)
 
   if(SDL_HAPTIC)
     set(SDL_HAPTIC_IOKIT 1)
-    file(GLOB HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/darwin/*.c)
+    if (IOS)
+      file(GLOB POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/dummy/*.c)
+      set(SDL_HAPTIC_DUMMY 1)
+    else()
+      file(GLOB HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/darwin/*.c)
+    endif()
     set(SOURCE_FILES ${SOURCE_FILES} ${HAPTIC_SOURCES})
     set(HAVE_SDL_HAPTIC TRUE)
     set(SDL_FRAMEWORK_IOKIT 1)
@@ -1193,7 +1262,11 @@ elseif(APPLE)
 
   if(SDL_POWER)
     set(SDL_POWER_MACOSX 1)
-    file(GLOB POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/macosx/*.c)
+    if (IOS)
+      file(GLOB POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/uikit/*.m)
+    else()
+      file(GLOB POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/macosx/*.c)
+    endif()
     set(SOURCE_FILES ${SOURCE_FILES} ${POWER_SOURCES})
     set(HAVE_SDL_POWER TRUE)
     set(SDL_FRAMEWORK_CARBON 1)
@@ -1240,19 +1313,25 @@ elseif(APPLE)
     find_library(COREAUDIO CoreAudio)
     list(APPEND EXTRA_LIBS ${COREAUDIO})
   endif()
-  if(SDL_FRAMEWORK_AUDIOUNIT)
-    find_library(AUDIOUNIT AudioUnit)
-    list(APPEND EXTRA_LIBS ${AUDIOUNIT})
+  if(SDL_FRAMEWORK_AUDIOTOOLBOX)
+    find_library(AUDIOTOOLBOX AudioToolbox)
+    list(APPEND EXTRA_LIBS ${AUDIOTOOLBOX})
   endif()
 
   # iOS hack needed - http://code.google.com/p/ios-cmake/ ?
   if(SDL_VIDEO)
-    CheckCOCOA()
-    if(VIDEO_OPENGL)
-      set(SDL_VIDEO_OPENGL 1)
-      set(SDL_VIDEO_OPENGL_CGL 1)
-      set(SDL_VIDEO_RENDER_OGL 1)
-      set(HAVE_VIDEO_OPENGL TRUE)
+    if (IOS)
+      set(SDL_VIDEO_DRIVER_UIKIT 1)
+      file(GLOB UIKITVIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/uikit/*.m)
+      set(SOURCE_FILES ${SOURCE_FILES} ${UIKITVIDEO_SOURCES})
+    else()
+      CheckCOCOA()
+      if(VIDEO_OPENGL)
+        set(SDL_VIDEO_OPENGL 1)
+        set(SDL_VIDEO_OPENGL_CGL 1)
+        set(SDL_VIDEO_RENDER_OGL 1)
+        set(HAVE_VIDEO_OPENGL TRUE)
+      endif()
     endif()
   endif()
 
@@ -1439,6 +1518,9 @@ message(STATUS " EXTRA_LIBS:    ${EXTRA_LIBS}")
 message(STATUS "")
 message(STATUS " Build Shared Library: ${SDL_SHARED}")
 message(STATUS " Build Static Library: ${SDL_STATIC}")
+if(SDL_STATIC)
+    message(STATUS " Build Static Library with Position Independent Code: ${SDL_STATIC_PIC}")
+endif()
 message(STATUS "")
 if(UNIX)
   message(STATUS "If something was not detected, although the libraries")
@@ -1455,7 +1537,7 @@ add_library(SDL2main STATIC ${SDLMAIN_SOURCES})
 set(_INSTALL_LIBS "SDL2main")
 
 if(SDL_SHARED)
-  add_library(SDL2 SHARED ${SOURCE_FILES})
+  add_library(SDL2 SHARED ${SOURCE_FILES} ${VERSION_SOURCES})
   if(UNIX)
     set_target_properties(SDL2 PROPERTIES
       VERSION ${LT_VERSION}
@@ -1481,6 +1563,7 @@ if(SDL_STATIC)
   set (BUILD_SHARED_LIBS FALSE)
   add_library(SDL2-static STATIC ${SOURCE_FILES})
   set_target_properties(SDL2-static PROPERTIES OUTPUT_NAME "SDL2")
+  set_target_properties(SDL2-static PROPERTIES POSITION_INDEPENDENT_CODE ${SDL_STATIC_PIC})
   if(MSVC)
     set_target_properties(SDL2-static PROPERTIES LINK_FLAGS_RELEASE "/NODEFAULTLIB")
     set_target_properties(SDL2-static PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB")
@@ -1507,12 +1590,17 @@ endforeach()
 list(APPEND INCLUDE_FILES ${BIN_INCLUDE_FILES})
 install(FILES ${INCLUDE_FILES} DESTINATION include/SDL2)
 
-if(NOT WINDOWS OR CYGWIN)
+if(NOT (WINDOWS OR CYGWIN))
   if(SDL_SHARED)
+    if (APPLE)
+        set(SOEXT "dylib")
+    else()
+        set(SOEXT "so")
+    endif()
     install(CODE "
       execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
-      \"libSDL2-2.0.so\" \"libSDL2.so\")")
-    install(FILES ${SDL2_BINARY_DIR}/libSDL2.so DESTINATION "lib${LIB_SUFFIX}")
+      \"libSDL2-2.0.${SOEXT}\" \"libSDL2.${SOEXT}\")")
+    install(FILES ${SDL2_BINARY_DIR}/libSDL2.${SOEXT} DESTINATION "lib${LIB_SUFFIX}")
   endif()
   if(FREEBSD)
     # FreeBSD uses ${PREFIX}/libdata/pkgconfig
@@ -1523,7 +1611,7 @@ if(NOT WINDOWS OR CYGWIN)
   endif()
   install(PROGRAMS ${SDL2_BINARY_DIR}/sdl2-config DESTINATION bin)
   # TODO: what about the .spec file? Is it only needed for RPM creation?
-  install(FILES "${SDL2_SOURCE_DIR}/sdl2.m4" DESTINATION "share/aclocal")
+  install(FILES "${SDL2_SOURCE_DIR}/sdl2.m4" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/aclocal")
 endif()
 
 ##### Uninstall target #####

+ 0 - 0
jni/SDL2-2.0.4/COPYING.txt → jni/SDL2-2.0.5/COPYING.txt


+ 0 - 0
jni/SDL2-2.0.4/CREDITS.txt → jni/SDL2-2.0.5/CREDITS.txt


+ 0 - 0
jni/SDL2-2.0.4/INSTALL.txt → jni/SDL2-2.0.5/INSTALL.txt


+ 9 - 2
jni/SDL2-2.0.4/Makefile.in → jni/SDL2-2.0.5/Makefile.in

@@ -3,6 +3,7 @@
 top_builddir = .
 srcdir  = @srcdir@
 objects = build
+gen = gen
 prefix = @prefix@
 exec_prefix = @exec_prefix@
 bindir	= @bindir@
@@ -31,6 +32,8 @@ WINDRES	= @WINDRES@
 
 TARGET  = libSDL2.la
 OBJECTS = @OBJECTS@
+GEN_HEADERS = @GEN_HEADERS@
+GEN_OBJECTS = @GEN_OBJECTS@
 VERSION_OBJECTS = @VERSION_OBJECTS@
 
 SDLMAIN_TARGET = libSDL2main.a
@@ -39,6 +42,8 @@ SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@
 SDLTEST_TARGET = libSDL2_test.a
 SDLTEST_OBJECTS = @SDLTEST_OBJECTS@
 
+WAYLAND_SCANNER = @WAYLAND_SCANNER@
+
 SRC_DIST = *.txt acinclude Android.mk autogen.sh android-project build-scripts cmake cmake_uninstall.cmake.in configure configure.in debian docs include Makefile.* sdl2-config.cmake.in sdl2-config.in sdl2.m4 sdl2.pc.in SDL2.spec.in src test VisualC.html VisualC VisualC-WinRT Xcode Xcode-iOS
 GEN_DIST = SDL2.spec
 
@@ -48,6 +53,7 @@ RUN_CMD_CC     = @echo "  CC    " $@;
 RUN_CMD_CXX    = @echo "  CXX   " $@;
 RUN_CMD_LTLINK = @echo "  LTLINK" $@;
 RUN_CMD_RANLIB = @echo "  RANLIB" $@;
+RUN_CMD_GEN    = @echo "  GEN   " $@;
 LIBTOOL += --quiet
 endif
 
@@ -137,8 +143,8 @@ update-revision:
 
 .PHONY: all update-revision install install-bin install-hdrs install-lib install-data uninstall uninstall-bin uninstall-hdrs uninstall-lib uninstall-data clean distclean dist $(OBJECTS:.lo=.d)
 
-$(objects)/$(TARGET): $(OBJECTS) $(VERSION_OBJECTS)
-	$(RUN_CMD_LTLINK)$(LIBTOOL) --tag=CC --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
+$(objects)/$(TARGET): $(GEN_HEADERS) $(GEN_OBJECTS) $(OBJECTS) $(VERSION_OBJECTS)
+	$(RUN_CMD_LTLINK)$(LIBTOOL) --tag=CC --mode=link $(CC) -o $@ $(OBJECTS) $(GEN_OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
 
 $(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS)
 	$(RUN_CMD_AR)$(AR) cru $@ $(SDLMAIN_OBJECTS)
@@ -200,6 +206,7 @@ uninstall-data:
 
 clean:
 	rm -rf $(objects)
+	rm -rf $(gen)
 	if test -f test/Makefile; then (cd test; $(MAKE) $@); fi
 
 distclean: clean

+ 0 - 0
jni/SDL2-2.0.4/Makefile.minimal → jni/SDL2-2.0.5/Makefile.minimal


+ 1 - 1
jni/SDL2-2.0.4/Makefile.pandora → jni/SDL2-2.0.5/Makefile.pandora

@@ -19,7 +19,7 @@ SOURCES = ./src/*.c ./src/audio/*.c ./src/cpuinfo/*.c ./src/events/*.c \
 	./src/thread/pthread/SDL_systhread.c ./src/thread/pthread/SDL_syssem.c \
 	./src/thread/pthread/SDL_sysmutex.c ./src/thread/pthread/SDL_syscond.c \
 	./src/joystick/linux/*.c ./src/haptic/linux/*.c ./src/timer/unix/*.c \
-	./src/atomic/linux/*.c ./src/filesystem/unix/*.c \
+	./src/atomic/*.c ./src/filesystem/unix/*.c \
 	./src/video/pandora/SDL_pandora.o ./src/video/pandora/SDL_pandora_events.o ./src/video/x11/*.c 
 	
 

+ 1 - 0
jni/SDL2-2.0.4/Makefile.psp → jni/SDL2-2.0.5/Makefile.psp

@@ -49,6 +49,7 @@ OBJS= src/SDL.o \
       src/stdlib/SDL_stdlib.o \
       src/stdlib/SDL_string.o \
       src/thread/SDL_thread.o \
+      src/thread/generic/SDL_systls.o \
       src/thread/psp/SDL_syssem.o \
       src/thread/psp/SDL_systhread.o \
       src/thread/psp/SDL_sysmutex.o \

+ 5 - 5
jni/SDL2-2.0.4/Makefile.wiz → jni/SDL2-2.0.5/Makefile.wiz

@@ -9,8 +9,8 @@ STRIP = $(WIZSDK)/bin/arm-openwiz-linux-gnu-strip
 
 CFLAGS  = -Wall -fPIC -I./include -I$(WIZSDK)/include -DWIZ_GLES_LITE
 
-TARGET_STATIC  = libSDL13.a
-TARGET_SHARED  = libSDL13.so
+TARGET_STATIC  = libSDL2.a
+TARGET_SHARED  = libSDL2.so
 
 SOURCES = ./src/*.c ./src/audio/*.c ./src/cpuinfo/*.c ./src/events/*.c \
 	./src/file/*.c ./src/stdlib/*.c ./src/thread/*.c ./src/timer/*.c ./src/video/*.c \
@@ -43,7 +43,7 @@ clean:
 
 install:
 	mkdir -p $(WIZSDK)/lib
-	mkdir -p $(WIZSDK)/include/SDL13
+	mkdir -p $(WIZSDK)/include/SDL2
 	cp -f $(TARGET_STATIC) $(WIZSDK)/lib
 	cp -f $(TARGET_SHARED).0.0.1 $(WIZSDK)/lib
 	rm -f $(WIZSDK)/lib/$(TARGET_SHARED).0 $(WIZSDK)/lib/$(TARGET_SHARED)
@@ -57,5 +57,5 @@ install:
 	ln -s ../../toolchain/libs/$(TARGET_SHARED).0 ../../toolchain/libs/$(TARGET_SHARED)
 
 	cp $(TARGET_SHARED).0.0.1 ../nehe_demos/build/$(TARGET_SHARED).0
-	cp -f include/*.h $(WIZSDK)/include/SDL13/
-	cp -f include/*.h ../../toolchain/include/SDL13/
+	cp -f include/*.h $(WIZSDK)/include/SDL2/
+	cp -f include/*.h ../../toolchain/include/SDL2/

+ 2 - 2
jni/SDL2-2.0.4/README-SDL.txt → jni/SDL2-2.0.5/README-SDL.txt

@@ -2,8 +2,8 @@
 Please distribute this file with the SDL runtime environment:
 
 The Simple DirectMedia Layer (SDL for short) is a cross-platform library
-designed to make it easy to write multi-media software, such as games and
-emulators.
+designed to make it easy to write multi-media software, such as games
+and emulators.
 
 The Simple DirectMedia Layer library source code is available from:
 http://www.libsdl.org/

+ 0 - 0
jni/SDL2-2.0.4/README.txt → jni/SDL2-2.0.5/README.txt


+ 0 - 0
jni/SDL2-2.0.4/SDL.tag → jni/SDL2-2.0.5/SDL.tag


+ 0 - 0
jni/SDL2-2.0.4/SDL2.spec.in → jni/SDL2-2.0.5/SDL2.spec.in


+ 0 - 0
jni/SDL2-2.0.4/TODO.txt → jni/SDL2-2.0.5/TODO.txt


+ 2 - 2
jni/SDL2-2.0.4/VisualC.html → jni/SDL2-2.0.5/VisualC.html

@@ -21,7 +21,7 @@
 		</P>
 		<P>
 			There are different solution files for the various
-			versions of the IDE. Please use the appropiate version
+			versions of the IDE. Please use the appropriate version
 			2008, 2010, 2012 or 2013.
 		</P>
 		<P>
@@ -101,7 +101,7 @@
 				files to project")
 			</P>
 		<P><STRONG><FONT color="#009900">Instead of adding the files to your project it is more 
-					desireable to add them to the linker options: Project|Properties|Linker|Command 
+					desirable to add them to the linker options: Project|Properties|Linker|Command 
 					Line and type the names of the libraries to link with in the "Additional 
 					Options:" box.&nbsp; Note: This must be done&nbsp;for&nbsp;each&nbsp;build 
 					configuration (e.g. Release,Debug).</FONT></STRONG></P>

+ 63 - 0
jni/SDL2-2.0.4/WhatsNew.txt → jni/SDL2-2.0.5/WhatsNew.txt

@@ -1,6 +1,69 @@
 
 This is a list of major changes in SDL's version history.
 
+---------------------------------------------------------------------------
+2.0.5:
+---------------------------------------------------------------------------
+
+General:
+* Implemented audio capture support for some platforms
+* Added SDL_DequeueAudio() to retrieve audio when buffer queuing is turned on for audio capture
+* Added events for dragging and dropping text
+* Added events for dragging and dropping multiple items
+* By default the click raising a window will not be delivered to the SDL application. You can set the hint SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH to "1" to allow that click through to the window.
+* Saving a surface with an alpha channel as a BMP will use a newer BMP format that supports alpha information. You can set the hint SDL_HINT_BMP_SAVE_LEGACY_FORMAT to "1" to use the old format.
+* Added SDL_GetHintBoolean() to get the boolean value of a hint
+* Added SDL_RenderSetIntegerScale() to set whether to smoothly scale or use integral multiples of the viewport size when scaling the rendering output
+* Added SDL_CreateRGBSurfaceWithFormat() and SDL_CreateRGBSurfaceWithFormatFrom() to create an SDL surface with a specific pixel format
+* Added SDL_GetDisplayUsableBounds() which returns the area usable for windows. For example, on Mac OS X, this subtracts the area occupied by the menu bar and dock.
+* Added SDL_GetWindowBordersSize() which returns the size of the window's borders around the client area
+* Added a window event SDL_WINDOWEVENT_HIT_TEST when a window had a hit test that wasn't SDL_HITTEST_NORMAL (e.g. in the title bar or window frame)
+* Added SDL_SetWindowResizable() to change whether a window is resizable
+* Added SDL_SetWindowOpacity() and SDL_GetWindowOpacity() to affect the window transparency
+* Added SDL_SetWindowModalFor() to set a window as modal for another window
+* Added support for AUDIO_U16LSB and AUDIO_U16MSB to SDL_MixAudioFormat()
+* Fixed flipped images when reading back from target textures when using the OpenGL renderer
+* Fixed texture color modulation with SDL_BLENDMODE_NONE when using the OpenGL renderer
+* Fixed bug where the alpha value of colorkeys was ignored when blitting in some cases
+
+Windows:
+* Added a hint SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING to prevent SDL from raising a debugger exception to name threads. This exception can cause problems with .NET applications when running under a debugger.
+* The hint SDL_HINT_THREAD_STACK_SIZE is now supported on Windows
+* Fixed XBox controller triggers automatically being pulled at startup
+* The first icon from the executable is used as the default window icon at runtime
+* Fixed SDL log messages being printed twice if SDL was built with C library support
+* Reset dead keys when the SDL window loses focus, so dead keys pressed in SDL applications don't affect text input into other applications.
+
+Mac OS X:
+* Fixed selecting the dummy video driver
+* The caps lock key now generates a pressed event when pressed and a released event when released, instead of a press/release event pair when pressed.
+* Fixed mouse wheel events on Mac OS X 10.12
+* The audio driver has been updated to use AVFoundation for better compatibility with newer versions of Mac OS X
+
+Linux:
+* Added support for the Fcitx IME
+* Added a window event SDL_WINDOWEVENT_TAKE_FOCUS when a window manager asks the SDL window whether it wants to take focus.
+* Refresh rates are now rounded instead of truncated, e.g. 59.94 Hz is rounded up to 60 Hz instead of 59.
+* Added initial support for touchscreens on Raspberry Pi
+
+OpenBSD:
+* SDL_GetBasePath() is now implemented on OpenBSD
+
+iOS:
+* Added support for dynamically loaded objects on iOS 8 and newer
+
+tvOS:
+* Added support for Apple TV
+* Added a hint SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION to control whether he Apple TV remote's joystick axes will automatically match the rotation of the remote.  
+
+Android:
+* Fixed SDL not resizing window when Android screen resolution changes
+* Corrected the joystick Z axis reporting for the accelerometer
+
+Emscripten (running in a web browser):
+* Many bug fixes and improvements
+
+
 ---------------------------------------------------------------------------
 2.0.4:
 ---------------------------------------------------------------------------

+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/Default.png → jni/SDL2-2.0.5/Xcode-iOS/Demos/Default.png


+ 257 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj → jni/SDL2-2.0.5/Xcode-iOS/Demos/Demos.xcodeproj/project.pbxproj

@@ -10,6 +10,27 @@
 		1D3623EC0D0F72F000981E51 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
 		1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
 		1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FA30DEB01BBF5A8F009C397F /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0060E26BC0500F39101 /* common.c */; };
+		FA30DEB11BBF5A93009C397F /* happy.c in Sources */ = {isa = PBXBuildFile; fileRef = FD77A0080E26BC0500F39101 /* happy.c */; };
+		FA30DEB31BBF5AD7009C397F /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDB651CC0E43D19800F688B5 /* icon.bmp */; };
+		FA30DEB41BBF5ADD009C397F /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = FD925B180E0F276600E92347 /* Icon.png */; };
+		FA30DEB61BBF5AE6009C397F /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = FD787AA00E22A5CC003E8E36 /* Default.png */; };
+		FA30DEB71BBF5BB8009C397F /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA30DEAC1BBF59D9009C397F /* libSDL2.a */; };
+		FA30DEC81BBF5C14009C397F /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
+		FA30DEC91BBF5C14009C397F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D7220E12D31800247964 /* AudioToolbox.framework */; };
+		FA30DECA1BBF5C14009C397F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96EDF0DEFC9DC00FAF19F /* QuartzCore.framework */; };
+		FA30DECB1BBF5C14009C397F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDB96ED30DEFC9C700FAF19F /* OpenGLES.framework */; };
+		FA30DECC1BBF5C14009C397F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */; };
+		FA30DECD1BBF5C14009C397F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
+		FA30DECE1BBF5C14009C397F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
+		FA30DECF1BBF5C14009C397F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDF0D71D0E12D2AB00247964 /* CoreAudio.framework */; };
+		FA86C0371D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C0381D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C0391D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C03A1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C03B1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C03C1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
+		FA86C03D1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */; };
 		FA8B4BA31967070A00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
 		FA8B4BA41967071300F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
 		FA8B4BA51967071A00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
@@ -17,6 +38,14 @@
 		FA8B4BA71967072800F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
 		FA8B4BA81967073400F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
 		FA8B4BA91967073D00F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */; };
+		FABA34D41D8B5E5600915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34D61D8B5E5A00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34D81D8B5E7700915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D71D8B5E7700915323 /* AVFoundation.framework */; };
+		FABA34D91D8B5E7B00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34DA1D8B5E7F00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34DB1D8B5E8500915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34DC1D8B5E8900915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
+		FABA34DD1D8B5E8D00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34D31D8B5E5600915323 /* AVFoundation.framework */; };
 		FAE0E96A1BAF96A00098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
 		FAE0E96C1BAF96A90098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
 		FAE0E96D1BAF96AF0098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAE0E9691BAF96A00098DFA4 /* GameController.framework */; };
@@ -168,6 +197,20 @@
 			remoteGlobalIDString = FD6526620DE8FCCB002AD96B;
 			remoteInfo = libSDL;
 		};
+		FA30DEAB1BBF59D9009C397F /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = FD1B48920E313154007AB34E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = FAB598141BB5C1B100BE72C5;
+			remoteInfo = "libSDL-tv";
+		};
+		FA30DEAE1BBF5A69009C397F /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = FD1B48920E313154007AB34E /* SDL.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = FAB598131BB5C1B100BE72C5;
+			remoteInfo = "libSDL-tv";
+		};
 		FD1B489D0E313154007AB34E /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = FD1B48920E313154007AB34E /* SDL.xcodeproj */;
@@ -183,7 +226,11 @@
 		1D6058910D05DD3D006BFB54 /* Rectangles.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rectangles.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		FA30DE961BBF59D9009C397F /* Happy-TV.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Happy-TV.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = "iOS Launch Screen.storyboard"; sourceTree = "<group>"; };
 		FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+		FABA34D31D8B5E5600915323 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		FABA34D71D8B5E7700915323 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
 		FAE0E9691BAF96A00098DFA4 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; };
 		FD15FCB20E086866003BDF25 /* Happy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Happy.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		FD1B48920E313154007AB34E /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = ../SDL/SDL.xcodeproj; sourceTree = SOURCE_ROOT; };
@@ -224,6 +271,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34D41D8B5E5600915323 /* AVFoundation.framework in Frameworks */,
 				FD1B48DD0E313255007AB34E /* libSDL2.a in Frameworks */,
 				FAE0E96A1BAF96A00098DFA4 /* GameController.framework in Frameworks */,
 				FA8B4BA31967070A00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -237,10 +285,28 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA30DE931BBF59D9009C397F /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA34D81D8B5E7700915323 /* AVFoundation.framework in Frameworks */,
+				FA30DEB71BBF5BB8009C397F /* libSDL2.a in Frameworks */,
+				FA30DEC81BBF5C14009C397F /* GameController.framework in Frameworks */,
+				FA30DEC91BBF5C14009C397F /* AudioToolbox.framework in Frameworks */,
+				FA30DECA1BBF5C14009C397F /* QuartzCore.framework in Frameworks */,
+				FA30DECB1BBF5C14009C397F /* OpenGLES.framework in Frameworks */,
+				FA30DECC1BBF5C14009C397F /* CoreGraphics.framework in Frameworks */,
+				FA30DECD1BBF5C14009C397F /* UIKit.framework in Frameworks */,
+				FA30DECE1BBF5C14009C397F /* Foundation.framework in Frameworks */,
+				FA30DECF1BBF5C14009C397F /* CoreAudio.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		FD15FCB00E086866003BDF25 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34D61D8B5E5A00915323 /* AVFoundation.framework in Frameworks */,
 				FD1B49980E313261007AB34E /* libSDL2.a in Frameworks */,
 				FAE0E96C1BAF96A90098DFA4 /* GameController.framework in Frameworks */,
 				FA8B4BA41967071300F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -258,6 +324,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34D91D8B5E7B00915323 /* AVFoundation.framework in Frameworks */,
 				FD1B499C0E313269007AB34E /* libSDL2.a in Frameworks */,
 				FAE0E96D1BAF96AF0098DFA4 /* GameController.framework in Frameworks */,
 				FA8B4BA51967071A00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -275,6 +342,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34DD1D8B5E8D00915323 /* AVFoundation.framework in Frameworks */,
 				FDB652000E43D1F300F688B5 /* libSDL2.a in Frameworks */,
 				FAE0E9711BAF96BB0098DFA4 /* GameController.framework in Frameworks */,
 				FA8B4BA91967073D00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -292,6 +360,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34DA1D8B5E7F00915323 /* AVFoundation.framework in Frameworks */,
 				FD1B499E0E31326C007AB34E /* libSDL2.a in Frameworks */,
 				FAE0E96E1BAF96B10098DFA4 /* GameController.framework in Frameworks */,
 				FA8B4BA61967072100F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -309,6 +378,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34DC1D8B5E8900915323 /* AVFoundation.framework in Frameworks */,
 				FD1B49A20E313273007AB34E /* libSDL2.a in Frameworks */,
 				FAE0E9701BAF96B80098DFA4 /* GameController.framework in Frameworks */,
 				FA8B4BA81967073400F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -326,6 +396,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34DB1D8B5E8500915323 /* AVFoundation.framework in Frameworks */,
 				FD1B49A00E313270007AB34E /* libSDL2.a in Frameworks */,
 				FAE0E96F1BAF96B50098DFA4 /* GameController.framework in Frameworks */,
 				FA8B4BA71967072800F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -352,6 +423,7 @@
 				FDF0D6A40E12D05400247964 /* Mixer.app */,
 				FDC52EDE0E2843D6008D768C /* Fireworks.app */,
 				FDB6520C0E43D1F300F688B5 /* Keyboard.app */,
+				FA30DE961BBF59D9009C397F /* Happy-TV.app */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -359,6 +431,7 @@
 		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
 			isa = PBXGroup;
 			children = (
+				FA86C0361D9765BA009CB637 /* iOS Launch Screen.storyboard */,
 				FD1B48920E313154007AB34E /* SDL.xcodeproj */,
 				FD77A0040E26BC0500F39101 /* src */,
 				29B97317FDCFA39411CA2CEA /* Resources */,
@@ -382,6 +455,8 @@
 		29B97323FDCFA39411CA2CEA /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				FABA34D71D8B5E7700915323 /* AVFoundation.framework */,
+				FABA34D31D8B5E5600915323 /* AVFoundation.framework */,
 				FAE0E9691BAF96A00098DFA4 /* GameController.framework */,
 				FA8B4BA21967070A00F8EB7C /* CoreMotion.framework */,
 				FDF0D7220E12D31800247964 /* AudioToolbox.framework */,
@@ -399,6 +474,7 @@
 			isa = PBXGroup;
 			children = (
 				FD1B489E0E313154007AB34E /* libSDL2.a */,
+				FA30DEAC1BBF59D9009C397F /* libSDL2.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -473,6 +549,24 @@
 			productReference = 1D6058910D05DD3D006BFB54 /* Rectangles.app */;
 			productType = "com.apple.product-type.application";
 		};
+		FA30DE951BBF59D9009C397F /* Happy-TV */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FA30DEAD1BBF59D9009C397F /* Build configuration list for PBXNativeTarget "Happy-TV" */;
+			buildPhases = (
+				FA30DE921BBF59D9009C397F /* Sources */,
+				FA30DE941BBF59D9009C397F /* Resources */,
+				FA30DE931BBF59D9009C397F /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				FA30DEAF1BBF5A69009C397F /* PBXTargetDependency */,
+			);
+			name = "Happy-TV";
+			productName = "Happy-TV";
+			productReference = FA30DE961BBF59D9009C397F /* Happy-TV.app */;
+			productType = "com.apple.product-type.application";
+		};
 		FD15FCB10E086866003BDF25 /* Happy */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = FD15FCB70E086867003BDF25 /* Build configuration list for PBXNativeTarget "Happy" */;
@@ -588,6 +682,14 @@
 			isa = PBXProject;
 			attributes = {
 				LastUpgradeCheck = 0630;
+				TargetAttributes = {
+					FA30DE951BBF59D9009C397F = {
+						CreatedOnToolsVersion = 7.1;
+					};
+					FDC52EC60E2843D6008D768C = {
+						ProvisioningStyle = Automatic;
+					};
+				};
 			};
 			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Demos" */;
 			compatibilityVersion = "Xcode 3.2";
@@ -598,6 +700,7 @@
 				Japanese,
 				French,
 				German,
+				Base,
 			);
 			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
 			projectDirPath = "";
@@ -611,6 +714,7 @@
 			targets = (
 				1D6058900D05DD3D006BFB54 /* Rectangles */,
 				FD15FCB10E086866003BDF25 /* Happy */,
+				FA30DE951BBF59D9009C397F /* Happy-TV */,
 				FD5F9BE30E0DEBEA008E885B /* Accel */,
 				FDC202DD0E107B1200ABAC90 /* Touch */,
 				FDF0D6920E12D05400247964 /* Mixer */,
@@ -621,6 +725,13 @@
 /* End PBXProject section */
 
 /* Begin PBXReferenceProxy section */
+		FA30DEAC1BBF59D9009C397F /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = FA30DEAB1BBF59D9009C397F /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
 		FD1B489E0E313154007AB34E /* libSDL2.a */ = {
 			isa = PBXReferenceProxy;
 			fileType = archive.ar;
@@ -635,16 +746,28 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FA86C0371D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
 				FD925B1B0E0F276600E92347 /* Icon.png in Resources */,
 				FD787AA20E22A5CC003E8E36 /* Default.png in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA30DE941BBF59D9009C397F /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA30DEB31BBF5AD7009C397F /* icon.bmp in Resources */,
+				FA30DEB41BBF5ADD009C397F /* Icon.png in Resources */,
+				FA30DEB61BBF5AE6009C397F /* Default.png in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		FD15FCAE0E086866003BDF25 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				FDB651D00E43D1AD00F688B5 /* icon.bmp in Resources */,
+				FA86C0381D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
 				FD925B1A0E0F276600E92347 /* Icon.png in Resources */,
 				FD787AA10E22A5CC003E8E36 /* Default.png in Resources */,
 			);
@@ -658,6 +781,7 @@
 				FDB651D10E43D1B300F688B5 /* ship.bmp in Resources */,
 				FD925B190E0F276600E92347 /* Icon.png in Resources */,
 				FD787AA30E22A5CC003E8E36 /* Default.png in Resources */,
+				FA86C0391D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -669,6 +793,7 @@
 				FDB651FA0E43D1F300F688B5 /* Icon.png in Resources */,
 				FDB651FB0E43D1F300F688B5 /* Default.png in Resources */,
 				FDB652C70E43E25900F688B5 /* kromasky_16x16.bmp in Resources */,
+				FA86C03D1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -677,6 +802,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				FDB651D30E43D1BA00F688B5 /* stroke.bmp in Resources */,
+				FA86C03A1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
 				FDC202E10E107B1200ABAC90 /* Icon.png in Resources */,
 				FD787AA40E22A5CC003E8E36 /* Default.png in Resources */,
 			);
@@ -687,6 +813,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				FDB651D80E43D1D800F688B5 /* stroke.bmp in Resources */,
+				FA86C03C1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
 				FDC52EC80E2843D6008D768C /* Icon.png in Resources */,
 				FDC52EC90E2843D6008D768C /* Default.png in Resources */,
 			);
@@ -699,6 +826,7 @@
 				FDB651D40E43D1C500F688B5 /* ds_brush_snare.wav in Resources */,
 				FDB651D50E43D1C500F688B5 /* ds_china.wav in Resources */,
 				FDB651D60E43D1C500F688B5 /* ds_kick_big_amb.wav in Resources */,
+				FA86C03B1D9765BB009CB637 /* iOS Launch Screen.storyboard in Resources */,
 				FDB651D70E43D1C500F688B5 /* ds_loose_skin_mute.wav in Resources */,
 				FDF0D6960E12D05400247964 /* Icon.png in Resources */,
 				FD787AA50E22A5CC003E8E36 /* Default.png in Resources */,
@@ -717,6 +845,15 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA30DE921BBF59D9009C397F /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA30DEB01BBF5A8F009C397F /* common.c in Sources */,
+				FA30DEB11BBF5A93009C397F /* happy.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		FD15FCAF0E086866003BDF25 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -809,6 +946,11 @@
 			name = libSDL;
 			targetProxy = 049F36A0130CD8A000FF080F /* PBXContainerItemProxy */;
 		};
+		FA30DEAF1BBF5A69009C397F /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = "libSDL-tv";
+			targetProxy = FA30DEAE1BBF5A69009C397F /* PBXContainerItemProxy */;
+		};
 /* End PBXTargetDependency section */
 
 /* Begin XCBuildConfiguration section */
@@ -816,6 +958,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Rectangles;
 				PRODUCT_NAME = Rectangles;
 			};
 			name = Debug;
@@ -824,6 +967,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Rectangles;
 				PRODUCT_NAME = Rectangles;
 			};
 			name = Release;
@@ -852,11 +996,100 @@
 			};
 			name = Release;
 		};
+		FA30DEA71BBF59D9009C397F /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				DEVELOPMENT_TEAM = "";
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				INFOPLIST_FILE = Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.Happy-TV";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
+		FA30DEA81BBF59D9009C397F /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				DEVELOPMENT_TEAM = "";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				INFOPLIST_FILE = Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = NO;
+				PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.Happy-TV";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
 		FD15FCB50E086866003BDF25 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				GCC_DYNAMIC_NO_PIC = NO;
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Happy;
 				PRODUCT_NAME = Happy;
 				SDKROOT = iphoneos;
 			};
@@ -866,6 +1099,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Happy;
 				PRODUCT_NAME = Happy;
 				SDKROOT = iphoneos;
 			};
@@ -875,6 +1109,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Accel;
 				PRODUCT_NAME = Accel;
 				SDKROOT = iphoneos;
 			};
@@ -884,6 +1119,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Accel;
 				PRODUCT_NAME = Accel;
 				SDKROOT = iphoneos;
 			};
@@ -893,6 +1129,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Keyboard;
 				PRODUCT_NAME = Keyboard;
 				SDKROOT = iphoneos;
 			};
@@ -902,6 +1139,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Keyboard;
 				PRODUCT_NAME = Keyboard;
 				SDKROOT = iphoneos;
 			};
@@ -911,6 +1149,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Touch;
 				PRODUCT_NAME = Touch;
 				SDKROOT = iphoneos;
 			};
@@ -920,6 +1159,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Touch;
 				PRODUCT_NAME = Touch;
 				SDKROOT = iphoneos;
 			};
@@ -928,7 +1168,10 @@
 		FDC52EDC0E2843D6008D768C /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				DEVELOPMENT_TEAM = "";
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Fireworks;
 				PRODUCT_NAME = Fireworks;
 				SDKROOT = iphoneos;
 			};
@@ -937,7 +1180,10 @@
 		FDC52EDD0E2843D6008D768C /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				DEVELOPMENT_TEAM = "";
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Fireworks;
 				PRODUCT_NAME = Fireworks;
 				SDKROOT = iphoneos;
 			};
@@ -947,6 +1193,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Mixer;
 				PRODUCT_NAME = Mixer;
 				SDKROOT = iphoneos;
 			};
@@ -956,6 +1203,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				INFOPLIST_FILE = Info.plist;
+				PRODUCT_BUNDLE_IDENTIFIER = com.yourcompany.Mixer;
 				PRODUCT_NAME = Mixer;
 				SDKROOT = iphoneos;
 			};
@@ -982,6 +1230,15 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		FA30DEAD1BBF59D9009C397F /* Build configuration list for PBXNativeTarget "Happy-TV" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FA30DEA71BBF59D9009C397F /* Debug */,
+				FA30DEA81BBF59D9009C397F /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		FD15FCB70E086867003BDF25 /* Build configuration list for PBXNativeTarget "Happy" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/Icon.png → jni/SDL2-2.0.5/Xcode-iOS/Demos/Icon.png


+ 3 - 1
jni/SDL2-2.0.4/Xcode-iOS/Demos/Info.plist → jni/SDL2-2.0.5/Xcode-iOS/Demos/Info.plist

@@ -11,7 +11,7 @@
 	<key>CFBundleIconFile</key>
 	<string></string>
 	<key>CFBundleIdentifier</key>
-	<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleName</key>
@@ -24,6 +24,8 @@
 	<string>1.0</string>
 	<key>NSMainNibFile</key>
 	<string></string>
+	<key>UILaunchStoryboardName</key>
+	<string>iOS Launch Screen</string>
 	<key>UISupportedInterfaceOrientations</key>
 	<array/>
 </dict>

+ 3 - 3
jni/SDL2-2.0.4/Xcode-iOS/Demos/README → jni/SDL2-2.0.5/Xcode-iOS/Demos/README

@@ -2,15 +2,15 @@
 About the iPhone OS Demo Applications
 ==============================================================================
 
-Demos.xcodeproj contains several targets for iPhone oriented SDL demos.  These demos are written strictly using SDL 1.3 calls.  All the demos except for Fireworks (which requires OpenGL ES) should work on platforms other than iPhone OS, though you'll need to write your own compile script.  To run them on your favorite platform, you may wish to set the macros SCREEN_WIDTH and SCREEN_HEIGHT, located in common.h.
+Demos.xcodeproj contains several targets for iPhone oriented SDL demos.  These demos are written strictly using SDL 2.0 calls.  All the demos except for Fireworks (which requires OpenGL ES) should work on platforms other than iPhone OS, though you'll need to write your own compile script.
 
 Common files:
 
-	common.c and common.h contain code common to all demo applications.  This includes macros about the screen dimensions (in pixels), simple error handling, and functions for generating random numbers.
+	common.c and common.h contain code common to all demo applications.  This includes functions about delta timing (in seconds), simple error handling, and functions for generating random numbers.
 
 Rectangles (rectangles.c):
 
-	Draws randomly sized and colored rectangles all over the screen by using SDL_RenderFill.  This is the simplest of all the demos.
+	Draws randomly sized and colored rectangles all over the screen by using SDL_RenderFillRect.  This is the simplest of all the demos.
 
 Happy (happy.c):
 

+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/bitmapfont/license.txt → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/bitmapfont/license.txt


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/drums/ds_brush_snare.wav


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/drums/ds_china.wav → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/drums/ds_china.wav


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/icon.bmp → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/icon.bmp


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/ship.bmp → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/ship.bmp


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/space.bmp → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/space.bmp


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/data/stroke.bmp → jni/SDL2-2.0.5/Xcode-iOS/Demos/data/stroke.bmp


+ 16 - 29
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/accelerometer.c → jni/SDL2-2.0.5/Xcode-iOS/Demos/src/accelerometer.c

@@ -8,7 +8,6 @@
 #include "math.h"
 #include "common.h"
 
-#define MILLESECONDS_PER_FRAME 16       /* about 60 frames per second */
 #define DAMPING 0.5f;           /* after bouncing off a wall, damping coefficient determines final speed */
 #define FRICTION 0.0008f        /* coefficient of acceleration that opposes direction of motion */
 #define GRAVITY_CONSTANT 0.004f /* how sensitive the ship is to the accelerometer */
@@ -31,9 +30,10 @@ static SDL_Texture *ship = 0;        /* texture for spaceship */
 static SDL_Texture *space = 0;       /* texture for space (background */
 
 void
-render(SDL_Renderer *renderer, int w, int h)
+render(SDL_Renderer *renderer, int w, int h, double deltaTime)
 {
-
+    double deltaMilliseconds = deltaTime * 1000;
+    float speed;
 
     /* get joystick (accelerometer) axis values and normalize them */
     float ax = SDL_JoystickGetAxis(accelerometer, 0);
@@ -53,12 +53,12 @@ render(SDL_Renderer *renderer, int w, int h)
      */
     shipData.vx +=
         ax * SDL_IPHONE_MAX_GFORCE / SINT16_MAX * GRAVITY_CONSTANT *
-        MILLESECONDS_PER_FRAME;
+        deltaMilliseconds;
     shipData.vy +=
         ay * SDL_IPHONE_MAX_GFORCE / SINT16_MAX * GRAVITY_CONSTANT *
-        MILLESECONDS_PER_FRAME;
+        deltaMilliseconds;
 
-    float speed = sqrt(shipData.vx * shipData.vx + shipData.vy * shipData.vy);
+    speed = sqrt(shipData.vx * shipData.vx + shipData.vy * shipData.vy);
 
     if (speed > 0) {
         /* compensate for friction */
@@ -66,10 +66,10 @@ render(SDL_Renderer *renderer, int w, int h)
         float diry = shipData.vy / speed;   /* normalized y velocity */
 
         /* update velocity due to friction */
-        if (speed - FRICTION * MILLESECONDS_PER_FRAME > 0) {
+        if (speed - FRICTION * deltaMilliseconds > 0) {
             /* apply friction */
-            shipData.vx -= dirx * FRICTION * MILLESECONDS_PER_FRAME;
-            shipData.vy -= diry * FRICTION * MILLESECONDS_PER_FRAME;
+            shipData.vx -= dirx * FRICTION * deltaMilliseconds;
+            shipData.vy -= diry * FRICTION * deltaMilliseconds;
         } else {
             /* applying friction would MORE than stop the ship, so just stop the ship */
             shipData.vx = 0.0f;
@@ -78,8 +78,8 @@ render(SDL_Renderer *renderer, int w, int h)
     }
 
     /* update ship location */
-    shipData.x += shipData.vx * MILLESECONDS_PER_FRAME;
-    shipData.y += shipData.vy * MILLESECONDS_PER_FRAME;
+    shipData.x += shipData.vx * deltaMilliseconds;
+    shipData.y += shipData.vy * deltaMilliseconds;
 
     if (shipData.x > maxx) {
         shipData.x = maxx;
@@ -160,9 +160,6 @@ main(int argc, char *argv[])
 
     SDL_Window *window;         /* main window */
     SDL_Renderer *renderer;
-    Uint32 startFrame;          /* time frame began to process */
-    Uint32 endFrame;            /* time frame ended processing */
-    Sint32 delay;               /* time to pause waiting to draw next frame */
     int done;                   /* should we clean up and exit? */
     int w, h;
 
@@ -172,12 +169,11 @@ main(int argc, char *argv[])
     }
 
     /* create main window and renderer */
-    window = SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
-                                SDL_WINDOW_OPENGL |
-                                SDL_WINDOW_FULLSCREEN);
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_FULLSCREEN | SDL_WINDOW_ALLOW_HIGHDPI);
     renderer = SDL_CreateRenderer(window, 0, 0);
     
     SDL_GetWindowSize(window, &w, &h);
+    SDL_RenderSetLogicalSize(renderer, w, h);
 
     /* print out some info about joysticks and try to open accelerometer for use */
     printf("There are %d joysticks available\n", SDL_NumJoysticks());
@@ -207,24 +203,15 @@ main(int argc, char *argv[])
     done = 0;
     /* enter main loop */
     while (!done) {
-        startFrame = SDL_GetTicks();
+        double deltaTime = updateDeltaTime();
         SDL_Event event;
         while (SDL_PollEvent(&event)) {
             if (event.type == SDL_QUIT) {
                 done = 1;
             }
         }
-        render(renderer, w, h);
-        endFrame = SDL_GetTicks();
-
-        /* figure out how much time we have left, and then sleep */
-        delay = MILLESECONDS_PER_FRAME - (endFrame - startFrame);
-        if (delay < 0) {
-            delay = 0;
-        } else if (delay > MILLESECONDS_PER_FRAME) {
-            delay = MILLESECONDS_PER_FRAME;
-        }
-        SDL_Delay(delay);
+        render(renderer, w, h, deltaTime);
+        SDL_Delay(1);
     }
 
     /* delete textures */

+ 20 - 0
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/common.c → jni/SDL2-2.0.5/Xcode-iOS/Demos/src/common.c

@@ -32,5 +32,25 @@ void
 fatalError(const char *string)
 {
     printf("%s: %s\n", string, SDL_GetError());
+    SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, string, SDL_GetError(), NULL);
     exit(1);
 }
+
+static Uint64 prevTime = 0;
+
+double
+updateDeltaTime()
+{
+    Uint64 curTime;
+    double deltaTime;
+
+    if (prevTime == 0) {
+        prevTime = SDL_GetPerformanceCounter();
+    }
+
+    curTime = SDL_GetPerformanceCounter();
+    deltaTime = (double) (curTime - prevTime) / (double) SDL_GetPerformanceFrequency();
+    prevTime = curTime;
+
+    return deltaTime;
+}

+ 1 - 3
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/common.h → jni/SDL2-2.0.5/Xcode-iOS/Demos/src/common.h

@@ -4,9 +4,7 @@
  *  use however you want
  */
 
-#define SCREEN_WIDTH 320
-#define SCREEN_HEIGHT 480
-
 extern int randomInt(int min, int max);
 extern float randomFloat(float min, float max);
 extern void fatalError(const char *string);
+extern double updateDeltaTime();

+ 35 - 36
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/fireworks.c → jni/SDL2-2.0.5/Xcode-iOS/Demos/src/fireworks.c

@@ -10,13 +10,13 @@
 #include <math.h>
 #include <time.h>
 
-#define MILLESECONDS_PER_FRAME 16       /* about 60 frames per second */
 #define ACCEL 0.0001f           /* acceleration due to gravity, units in pixels per millesecond squared */
 #define WIND_RESISTANCE 0.00005f        /* acceleration per unit velocity due to wind resistance */
 #define MAX_PARTICLES 2000      /* maximum number of particles displayed at once */
 
 static GLuint particleTextureID;        /* OpenGL particle texture id */
 static SDL_bool pointSizeExtensionSupported;    /* is GL_OES_point_size_array supported ? */
+static float pointSizeScale;
 /*
     used to describe what type of particle a given struct particle is.
     emitter - this particle flies up, shooting off trail particles, then finally explodes into dust particles.
@@ -55,7 +55,7 @@ void initializeParticles(void);
 void initializeTexture();
 int nextPowerOfTwo(int x);
 void drawParticles();
-void stepParticles(void);
+void stepParticles(double deltaTime);
 
 /*  helper function (used in texture loading)
     returns next power of two greater than or equal to x
@@ -71,11 +71,12 @@ nextPowerOfTwo(int x)
 }
 
 /*
-    steps each active particle by timestep MILLESECONDS_PER_FRAME
+    steps each active particle by timestep deltaTime
 */
 void
-stepParticles(void)
+stepParticles(double deltaTime)
 {
+    float deltaMilliseconds = deltaTime * 1000;
     int i;
     struct particle *slot = particles;
     struct particle *curr = particles;
@@ -93,10 +94,10 @@ stepParticles(void)
                 curr->isActive = 0;
 
             /* step velocity, then step position */
-            curr->yvel += ACCEL * MILLESECONDS_PER_FRAME;
+            curr->yvel += ACCEL * deltaMilliseconds;
             curr->xvel += 0.0f;
-            curr->y += curr->yvel * MILLESECONDS_PER_FRAME;
-            curr->x += curr->xvel * MILLESECONDS_PER_FRAME;
+            curr->y += curr->yvel * deltaMilliseconds;
+            curr->x += curr->xvel * deltaMilliseconds;
 
             /* particle behavior */
             if (curr->type == emitter) {
@@ -111,29 +112,29 @@ stepParticles(void)
                     sqrt(curr->xvel * curr->xvel + curr->yvel * curr->yvel);
                 /*      if wind resistance is not powerful enough to stop us completely,
                    then apply winde resistance, otherwise just stop us completely */
-                if (WIND_RESISTANCE * MILLESECONDS_PER_FRAME < speed) {
+                if (WIND_RESISTANCE * deltaMilliseconds < speed) {
                     float normx = curr->xvel / speed;
                     float normy = curr->yvel / speed;
                     curr->xvel -=
-                        normx * WIND_RESISTANCE * MILLESECONDS_PER_FRAME;
+                        normx * WIND_RESISTANCE * deltaMilliseconds;
                     curr->yvel -=
-                        normy * WIND_RESISTANCE * MILLESECONDS_PER_FRAME;
+                        normy * WIND_RESISTANCE * deltaMilliseconds;
                 } else {
                     curr->xvel = curr->yvel = 0;        /* stop particle */
                 }
 
-                if (curr->color[3] <= MILLESECONDS_PER_FRAME * 0.1275f) {
+                if (curr->color[3] <= deltaMilliseconds * 0.1275f) {
                     /* if this next step will cause us to fade out completely
                        then just mark for deletion */
                     curr->isActive = 0;
                 } else {
                     /* otherwise, let's fade a bit more */
-                    curr->color[3] -= MILLESECONDS_PER_FRAME * 0.1275f;
+                    curr->color[3] -= deltaMilliseconds * 0.1275f;
                 }
 
                 /* if we're a dust particle, shrink our size */
                 if (curr->type == dust)
-                    curr->size -= MILLESECONDS_PER_FRAME * 0.010f;
+                    curr->size -= deltaMilliseconds * 0.010f;
 
             }
 
@@ -147,7 +148,7 @@ stepParticles(void)
     /* the number of active particles is computed as the difference between
        old number of active particles, where slot points, and the
        new size of the array, where particles points */
-    num_active_particles = slot - particles;
+    num_active_particles = (int) (slot - particles);
 }
 
 /*
@@ -206,7 +207,7 @@ explodeEmitter(struct particle *emitter)
         p->y = emitter->y + emitter->yvel;
         p->isActive = 1;
         p->type = dust;
-        p->size = 15;
+        p->size = 15 * pointSizeScale;
         /* inherit emitter's color */
         p->color[0] = emitter->color[0];
         p->color[1] = emitter->color[1];
@@ -244,7 +245,7 @@ spawnTrailFromEmitter(struct particle *emitter)
     p->color[3] = (0.7f) * 255;
 
     /* set other attributes */
-    p->size = 10;
+    p->size = 10 * pointSizeScale;
     p->type = trail;
     p->isActive = 1;
 
@@ -298,7 +299,7 @@ spawnEmitterParticle(GLfloat x, GLfloat y)
     p->xvel = 0;
     p->yvel = -sqrt(2 * ACCEL * (screen_h - y));
     /* set other attributes */
-    p->size = 10;
+    p->size = 10 * pointSizeScale;
     p->type = emitter;
     p->isActive = 1;
     /* our array has expanded at the end */
@@ -363,7 +364,7 @@ main(int argc, char *argv[])
 {
     SDL_Window *window;         /* main window */
     SDL_GLContext context;
-    int w, h;
+    int drawableW, drawableH;
     Uint32 startFrame;          /* time frame began to process */
     Uint32 endFrame;            /* time frame ended processing */
     Uint32 delay;               /* time to pause waiting to draw next frame */
@@ -391,11 +392,19 @@ main(int argc, char *argv[])
     SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
 
     /* create main window and renderer */
-    window = SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
-                                SDL_WINDOW_OPENGL |
-                                SDL_WINDOW_BORDERLESS);
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480,
+                                SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS | SDL_WINDOW_ALLOW_HIGHDPI);
     context = SDL_GL_CreateContext(window);
 
+    /* The window size and drawable size may be different when highdpi is enabled,
+     * due to the increased pixel density of the drawable. */
+    SDL_GetWindowSize(window, &screen_w, &screen_h);
+    SDL_GL_GetDrawableSize(window, &drawableW, &drawableH);
+
+    /* In OpenGL, point sizes are always in pixels. We don't want them looking
+     * tiny on a retina screen. */
+    pointSizeScale = (float) drawableH / (float) screen_h;
+
     /* load the particle texture */
     initializeTexture();
 
@@ -412,8 +421,7 @@ main(int argc, char *argv[])
     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
 
-    SDL_GetWindowSize(window, &screen_w, &screen_h);
-    glViewport(0, 0, screen_w, screen_h);
+    glViewport(0, 0, drawableW, drawableH);
 
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
@@ -436,14 +444,14 @@ main(int argc, char *argv[])
         glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
     } else {
         /* if extension not available then all particles have size 10 */
-        glPointSize(10);
+        glPointSize(10 * pointSizeScale);
     }
 
     done = 0;
     /* enter main loop */
     while (!done) {
-        startFrame = SDL_GetTicks();
         SDL_Event event;
+        double deltaTime = updateDeltaTime();
         while (SDL_PollEvent(&event)) {
             if (event.type == SDL_QUIT) {
                 done = 1;
@@ -454,19 +462,10 @@ main(int argc, char *argv[])
                 spawnEmitterParticle(x, y);
             }
         }
-        stepParticles();
+        stepParticles(deltaTime);
         drawParticles();
         SDL_GL_SwapWindow(window);
-        endFrame = SDL_GetTicks();
-
-        /* figure out how much time we have left, and then sleep */
-        delay = MILLESECONDS_PER_FRAME - (endFrame - startFrame);
-        if (delay > MILLESECONDS_PER_FRAME) {
-            delay = MILLESECONDS_PER_FRAME;
-        }
-        if (delay > 0) {
-            SDL_Delay(delay);
-        }
+        SDL_Delay(1);
     }
 
     /* delete textures */

+ 38 - 35
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/happy.c → jni/SDL2-2.0.5/Xcode-iOS/Demos/src/happy.c

@@ -8,8 +8,7 @@
 #include "common.h"
 
 #define NUM_HAPPY_FACES 100     /* number of faces to draw */
-#define MILLESECONDS_PER_FRAME 16       /* about 60 frames per second */
-#define HAPPY_FACE_SIZE 32      /* width and height of happyface (pixels) */
+#define HAPPY_FACE_SIZE 32      /* width and height of happyface */
 
 static SDL_Texture *texture = 0;    /* reference to texture holding happyface */
 
@@ -24,30 +23,37 @@ static struct
     units of velocity are pixels per millesecond
 */
 void
-initializeHappyFaces()
+initializeHappyFaces(SDL_Renderer *renderer)
 {
     int i;
+    int w;
+    int h;
+    SDL_RenderGetLogicalSize(renderer, &w, &h);
+
     for (i = 0; i < NUM_HAPPY_FACES; i++) {
-        faces[i].x = randomFloat(0.0f, SCREEN_WIDTH - HAPPY_FACE_SIZE);
-        faces[i].y = randomFloat(0.0f, SCREEN_HEIGHT - HAPPY_FACE_SIZE);
-        faces[i].xvel = randomFloat(-0.1f, 0.1f);
-        faces[i].yvel = randomFloat(-0.1f, 0.1f);
+        faces[i].x = randomFloat(0.0f, w - HAPPY_FACE_SIZE);
+        faces[i].y = randomFloat(0.0f, h - HAPPY_FACE_SIZE);
+        faces[i].xvel = randomFloat(-60.0f, 60.0f);
+        faces[i].yvel = randomFloat(-60.0f, 60.0f);
     }
 }
 
 void
-render(SDL_Renderer *renderer)
+render(SDL_Renderer *renderer, double deltaTime)
 {
-
     int i;
     SDL_Rect srcRect;
     SDL_Rect dstRect;
+    int w;
+    int h;
+
+    SDL_RenderGetLogicalSize(renderer, &w, &h);
 
     /* setup boundaries for happyface bouncing */
-    Uint16 maxx = SCREEN_WIDTH - HAPPY_FACE_SIZE;
-    Uint16 maxy = SCREEN_HEIGHT - HAPPY_FACE_SIZE;
-    Uint16 minx = 0;
-    Uint16 miny = 0;
+    int maxx = w - HAPPY_FACE_SIZE;
+    int maxy = h - HAPPY_FACE_SIZE;
+    int minx = 0;
+    int miny = 0;
 
     /* setup rects for drawing */
     srcRect.x = 0;
@@ -68,8 +74,8 @@ render(SDL_Renderer *renderer)
        - draw
      */
     for (i = 0; i < NUM_HAPPY_FACES; i++) {
-        faces[i].x += faces[i].xvel * MILLESECONDS_PER_FRAME;
-        faces[i].y += faces[i].yvel * MILLESECONDS_PER_FRAME;
+        faces[i].x += faces[i].xvel * deltaTime;
+        faces[i].y += faces[i].yvel * deltaTime;
         if (faces[i].x > maxx) {
             faces[i].x = maxx;
             faces[i].xvel = -faces[i].xvel;
@@ -123,48 +129,45 @@ initializeTexture(SDL_Renderer *renderer)
 int
 main(int argc, char *argv[])
 {
-
     SDL_Window *window;
     SDL_Renderer *renderer;
-    Uint32 startFrame;
-    Uint32 endFrame;
-    Uint32 delay;
     int done;
+    int width;
+    int height;
 
     /* initialize SDL */
     if (SDL_Init(SDL_INIT_VIDEO) < 0) {
         fatalError("Could not initialize SDL");
     }
-    window = SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
-                                SDL_WINDOW_OPENGL |
-                                SDL_WINDOW_BORDERLESS);
+
+    /* The specified window size doesn't matter - except for its aspect ratio,
+     * which determines whether the window is in portrait or landscape on iOS
+     * (if SDL_WINDOW_RESIZABLE isn't specified). */
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_FULLSCREEN | SDL_WINDOW_ALLOW_HIGHDPI);
 
     renderer = SDL_CreateRenderer(window, -1, 0);
 
+    SDL_GetWindowSize(window, &width, &height);
+    SDL_RenderSetLogicalSize(renderer, width, height);
+
     initializeTexture(renderer);
-    initializeHappyFaces();
+    initializeHappyFaces(renderer);
+
 
     /* main loop */
     done = 0;
     while (!done) {
-        startFrame = SDL_GetTicks();
         SDL_Event event;
+        double deltaTime = updateDeltaTime();
+
         while (SDL_PollEvent(&event)) {
             if (event.type == SDL_QUIT) {
                 done = 1;
             }
         }
-        render(renderer);
-        endFrame = SDL_GetTicks();
-
-        /* figure out how much time we have left, and then sleep */
-        delay = MILLESECONDS_PER_FRAME - (endFrame - startFrame);
-        if (delay < 0) {
-            delay = 0;
-        } else if (delay > MILLESECONDS_PER_FRAME) {
-            delay = MILLESECONDS_PER_FRAME;
-        }
-        SDL_Delay(delay);
+
+        render(renderer, deltaTime);
+        SDL_Delay(1);
     }
 
     /* cleanup */

+ 13 - 6
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/keyboard.c → jni/SDL2-2.0.5/Xcode-iOS/Demos/src/keyboard.c

@@ -4,8 +4,8 @@
  *  use however you want
  */
 
-#import "SDL.h"
-#import "common.h"
+#include "SDL.h"
+#include "common.h"
 
 #define GLYPH_SIZE_IMAGE 16     /* size of glyphs (characters) in the bitmap font file */
 #define GLYPH_SIZE_SCREEN 32    /* size of glyphs (characters) as shown on the screen */
@@ -132,10 +132,13 @@ keyToIndex(SDL_Keysym key)
 void
 getPositionForCharNumber(int n, int *x, int *y)
 {
+    int renderW, renderH;
+    SDL_RenderGetLogicalSize(renderer, &renderW, &renderH);
+
     int x_padding = 16;         /* padding space on left and right side of screen */
     int y_padding = 32;         /* padding space at top of screen */
     /* figure out the number of characters that can fit horizontally across the screen */
-    int max_x_chars = (SCREEN_WIDTH - 2 * x_padding) / GLYPH_SIZE_SCREEN;
+    int max_x_chars = (renderW - 2 * x_padding) / GLYPH_SIZE_SCREEN;
     int line_separation = 5;    /* pixels between each line */
     *x = (n % max_x_chars) * GLYPH_SIZE_SCREEN + x_padding;
     *y = (n / max_x_chars) * (GLYPH_SIZE_SCREEN + line_separation) +
@@ -228,21 +231,25 @@ loadFont(void)
 int
 main(int argc, char *argv[])
 {
-
     int index;                  /* index of last key we pushed in the bitmap font */
     SDL_Window *window;
     SDL_Event event;            /* last event received */
     SDL_Keymod mod;             /* key modifiers of last key we pushed */
     SDL_Scancode scancode;      /* scancode of last key we pushed */
+    int width;
+    int height;
 
     if (SDL_Init(SDL_INIT_VIDEO) < 0) {
         printf("Error initializing SDL: %s", SDL_GetError());
     }
     /* create window */
-    window = SDL_CreateWindow("iPhone keyboard test", 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0);
+    window = SDL_CreateWindow("iPhone keyboard test", 0, 0, 320, 480, SDL_WINDOW_ALLOW_HIGHDPI);
     /* create renderer */
     renderer = SDL_CreateRenderer(window, -1, 0);
 
+    SDL_GetWindowSize(window, &width, &height);
+    SDL_RenderSetLogicalSize(renderer, width, height);
+
     /* load up our font */
     loadFont();
 
@@ -253,7 +260,7 @@ main(int argc, char *argv[])
 
     int done = 0;
     /* loop till we get SDL_Quit */
-    while (SDL_WaitEvent(&event)) {
+    while (!done && SDL_WaitEvent(&event)) {
         switch (event.type) {
         case SDL_QUIT:
             done = 1;

+ 19 - 28
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/mixer.c → jni/SDL2-2.0.5/Xcode-iOS/Demos/src/mixer.c

@@ -4,12 +4,11 @@
  *  use however you want
  */
 
-#import "SDL.h"
-#import "common.h"
+#include "SDL.h"
+#include "common.h"
 
 #define NUM_CHANNELS 8          /* max number of sounds we can play at once */
 #define NUM_DRUMS 4             /* number of drums in our set */
-#define MILLESECONDS_PER_FRAME 16       /* about 60 frames per second */
 
 static struct
 {
@@ -33,7 +32,7 @@ static struct sound drums[NUM_DRUMS];
 void handleMouseButtonDown(SDL_Event * event);
 void handleMouseButtonUp(SDL_Event * event);
 int playSound(struct sound *);
-void initializeButtons();
+void initializeButtons(SDL_Renderer *);
 void audioCallback(void *userdata, Uint8 * stream, int len);
 void loadSound(const char *file, struct sound *s);
 
@@ -52,19 +51,21 @@ struct
 
 /* sets up the buttons (color, position, state) */
 void
-initializeButtons()
+initializeButtons(SDL_Renderer *renderer)
 {
-
     int i;
     int spacing = 10;           /* gap between drum buttons */
     SDL_Rect buttonRect;        /* keeps track of where to position drum */
     SDL_Color upColor = { 86, 86, 140, 255 };   /* color of drum when not pressed */
     SDL_Color downColor = { 191, 191, 221, 255 };       /* color of drum when pressed */
+    int renderW, renderH;
+
+    SDL_RenderGetLogicalSize(renderer, &renderW, &renderH);
 
     buttonRect.x = spacing;
     buttonRect.y = spacing;
-    buttonRect.w = SCREEN_WIDTH - 2 * spacing;
-    buttonRect.h = (SCREEN_HEIGHT - (NUM_DRUMS + 1) * spacing) / NUM_DRUMS;
+    buttonRect.w = renderW - 2 * spacing;
+    buttonRect.h = (renderH - (NUM_DRUMS + 1) * spacing) / NUM_DRUMS;
 
     /* setup each button */
     for (i = 0; i < NUM_DRUMS; i++) {
@@ -270,23 +271,23 @@ audioCallback(void *userdata, Uint8 * stream, int len)
 int
 main(int argc, char *argv[])
 {
-
     int done;                   /* has user tried to quit ? */
     SDL_Window *window;         /* main window */
     SDL_Renderer *renderer;
     SDL_Event event;
-    Uint32 startFrame;          /* holds when frame started processing */
-    Uint32 endFrame;            /* holds when frame ended processing */
-    Uint32 delay;               /* calculated delay, how long should we wait before next frame? */
+    int i;
+    int width;
+    int height;
 
     if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) {
         fatalError("could not initialize SDL");
     }
-    window =
-        SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
-                         SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS);
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_BORDERLESS | SDL_WINDOW_ALLOW_HIGHDPI);
     renderer = SDL_CreateRenderer(window, 0, 0);
 
+    SDL_GetWindowSize(window, &width, &height);
+    SDL_RenderSetLogicalSize(renderer, width, height);
+
     /* initialize the mixer */
     SDL_memset(&mixer, 0, sizeof(mixer));
     /* setup output format */
@@ -309,12 +310,11 @@ main(int argc, char *argv[])
     loadSound("ds_china.wav", &drums[0]);
 
     /* setup positions, colors, and state of buttons */
-    initializeButtons();
+    initializeButtons(renderer);
 
     /* enter main loop */
     done = 0;
     while (!done) {
-        startFrame = SDL_GetTicks();
         while (SDL_PollEvent(&event)) {
             switch (event.type) {
             case SDL_MOUSEBUTTONDOWN:
@@ -329,20 +329,11 @@ main(int argc, char *argv[])
             }
         }
         render(renderer);               /* draw buttons */
-        endFrame = SDL_GetTicks();
-
-        /* figure out how much time we have left, and then sleep */
-        delay = MILLESECONDS_PER_FRAME - (endFrame - startFrame);
-        if (delay < 0) {
-            delay = 0;
-        } else if (delay > MILLESECONDS_PER_FRAME) {
-            delay = MILLESECONDS_PER_FRAME;
-        }
-        SDL_Delay(delay);
+
+        SDL_Delay(1);
     }
 
     /* cleanup code, let's free up those sound buffers */
-    int i;
     for (i = 0; i < NUM_DRUMS; i++) {
         SDL_free(drums[i].buffer);
     }

+ 92 - 0
jni/SDL2-2.0.5/Xcode-iOS/Demos/src/rectangles.c

@@ -0,0 +1,92 @@
+/*
+ *  rectangles.c
+ *  written by Holmes Futrell
+ *  use however you want
+*/
+
+#include "SDL.h"
+#include <time.h>
+#include "common.h"
+
+void
+render(SDL_Renderer *renderer)
+{
+    Uint8 r, g, b;
+    int renderW;
+    int renderH;
+
+    SDL_RenderGetLogicalSize(renderer, &renderW, &renderH);
+
+    /*  Come up with a random rectangle */
+    SDL_Rect rect;
+    rect.w = randomInt(64, 128);
+    rect.h = randomInt(64, 128);
+    rect.x = randomInt(0, renderW);
+    rect.y = randomInt(0, renderH);
+
+    /* Come up with a random color */
+    r = randomInt(50, 255);
+    g = randomInt(50, 255);
+    b = randomInt(50, 255);
+
+    /*  Fill the rectangle in the color */
+    SDL_SetRenderDrawColor(renderer, r, g, b, 255);
+    SDL_RenderFillRect(renderer, &rect);
+
+    /* update screen */
+    SDL_RenderPresent(renderer);
+}
+
+int
+main(int argc, char *argv[])
+{
+
+    SDL_Window *window;
+    SDL_Renderer *renderer;
+    int done;
+    SDL_Event event;
+    int windowW;
+    int windowH;
+
+    /* initialize SDL */
+    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+        fatalError("Could not initialize SDL");
+    }
+
+    /* seed random number generator */
+    srand(time(NULL));
+
+    /* create window and renderer */
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_ALLOW_HIGHDPI);
+    if (window == 0) {
+        fatalError("Could not initialize Window");
+    }
+    renderer = SDL_CreateRenderer(window, -1, 0);
+    if (!renderer) {
+        fatalError("Could not create renderer");
+    }
+
+    SDL_GetWindowSize(window, &windowW, &windowH);
+    SDL_RenderSetLogicalSize(renderer, windowW, windowH);
+
+    /* Fill screen with black */
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
+    SDL_RenderClear(renderer);
+
+    /* Enter render loop, waiting for user to quit */
+    done = 0;
+    while (!done) {
+        while (SDL_PollEvent(&event)) {
+            if (event.type == SDL_QUIT) {
+                done = 1;
+            }
+        }
+        render(renderer);
+        SDL_Delay(1);
+    }
+
+    /* shutdown SDL */
+    SDL_Quit();
+
+    return 0;
+}

+ 10 - 6
jni/SDL2-2.0.4/Xcode-iOS/Demos/src/touch.c → jni/SDL2-2.0.5/Xcode-iOS/Demos/src/touch.c

@@ -26,15 +26,17 @@ drawLine(SDL_Renderer *renderer, float startx, float starty, float dx, float dy)
     float dx_prime = dx / iterations;   /* x-shift per iteration */
     float dy_prime = dy / iterations;   /* y-shift per iteration */
     SDL_Rect dstRect;           /* rect to draw brush sprite into */
+    float x;
+    float y;
+    int i;
 
     dstRect.w = BRUSH_SIZE;
     dstRect.h = BRUSH_SIZE;
 
     /* setup x and y for the location of the first sprite */
-    float x = startx - BRUSH_SIZE / 2.0f;
-    float y = starty - BRUSH_SIZE / 2.0f;
+    x = startx - BRUSH_SIZE / 2.0f;
+    y = starty - BRUSH_SIZE / 2.0f;
 
-    int i;
     /* draw a series of blots to form the line */
     for (i = 0; i < iterations; i++) {
         dstRect.x = x;
@@ -80,6 +82,7 @@ main(int argc, char *argv[])
     SDL_Window *window;         /* main window */
     SDL_Renderer *renderer;
     int done;                   /* does user want to quit? */
+    int w, h;
 
     /* initialize SDL */
     if (SDL_Init(SDL_INIT_VIDEO) < 0) {
@@ -87,11 +90,12 @@ main(int argc, char *argv[])
     }
 
     /* create main window and renderer */
-    window = SDL_CreateWindow(NULL, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
-                                SDL_WINDOW_OPENGL |
-                                SDL_WINDOW_BORDERLESS);
+    window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_BORDERLESS | SDL_WINDOW_ALLOW_HIGHDPI);
     renderer = SDL_CreateRenderer(window, 0, 0);
 
+    SDL_GetWindowSize(window, &w, &h);
+    SDL_RenderSetLogicalSize(renderer, w, h);
+
     /* load brush texture */
     initializeTexture(renderer);
 

+ 334 - 8
jni/SDL2-2.0.4/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj → jni/SDL2-2.0.5/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj

@@ -74,7 +74,7 @@
 		56A6703818565E760007D20F /* SDL_dynapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6703418565E760007D20F /* SDL_dynapi.h */; };
 		56C181DF17C44D5E00406AE3 /* SDL_filesystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 56C181DE17C44D5E00406AE3 /* SDL_filesystem.h */; };
 		56C181E217C44D7A00406AE3 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C181E117C44D7A00406AE3 /* SDL_sysfilesystem.m */; };
-		56EA86FB13E9EC2B002E47EB /* SDL_coreaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 56EA86F913E9EC2B002E47EB /* SDL_coreaudio.c */; };
+		56EA86FB13E9EC2B002E47EB /* SDL_coreaudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 56EA86F913E9EC2B002E47EB /* SDL_coreaudio.m */; };
 		56EA86FC13E9EC2B002E47EB /* SDL_coreaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 56EA86FA13E9EC2B002E47EB /* SDL_coreaudio.h */; };
 		56ED04E1118A8EE200A56AA6 /* SDL_power.c in Sources */ = {isa = PBXBuildFile; fileRef = 56ED04E0118A8EE200A56AA6 /* SDL_power.c */; };
 		56ED04E3118A8EFD00A56AA6 /* SDL_syspower.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ED04E2118A8EFD00A56AA6 /* SDL_syspower.m */; };
@@ -143,7 +143,104 @@
 		AABCC3941640643D00AB8930 /* SDL_uikitmessagebox.h in Headers */ = {isa = PBXBuildFile; fileRef = AABCC3921640643D00AB8930 /* SDL_uikitmessagebox.h */; };
 		AABCC3951640643D00AB8930 /* SDL_uikitmessagebox.m in Sources */ = {isa = PBXBuildFile; fileRef = AABCC3931640643D00AB8930 /* SDL_uikitmessagebox.m */; };
 		AADA5B8F16CCAB7C00107CF7 /* SDL_bits.h in Headers */ = {isa = PBXBuildFile; fileRef = AADA5B8E16CCAB7C00107CF7 /* SDL_bits.h */; };
-		FAD4F7021BA3C4E8008346CE /* SDL_sysjoystick_c.h in Headers */ = {isa = PBXBuildFile; fileRef = FAD4F7011BA3C4E8008346CE /* SDL_sysjoystick_c.h */; settings = {ASSET_TAGS = (); }; };
+		FA1DC2721C62BE65008F99A0 /* SDL_uikitclipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1DC2701C62BE65008F99A0 /* SDL_uikitclipboard.h */; };
+		FA1DC2731C62BE65008F99A0 /* SDL_uikitclipboard.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1DC2711C62BE65008F99A0 /* SDL_uikitclipboard.m */; };
+		FAB5981D1BB5C31500BE72C5 /* SDL_atomic.c in Sources */ = {isa = PBXBuildFile; fileRef = 04FFAB8912E23B8D00BA343D /* SDL_atomic.c */; };
+		FAB5981E1BB5C31500BE72C5 /* SDL_spinlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 04FFAB8A12E23B8D00BA343D /* SDL_spinlock.c */; };
+		FAB5981F1BB5C31500BE72C5 /* SDL_coreaudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 56EA86F913E9EC2B002E47EB /* SDL_coreaudio.m */; };
+		FAB598211BB5C31500BE72C5 /* SDL_dummyaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B91D0DD52EDC00FB1D6B /* SDL_dummyaudio.c */; };
+		FAB598231BB5C31500BE72C5 /* SDL_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9440DD52EDC00FB1D6B /* SDL_audio.c */; };
+		FAB598251BB5C31500BE72C5 /* SDL_audiocvt.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9460DD52EDC00FB1D6B /* SDL_audiocvt.c */; };
+		FAB598271BB5C31500BE72C5 /* SDL_audiotypecvt.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B94A0DD52EDC00FB1D6B /* SDL_audiotypecvt.c */; };
+		FAB598281BB5C31500BE72C5 /* SDL_mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B94B0DD52EDC00FB1D6B /* SDL_mixer.c */; };
+		FAB5982A1BB5C31500BE72C5 /* SDL_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9530DD52EDC00FB1D6B /* SDL_wave.c */; };
+		FAB5982C1BB5C31500BE72C5 /* SDL_cpuinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B98B0DD52EDC00FB1D6B /* SDL_cpuinfo.c */; };
+		FAB5982F1BB5C31500BE72C5 /* SDL_dynapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 56A6703318565E760007D20F /* SDL_dynapi.c */; };
+		FAB598361BB5C31500BE72C5 /* SDL_clipboardevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 0420496F11E6F03D007E7EC9 /* SDL_clipboardevents.c */; };
+		FAB598381BB5C31500BE72C5 /* SDL_dropevents.c in Sources */ = {isa = PBXBuildFile; fileRef = AA704DD5162AA90A0076D1C1 /* SDL_dropevents.c */; };
+		FAB5983A1BB5C31500BE72C5 /* SDL_events.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9930DD52EDC00FB1D6B /* SDL_events.c */; };
+		FAB5983C1BB5C31500BE72C5 /* SDL_gesture.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BA9D6011EF474A00B60E01 /* SDL_gesture.c */; };
+		FAB5983E1BB5C31500BE72C5 /* SDL_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9950DD52EDC00FB1D6B /* SDL_keyboard.c */; };
+		FAB598401BB5C31500BE72C5 /* SDL_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9970DD52EDC00FB1D6B /* SDL_mouse.c */; };
+		FAB598421BB5C31500BE72C5 /* SDL_quit.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9990DD52EDC00FB1D6B /* SDL_quit.c */; };
+		FAB598441BB5C31500BE72C5 /* SDL_touch.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BA9D6211EF474A00B60E01 /* SDL_touch.c */; };
+		FAB598461BB5C31500BE72C5 /* SDL_windowevents.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B99B0DD52EDC00FB1D6B /* SDL_windowevents.c */; };
+		FAB598491BB5C31600BE72C5 /* SDL_rwopsbundlesupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 006E9887119552DD001DE610 /* SDL_rwopsbundlesupport.m */; };
+		FAB5984A1BB5C31600BE72C5 /* SDL_rwops.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B99E0DD52EDC00FB1D6B /* SDL_rwops.c */; };
+		FAB5984B1BB5C31600BE72C5 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C181E117C44D7A00406AE3 /* SDL_sysfilesystem.m */; };
+		FAB5984C1BB5C31600BE72C5 /* SDL_syshaptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 047677B80EA76A31008ABAF1 /* SDL_syshaptic.c */; };
+		FAB5984D1BB5C31600BE72C5 /* SDL_haptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 047677B90EA76A31008ABAF1 /* SDL_haptic.c */; };
+		FAB598501BB5C31600BE72C5 /* SDL_sysjoystick.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F000E26E5B600F90B21 /* SDL_sysjoystick.m */; };
+		FAB598511BB5C31600BE72C5 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = AA0AD06116647BBB00CE5896 /* SDL_gamecontroller.c */; };
+		FAB598521BB5C31600BE72C5 /* SDL_joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = FD5F9D1E0E0E08B3008E885B /* SDL_joystick.c */; };
+		FAB598551BB5C31600BE72C5 /* SDL_sysloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = 047AF1B20EA98D6C00811173 /* SDL_sysloadso.c */; };
+		FAB598561BB5C31600BE72C5 /* SDL_sysloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = FD8BD8190E27E25900B52CD5 /* SDL_sysloadso.c */; };
+		FAB598571BB5C31600BE72C5 /* SDL_power.c in Sources */ = {isa = PBXBuildFile; fileRef = 56ED04E0118A8EE200A56AA6 /* SDL_power.c */; };
+		FAB598581BB5C31600BE72C5 /* SDL_syspower.m in Sources */ = {isa = PBXBuildFile; fileRef = 56ED04E2118A8EFD00A56AA6 /* SDL_syspower.m */; };
+		FAB598591BB5C31600BE72C5 /* SDL_render_gles.c in Sources */ = {isa = PBXBuildFile; fileRef = 0442EC5212FE1C28004C9285 /* SDL_render_gles.c */; };
+		FAB5985A1BB5C31600BE72C5 /* SDL_render_gles2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0402A85512FE70C600CECEE3 /* SDL_render_gles2.c */; };
+		FAB5985B1BB5C31600BE72C5 /* SDL_shaders_gles2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0402A85612FE70C600CECEE3 /* SDL_shaders_gles2.c */; };
+		FAB5985D1BB5C31600BE72C5 /* SDL_blendfillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F7806A12FB751400FC43C0 /* SDL_blendfillrect.c */; };
+		FAB5985F1BB5C31600BE72C5 /* SDL_blendline.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F7806C12FB751400FC43C0 /* SDL_blendline.c */; };
+		FAB598611BB5C31600BE72C5 /* SDL_blendpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F7806E12FB751400FC43C0 /* SDL_blendpoint.c */; };
+		FAB598641BB5C31600BE72C5 /* SDL_drawline.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F7807112FB751400FC43C0 /* SDL_drawline.c */; };
+		FAB598661BB5C31600BE72C5 /* SDL_drawpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F7807312FB751400FC43C0 /* SDL_drawpoint.c */; };
+		FAB598681BB5C31600BE72C5 /* SDL_render_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = 0442EC4F12FE1C1E004C9285 /* SDL_render_sw.c */; };
+		FAB5986A1BB5C31600BE72C5 /* SDL_rotate.c in Sources */ = {isa = PBXBuildFile; fileRef = AA628AD9159369E3005138DD /* SDL_rotate.c */; };
+		FAB5986D1BB5C31600BE72C5 /* SDL_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 041B2CEA12FA0F680087D585 /* SDL_render.c */; };
+		FAB5986F1BB5C31600BE72C5 /* SDL_yuv_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 04409BA312FA989600FB9AA8 /* SDL_yuv_mmx.c */; };
+		FAB598711BB5C31600BE72C5 /* SDL_yuv_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = 04409BA512FA989600FB9AA8 /* SDL_yuv_sw.c */; };
+		FAB598721BB5C31600BE72C5 /* SDL_getenv.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A700DEA620800C5B771 /* SDL_getenv.c */; };
+		FAB598731BB5C31600BE72C5 /* SDL_iconv.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A710DEA620800C5B771 /* SDL_iconv.c */; };
+		FAB598741BB5C31600BE72C5 /* SDL_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A720DEA620800C5B771 /* SDL_malloc.c */; };
+		FAB598751BB5C31600BE72C5 /* SDL_qsort.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A730DEA620800C5B771 /* SDL_qsort.c */; };
+		FAB598761BB5C31600BE72C5 /* SDL_stdlib.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A740DEA620800C5B771 /* SDL_stdlib.c */; };
+		FAB598771BB5C31600BE72C5 /* SDL_string.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A750DEA620800C5B771 /* SDL_string.c */; };
+		FAB598781BB5C31600BE72C5 /* SDL_syscond.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99BA070DD52EDC00FB1D6B /* SDL_syscond.c */; };
+		FAB598791BB5C31600BE72C5 /* SDL_sysmutex.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99BA080DD52EDC00FB1D6B /* SDL_sysmutex.c */; };
+		FAB5987B1BB5C31600BE72C5 /* SDL_syssem.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99BA0A0DD52EDC00FB1D6B /* SDL_syssem.c */; };
+		FAB5987C1BB5C31600BE72C5 /* SDL_systhread.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99BA0B0DD52EDC00FB1D6B /* SDL_systhread.c */; };
+		FAB5987E1BB5C31600BE72C5 /* SDL_systls.c in Sources */ = {isa = PBXBuildFile; fileRef = AA0F8494178D5F1A00823F9D /* SDL_systls.c */; };
+		FAB598801BB5C31600BE72C5 /* SDL_thread.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99BA150DD52EDC00FB1D6B /* SDL_thread.c */; };
+		FAB598821BB5C31600BE72C5 /* SDL_systimer.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99BA310DD52EDC00FB1D6B /* SDL_systimer.c */; };
+		FAB598831BB5C31600BE72C5 /* SDL_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99BA2E0DD52EDC00FB1D6B /* SDL_timer.c */; };
+		FAB598871BB5C31600BE72C5 /* SDL_uikitappdelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689FCC0E26E9D400F90B21 /* SDL_uikitappdelegate.m */; };
+		FAB598891BB5C31600BE72C5 /* SDL_uikitevents.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F0D0E26E5D900F90B21 /* SDL_uikitevents.m */; };
+		FAB5988B1BB5C31600BE72C5 /* SDL_uikitmessagebox.m in Sources */ = {isa = PBXBuildFile; fileRef = AABCC3931640643D00AB8930 /* SDL_uikitmessagebox.m */; };
+		FAB5988D1BB5C31600BE72C5 /* SDL_uikitmodes.m in Sources */ = {isa = PBXBuildFile; fileRef = AA126AD31617C5E6005ABC8F /* SDL_uikitmodes.m */; };
+		FAB5988F1BB5C31600BE72C5 /* SDL_uikitopengles.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F0F0E26E5D900F90B21 /* SDL_uikitopengles.m */; };
+		FAB598911BB5C31600BE72C5 /* SDL_uikitopenglview.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F170E26E5D900F90B21 /* SDL_uikitopenglview.m */; };
+		FAB598931BB5C31600BE72C5 /* SDL_uikitvideo.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F110E26E5D900F90B21 /* SDL_uikitvideo.m */; };
+		FAB598951BB5C31600BE72C5 /* SDL_uikitview.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F130E26E5D900F90B21 /* SDL_uikitview.m */; };
+		FAB598971BB5C31600BE72C5 /* SDL_uikitviewcontroller.m in Sources */ = {isa = PBXBuildFile; fileRef = 93CB792513FC5F5300BD3E05 /* SDL_uikitviewcontroller.m */; };
+		FAB598991BB5C31600BE72C5 /* SDL_uikitwindow.m in Sources */ = {isa = PBXBuildFile; fileRef = FD689F150E26E5D900F90B21 /* SDL_uikitwindow.m */; };
+		FAB5989A1BB5C31600BE72C5 /* SDL_nullevents.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA685F50DF244C800F98A1A /* SDL_nullevents.c */; };
+		FAB5989D1BB5C31600BE72C5 /* SDL_nullframebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F7808312FB753F00FC43C0 /* SDL_nullframebuffer.c */; };
+		FAB5989E1BB5C31600BE72C5 /* SDL_nullvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA685F90DF244C800F98A1A /* SDL_nullvideo.c */; };
+		FAB598A01BB5C31600BE72C5 /* SDL_blit.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683000DF2374E00F98A1A /* SDL_blit.c */; };
+		FAB598A21BB5C31600BE72C5 /* SDL_blit_0.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683020DF2374E00F98A1A /* SDL_blit_0.c */; };
+		FAB598A31BB5C31600BE72C5 /* SDL_blit_1.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683030DF2374E00F98A1A /* SDL_blit_1.c */; };
+		FAB598A41BB5C31600BE72C5 /* SDL_blit_A.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683040DF2374E00F98A1A /* SDL_blit_A.c */; };
+		FAB598A51BB5C31600BE72C5 /* SDL_blit_auto.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683050DF2374E00F98A1A /* SDL_blit_auto.c */; };
+		FAB598A71BB5C31600BE72C5 /* SDL_blit_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683070DF2374E00F98A1A /* SDL_blit_copy.c */; };
+		FAB598A91BB5C31600BE72C5 /* SDL_blit_N.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683090DF2374E00F98A1A /* SDL_blit_N.c */; };
+		FAB598AA1BB5C31600BE72C5 /* SDL_blit_slow.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA6830A0DF2374E00F98A1A /* SDL_blit_slow.c */; };
+		FAB598AC1BB5C31600BE72C5 /* SDL_bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA6830B0DF2374E00F98A1A /* SDL_bmp.c */; };
+		FAB598AD1BB5C31600BE72C5 /* SDL_clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 044E5FB711E606EB0076F181 /* SDL_clipboard.c */; };
+		FAB598AE1BB5C31600BE72C5 /* SDL_fillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = 0463873E0F0B5B7D0041FD65 /* SDL_fillrect.c */; };
+		FAB598AF1BB5C31600BE72C5 /* SDL_pixels.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA6830F0DF2374E00F98A1A /* SDL_pixels.c */; };
+		FAB598B11BB5C31600BE72C5 /* SDL_rect.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683110DF2374E00F98A1A /* SDL_rect.c */; };
+		FAB598B21BB5C31600BE72C5 /* SDL_RLEaccel.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683150DF2374E00F98A1A /* SDL_RLEaccel.c */; };
+		FAB598B41BB5C31600BE72C5 /* SDL_stretch.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683170DF2374E00F98A1A /* SDL_stretch.c */; };
+		FAB598B51BB5C31600BE72C5 /* SDL_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA683190DF2374E00F98A1A /* SDL_surface.c */; };
+		FAB598B71BB5C31600BE72C5 /* SDL_video.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA6831B0DF2374E00F98A1A /* SDL_video.c */; };
+		FAB598B91BB5C31600BE72C5 /* SDL_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F2AF551104ABD200D6DDF7 /* SDL_assert.c */; };
+		FAB598BC1BB5C31600BE72C5 /* SDL_error.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9D50DD52EDC00FB1D6B /* SDL_error.c */; };
+		FAB598BD1BB5C31600BE72C5 /* SDL_hints.c in Sources */ = {isa = PBXBuildFile; fileRef = 0442EC5412FE1C3F004C9285 /* SDL_hints.c */; };
+		FAB598BE1BB5C31600BE72C5 /* SDL_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BAC09B1300C1290055DE28 /* SDL_log.c */; };
+		FAB598BF1BB5C31600BE72C5 /* SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = FD99B9D80DD52EDC00FB1D6B /* SDL.c */; };
+		FAD4F7021BA3C4E8008346CE /* SDL_sysjoystick_c.h in Headers */ = {isa = PBXBuildFile; fileRef = FAD4F7011BA3C4E8008346CE /* SDL_sysjoystick_c.h */; };
+		FAFDF8C61D88D4530083E6F2 /* SDL_uikitclipboard.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1DC2711C62BE65008F99A0 /* SDL_uikitclipboard.m */; };
 		FD3F4A760DEA620800C5B771 /* SDL_getenv.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A700DEA620800C5B771 /* SDL_getenv.c */; };
 		FD3F4A770DEA620800C5B771 /* SDL_iconv.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A710DEA620800C5B771 /* SDL_iconv.c */; };
 		FD3F4A780DEA620800C5B771 /* SDL_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = FD3F4A720DEA620800C5B771 /* SDL_malloc.c */; };
@@ -271,7 +368,7 @@
 		56A6703418565E760007D20F /* SDL_dynapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi.h; path = ../../src/dynapi/SDL_dynapi.h; sourceTree = "<group>"; };
 		56C181DE17C44D5E00406AE3 /* SDL_filesystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_filesystem.h; sourceTree = "<group>"; };
 		56C181E117C44D7A00406AE3 /* SDL_sysfilesystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDL_sysfilesystem.m; path = ../../src/filesystem/cocoa/SDL_sysfilesystem.m; sourceTree = "<group>"; };
-		56EA86F913E9EC2B002E47EB /* SDL_coreaudio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_coreaudio.c; path = coreaudio/SDL_coreaudio.c; sourceTree = "<group>"; };
+		56EA86F913E9EC2B002E47EB /* SDL_coreaudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDL_coreaudio.m; path = coreaudio/SDL_coreaudio.m; sourceTree = "<group>"; };
 		56EA86FA13E9EC2B002E47EB /* SDL_coreaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_coreaudio.h; path = coreaudio/SDL_coreaudio.h; sourceTree = "<group>"; };
 		56ED04E0118A8EE200A56AA6 /* SDL_power.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_power.c; path = ../../src/power/SDL_power.c; sourceTree = SOURCE_ROOT; };
 		56ED04E2118A8EFD00A56AA6 /* SDL_syspower.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDL_syspower.m; path = ../../src/power/uikit/SDL_syspower.m; sourceTree = SOURCE_ROOT; };
@@ -340,6 +437,9 @@
 		AABCC3921640643D00AB8930 /* SDL_uikitmessagebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitmessagebox.h; sourceTree = "<group>"; };
 		AABCC3931640643D00AB8930 /* SDL_uikitmessagebox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitmessagebox.m; sourceTree = "<group>"; };
 		AADA5B8E16CCAB7C00107CF7 /* SDL_bits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_bits.h; sourceTree = "<group>"; };
+		FA1DC2701C62BE65008F99A0 /* SDL_uikitclipboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitclipboard.h; sourceTree = "<group>"; };
+		FA1DC2711C62BE65008F99A0 /* SDL_uikitclipboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitclipboard.m; sourceTree = "<group>"; };
+		FAB598141BB5C1B100BE72C5 /* libSDL2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSDL2.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		FAD4F7011BA3C4E8008346CE /* SDL_sysjoystick_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysjoystick_c.h; sourceTree = "<group>"; };
 		FD0BBFEF0E3933DD00D833B1 /* SDL_uikitview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitview.h; sourceTree = "<group>"; };
 		FD3F4A700DEA620800C5B771 /* SDL_getenv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_getenv.c; sourceTree = "<group>"; };
@@ -372,7 +472,6 @@
 		FD99B9440DD52EDC00FB1D6B /* SDL_audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audio.c; sourceTree = "<group>"; };
 		FD99B9450DD52EDC00FB1D6B /* SDL_audio_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audio_c.h; sourceTree = "<group>"; };
 		FD99B9460DD52EDC00FB1D6B /* SDL_audiocvt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audiocvt.c; sourceTree = "<group>"; };
-		FD99B9490DD52EDC00FB1D6B /* SDL_audiomem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audiomem.h; sourceTree = "<group>"; };
 		FD99B94A0DD52EDC00FB1D6B /* SDL_audiotypecvt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audiotypecvt.c; sourceTree = "<group>"; };
 		FD99B94B0DD52EDC00FB1D6B /* SDL_mixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_mixer.c; sourceTree = "<group>"; };
 		FD99B9520DD52EDC00FB1D6B /* SDL_sysaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysaudio.h; sourceTree = "<group>"; };
@@ -546,6 +645,7 @@
 			isa = PBXGroup;
 			children = (
 				FD6526630DE8FCCB002AD96B /* libSDL2.a */,
+				FAB598141BB5C1B100BE72C5 /* libSDL2.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -583,7 +683,7 @@
 		56EA86F813E9EBF9002E47EB /* coreaudio */ = {
 			isa = PBXGroup;
 			children = (
-				56EA86F913E9EC2B002E47EB /* SDL_coreaudio.c */,
+				56EA86F913E9EC2B002E47EB /* SDL_coreaudio.m */,
 				56EA86FA13E9EC2B002E47EB /* SDL_coreaudio.h */,
 			);
 			name = coreaudio;
@@ -648,6 +748,8 @@
 				FDC261780E3A3FC8001C4554 /* keyinfotable.h */,
 				FD689FCD0E26E9D400F90B21 /* SDL_uikitappdelegate.h */,
 				FD689FCC0E26E9D400F90B21 /* SDL_uikitappdelegate.m */,
+				FA1DC2701C62BE65008F99A0 /* SDL_uikitclipboard.h */,
+				FA1DC2711C62BE65008F99A0 /* SDL_uikitclipboard.m */,
 				FD689F0C0E26E5D900F90B21 /* SDL_uikitevents.h */,
 				FD689F0D0E26E5D900F90B21 /* SDL_uikitevents.m */,
 				AABCC3921640643D00AB8930 /* SDL_uikitmessagebox.h */,
@@ -789,7 +891,6 @@
 				FD99B9440DD52EDC00FB1D6B /* SDL_audio.c */,
 				FD99B9450DD52EDC00FB1D6B /* SDL_audio_c.h */,
 				FD99B9460DD52EDC00FB1D6B /* SDL_audiocvt.c */,
-				FD99B9490DD52EDC00FB1D6B /* SDL_audiomem.h */,
 				FD99B94A0DD52EDC00FB1D6B /* SDL_audiotypecvt.c */,
 				FD99B94B0DD52EDC00FB1D6B /* SDL_mixer.c */,
 				FD99B9520DD52EDC00FB1D6B /* SDL_sysaudio.h */,
@@ -994,6 +1095,7 @@
 				04F7808012FB751400FC43C0 /* SDL_drawpoint.h in Headers */,
 				04F7808412FB753F00FC43C0 /* SDL_nullframebuffer_c.h in Headers */,
 				0442EC5012FE1C1E004C9285 /* SDL_render_sw_c.h in Headers */,
+				FA1DC2721C62BE65008F99A0 /* SDL_uikitclipboard.h in Headers */,
 				0402A85A12FE70C600CECEE3 /* SDL_shaders_gles2.h in Headers */,
 				04BAC09C1300C1290055DE28 /* SDL_assert_c.h in Headers */,
 				56EA86FC13E9EC2B002E47EB /* SDL_coreaudio.h in Headers */,
@@ -1064,6 +1166,21 @@
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
+		FAB598131BB5C1B100BE72C5 /* libSDL-tv */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FAB5981A1BB5C1B100BE72C5 /* Build configuration list for PBXNativeTarget "libSDL-tv" */;
+			buildPhases = (
+				FAB598101BB5C1B100BE72C5 /* Sources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "libSDL-tv";
+			productName = "libSDL-tv";
+			productReference = FAB598141BB5C1B100BE72C5 /* libSDL2.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 		FD6526620DE8FCCB002AD96B /* libSDL */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = FD6526990DE8FD14002AD96B /* Build configuration list for PBXNativeTarget "libSDL" */;
@@ -1086,7 +1203,12 @@
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 0630;
+				LastUpgradeCheck = 0800;
+				TargetAttributes = {
+					FAB598131BB5C1B100BE72C5 = {
+						CreatedOnToolsVersion = 7.1;
+					};
+				};
 			};
 			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDL" */;
 			compatibilityVersion = "Xcode 3.2";
@@ -1103,6 +1225,7 @@
 			projectRoot = ../..;
 			targets = (
 				FD6526620DE8FCCB002AD96B /* libSDL */,
+				FAB598131BB5C1B100BE72C5 /* libSDL-tv */,
 				00B4F48B12F6A69C0084EC00 /* PrepareXcodeProjectTemplate */,
 			);
 		};
@@ -1126,6 +1249,108 @@
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+		FAB598101BB5C1B100BE72C5 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FAB5981D1BB5C31500BE72C5 /* SDL_atomic.c in Sources */,
+				FAB5981E1BB5C31500BE72C5 /* SDL_spinlock.c in Sources */,
+				FAB5981F1BB5C31500BE72C5 /* SDL_coreaudio.m in Sources */,
+				FAB598211BB5C31500BE72C5 /* SDL_dummyaudio.c in Sources */,
+				FAB598231BB5C31500BE72C5 /* SDL_audio.c in Sources */,
+				FAB598251BB5C31500BE72C5 /* SDL_audiocvt.c in Sources */,
+				FAB598271BB5C31500BE72C5 /* SDL_audiotypecvt.c in Sources */,
+				FAB598281BB5C31500BE72C5 /* SDL_mixer.c in Sources */,
+				FAB5982A1BB5C31500BE72C5 /* SDL_wave.c in Sources */,
+				FAFDF8C61D88D4530083E6F2 /* SDL_uikitclipboard.m in Sources */,
+				FAB5982C1BB5C31500BE72C5 /* SDL_cpuinfo.c in Sources */,
+				FAB5982F1BB5C31500BE72C5 /* SDL_dynapi.c in Sources */,
+				FAB598361BB5C31500BE72C5 /* SDL_clipboardevents.c in Sources */,
+				FAB598381BB5C31500BE72C5 /* SDL_dropevents.c in Sources */,
+				FAB5983A1BB5C31500BE72C5 /* SDL_events.c in Sources */,
+				FAB5983C1BB5C31500BE72C5 /* SDL_gesture.c in Sources */,
+				FAB5983E1BB5C31500BE72C5 /* SDL_keyboard.c in Sources */,
+				FAB598401BB5C31500BE72C5 /* SDL_mouse.c in Sources */,
+				FAB598421BB5C31500BE72C5 /* SDL_quit.c in Sources */,
+				FAB598441BB5C31500BE72C5 /* SDL_touch.c in Sources */,
+				FAB598461BB5C31500BE72C5 /* SDL_windowevents.c in Sources */,
+				FAB598491BB5C31600BE72C5 /* SDL_rwopsbundlesupport.m in Sources */,
+				FAB5984A1BB5C31600BE72C5 /* SDL_rwops.c in Sources */,
+				FAB5984B1BB5C31600BE72C5 /* SDL_sysfilesystem.m in Sources */,
+				FAB5984C1BB5C31600BE72C5 /* SDL_syshaptic.c in Sources */,
+				FAB5984D1BB5C31600BE72C5 /* SDL_haptic.c in Sources */,
+				FAB598501BB5C31600BE72C5 /* SDL_sysjoystick.m in Sources */,
+				FAB598511BB5C31600BE72C5 /* SDL_gamecontroller.c in Sources */,
+				FAB598521BB5C31600BE72C5 /* SDL_joystick.c in Sources */,
+				FAB598551BB5C31600BE72C5 /* SDL_sysloadso.c in Sources */,
+				FAB598561BB5C31600BE72C5 /* SDL_sysloadso.c in Sources */,
+				FAB598571BB5C31600BE72C5 /* SDL_power.c in Sources */,
+				FAB598581BB5C31600BE72C5 /* SDL_syspower.m in Sources */,
+				FAB598591BB5C31600BE72C5 /* SDL_render_gles.c in Sources */,
+				FAB5985A1BB5C31600BE72C5 /* SDL_render_gles2.c in Sources */,
+				FAB5985B1BB5C31600BE72C5 /* SDL_shaders_gles2.c in Sources */,
+				FAB5985D1BB5C31600BE72C5 /* SDL_blendfillrect.c in Sources */,
+				FAB5985F1BB5C31600BE72C5 /* SDL_blendline.c in Sources */,
+				FAB598611BB5C31600BE72C5 /* SDL_blendpoint.c in Sources */,
+				FAB598641BB5C31600BE72C5 /* SDL_drawline.c in Sources */,
+				FAB598661BB5C31600BE72C5 /* SDL_drawpoint.c in Sources */,
+				FAB598681BB5C31600BE72C5 /* SDL_render_sw.c in Sources */,
+				FAB5986A1BB5C31600BE72C5 /* SDL_rotate.c in Sources */,
+				FAB5986D1BB5C31600BE72C5 /* SDL_render.c in Sources */,
+				FAB5986F1BB5C31600BE72C5 /* SDL_yuv_mmx.c in Sources */,
+				FAB598711BB5C31600BE72C5 /* SDL_yuv_sw.c in Sources */,
+				FAB598721BB5C31600BE72C5 /* SDL_getenv.c in Sources */,
+				FAB598731BB5C31600BE72C5 /* SDL_iconv.c in Sources */,
+				FAB598741BB5C31600BE72C5 /* SDL_malloc.c in Sources */,
+				FAB598751BB5C31600BE72C5 /* SDL_qsort.c in Sources */,
+				FAB598761BB5C31600BE72C5 /* SDL_stdlib.c in Sources */,
+				FAB598771BB5C31600BE72C5 /* SDL_string.c in Sources */,
+				FAB598781BB5C31600BE72C5 /* SDL_syscond.c in Sources */,
+				FAB598791BB5C31600BE72C5 /* SDL_sysmutex.c in Sources */,
+				FAB5987B1BB5C31600BE72C5 /* SDL_syssem.c in Sources */,
+				FAB5987C1BB5C31600BE72C5 /* SDL_systhread.c in Sources */,
+				FAB5987E1BB5C31600BE72C5 /* SDL_systls.c in Sources */,
+				FAB598801BB5C31600BE72C5 /* SDL_thread.c in Sources */,
+				FAB598821BB5C31600BE72C5 /* SDL_systimer.c in Sources */,
+				FAB598831BB5C31600BE72C5 /* SDL_timer.c in Sources */,
+				FAB598871BB5C31600BE72C5 /* SDL_uikitappdelegate.m in Sources */,
+				FAB598891BB5C31600BE72C5 /* SDL_uikitevents.m in Sources */,
+				FAB5988B1BB5C31600BE72C5 /* SDL_uikitmessagebox.m in Sources */,
+				FAB5988D1BB5C31600BE72C5 /* SDL_uikitmodes.m in Sources */,
+				FAB5988F1BB5C31600BE72C5 /* SDL_uikitopengles.m in Sources */,
+				FAB598911BB5C31600BE72C5 /* SDL_uikitopenglview.m in Sources */,
+				FAB598931BB5C31600BE72C5 /* SDL_uikitvideo.m in Sources */,
+				FAB598951BB5C31600BE72C5 /* SDL_uikitview.m in Sources */,
+				FAB598971BB5C31600BE72C5 /* SDL_uikitviewcontroller.m in Sources */,
+				FAB598991BB5C31600BE72C5 /* SDL_uikitwindow.m in Sources */,
+				FAB5989A1BB5C31600BE72C5 /* SDL_nullevents.c in Sources */,
+				FAB5989D1BB5C31600BE72C5 /* SDL_nullframebuffer.c in Sources */,
+				FAB5989E1BB5C31600BE72C5 /* SDL_nullvideo.c in Sources */,
+				FAB598A01BB5C31600BE72C5 /* SDL_blit.c in Sources */,
+				FAB598A21BB5C31600BE72C5 /* SDL_blit_0.c in Sources */,
+				FAB598A31BB5C31600BE72C5 /* SDL_blit_1.c in Sources */,
+				FAB598A41BB5C31600BE72C5 /* SDL_blit_A.c in Sources */,
+				FAB598A51BB5C31600BE72C5 /* SDL_blit_auto.c in Sources */,
+				FAB598A71BB5C31600BE72C5 /* SDL_blit_copy.c in Sources */,
+				FAB598A91BB5C31600BE72C5 /* SDL_blit_N.c in Sources */,
+				FAB598AA1BB5C31600BE72C5 /* SDL_blit_slow.c in Sources */,
+				FAB598AC1BB5C31600BE72C5 /* SDL_bmp.c in Sources */,
+				FAB598AD1BB5C31600BE72C5 /* SDL_clipboard.c in Sources */,
+				FAB598AE1BB5C31600BE72C5 /* SDL_fillrect.c in Sources */,
+				FAB598AF1BB5C31600BE72C5 /* SDL_pixels.c in Sources */,
+				FAB598B11BB5C31600BE72C5 /* SDL_rect.c in Sources */,
+				FAB598B21BB5C31600BE72C5 /* SDL_RLEaccel.c in Sources */,
+				FAB598B41BB5C31600BE72C5 /* SDL_stretch.c in Sources */,
+				FAB598B51BB5C31600BE72C5 /* SDL_surface.c in Sources */,
+				FAB598B71BB5C31600BE72C5 /* SDL_video.c in Sources */,
+				FAB598B91BB5C31600BE72C5 /* SDL_assert.c in Sources */,
+				FAB598BC1BB5C31600BE72C5 /* SDL_error.c in Sources */,
+				FAB598BD1BB5C31600BE72C5 /* SDL_hints.c in Sources */,
+				FAB598BE1BB5C31600BE72C5 /* SDL_log.c in Sources */,
+				FAB598BF1BB5C31600BE72C5 /* SDL.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		FD6526600DE8FCCB002AD96B /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -1139,6 +1364,7 @@
 				FD65266A0DE8FCDD002AD96B /* SDL_audiotypecvt.c in Sources */,
 				FD65266B0DE8FCDD002AD96B /* SDL_mixer.c in Sources */,
 				FD65266F0DE8FCDD002AD96B /* SDL_wave.c in Sources */,
+				FA1DC2731C62BE65008F99A0 /* SDL_uikitclipboard.m in Sources */,
 				FD6526700DE8FCDD002AD96B /* SDL_cpuinfo.c in Sources */,
 				FD6526710DE8FCDD002AD96B /* SDL_events.c in Sources */,
 				FD6526720DE8FCDD002AD96B /* SDL_keyboard.c in Sources */,
@@ -1215,7 +1441,7 @@
 				0402A85812FE70C600CECEE3 /* SDL_render_gles2.c in Sources */,
 				0402A85912FE70C600CECEE3 /* SDL_shaders_gles2.c in Sources */,
 				04BAC09D1300C1290055DE28 /* SDL_log.c in Sources */,
-				56EA86FB13E9EC2B002E47EB /* SDL_coreaudio.c in Sources */,
+				56EA86FB13E9EC2B002E47EB /* SDL_coreaudio.m in Sources */,
 				93CB792613FC5F5300BD3E05 /* SDL_uikitviewcontroller.m in Sources */,
 				AA628ADB159369E3005138DD /* SDL_rotate.c in Sources */,
 				AA126AD51617C5E7005ABC8F /* SDL_uikitmodes.m in Sources */,
@@ -1253,7 +1479,9 @@
 		C01FCF4F08A954540054247B /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ENABLE_OBJC_ARC = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				ENABLE_TESTABILITY = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
@@ -1267,6 +1495,7 @@
 		C01FCF5008A954540054247B /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_ENABLE_OBJC_ARC = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
@@ -1276,6 +1505,94 @@
 			};
 			name = Release;
 		};
+		FAB5981B1BB5C1B100BE72C5 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_NAME = SDL2;
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
+		FAB5981C1BB5C1B100BE72C5 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_NAME = SDL2;
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
 		FD6526640DE8FCCB002AD96B /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -1327,6 +1644,15 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		FAB5981A1BB5C1B100BE72C5 /* Build configuration list for PBXNativeTarget "libSDL-tv" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FAB5981B1BB5C1B100BE72C5 /* Debug */,
+				FAB5981C1BB5C1B100BE72C5 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		FD6526990DE8FD14002AD96B /* Build configuration list for PBXNativeTarget "libSDL" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

+ 143 - 2
jni/SDL2-2.0.4/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj → jni/SDL2-2.0.5/Xcode-iOS/SDLtest/SDL2test.xcodeproj/project.pbxproj

@@ -21,8 +21,34 @@
 		AA1EE46D176059AB0029C7A5 /* SDL_test_log.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45F176059AB0029C7A5 /* SDL_test_log.c */; };
 		AA1EE46E176059AB0029C7A5 /* SDL_test_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE460176059AB0029C7A5 /* SDL_test_md5.c */; };
 		AA1EE46F176059AB0029C7A5 /* SDL_test_random.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE461176059AB0029C7A5 /* SDL_test_random.c */; };
+		FA3D99011BC4E5BC002C96C8 /* SDL_test_common.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE454176059AB0029C7A5 /* SDL_test_common.c */; };
+		FA3D99021BC4E5BC002C96C8 /* SDL_test_compare.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE455176059AB0029C7A5 /* SDL_test_compare.c */; };
+		FA3D99031BC4E5BC002C96C8 /* SDL_test_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE456176059AB0029C7A5 /* SDL_test_crc32.c */; };
+		FA3D99041BC4E5BC002C96C8 /* SDL_test_font.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE457176059AB0029C7A5 /* SDL_test_font.c */; };
+		FA3D99051BC4E5BC002C96C8 /* SDL_test_fuzzer.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE458176059AB0029C7A5 /* SDL_test_fuzzer.c */; };
+		FA3D99061BC4E5BC002C96C8 /* SDL_test_harness.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE459176059AB0029C7A5 /* SDL_test_harness.c */; };
+		FA3D99071BC4E5BC002C96C8 /* SDL_test_imageBlit.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45A176059AB0029C7A5 /* SDL_test_imageBlit.c */; };
+		FA3D99081BC4E5BC002C96C8 /* SDL_test_imageBlitBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45B176059AB0029C7A5 /* SDL_test_imageBlitBlend.c */; };
+		FA3D99091BC4E5BC002C96C8 /* SDL_test_imageFace.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45C176059AB0029C7A5 /* SDL_test_imageFace.c */; };
+		FA3D990A1BC4E5BC002C96C8 /* SDL_test_imagePrimitives.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45D176059AB0029C7A5 /* SDL_test_imagePrimitives.c */; };
+		FA3D990B1BC4E5BC002C96C8 /* SDL_test_imagePrimitivesBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45E176059AB0029C7A5 /* SDL_test_imagePrimitivesBlend.c */; };
+		FA3D990C1BC4E5BC002C96C8 /* SDL_test_log.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE45F176059AB0029C7A5 /* SDL_test_log.c */; };
+		FA3D990D1BC4E5BC002C96C8 /* SDL_test_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE460176059AB0029C7A5 /* SDL_test_md5.c */; };
+		FA3D990E1BC4E5BC002C96C8 /* SDL_test_random.c in Sources */ = {isa = PBXBuildFile; fileRef = AA1EE461176059AB0029C7A5 /* SDL_test_random.c */; };
 /* End PBXBuildFile section */
 
+/* Begin PBXCopyFilesBuildPhase section */
+		FA3D98F61BC4E5A2002C96C8 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "include/$(PRODUCT_NAME)";
+			dstSubfolderSpec = 16;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
 /* Begin PBXFileReference section */
 		AA1EE4461760589B0029C7A5 /* libSDL2test.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSDL2test.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		AA1EE454176059AB0029C7A5 /* SDL_test_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_test_common.c; path = ../../src/test/SDL_test_common.c; sourceTree = "<group>"; };
@@ -39,6 +65,7 @@
 		AA1EE45F176059AB0029C7A5 /* SDL_test_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_test_log.c; path = ../../src/test/SDL_test_log.c; sourceTree = "<group>"; };
 		AA1EE460176059AB0029C7A5 /* SDL_test_md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_test_md5.c; path = ../../src/test/SDL_test_md5.c; sourceTree = "<group>"; };
 		AA1EE461176059AB0029C7A5 /* SDL_test_random.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_test_random.c; path = ../../src/test/SDL_test_random.c; sourceTree = "<group>"; };
+		FA3D98F81BC4E5A2002C96C8 /* libSDL2test-TV.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libSDL2test-TV.a"; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -49,6 +76,13 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA3D98F51BC4E5A2002C96C8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
@@ -64,6 +98,7 @@
 			isa = PBXGroup;
 			children = (
 				AA1EE4461760589B0029C7A5 /* libSDL2test.a */,
+				FA3D98F81BC4E5A2002C96C8 /* libSDL2test-TV.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -119,6 +154,23 @@
 			productReference = AA1EE4461760589B0029C7A5 /* libSDL2test.a */;
 			productType = "com.apple.product-type.library.static";
 		};
+		FA3D98F71BC4E5A2002C96C8 /* SDL2test-TV */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FA3D99001BC4E5A3002C96C8 /* Build configuration list for PBXNativeTarget "SDL2test-TV" */;
+			buildPhases = (
+				FA3D98F41BC4E5A2002C96C8 /* Sources */,
+				FA3D98F51BC4E5A2002C96C8 /* Frameworks */,
+				FA3D98F61BC4E5A2002C96C8 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "SDL2test-TV";
+			productName = "SDL2test-TV";
+			productReference = FA3D98F81BC4E5A2002C96C8 /* libSDL2test-TV.a */;
+			productType = "com.apple.product-type.library.static";
+		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
@@ -127,6 +179,11 @@
 			attributes = {
 				LastUpgradeCheck = 0460;
 				ORGANIZATIONNAME = "Sam Lantinga";
+				TargetAttributes = {
+					FA3D98F71BC4E5A2002C96C8 = {
+						CreatedOnToolsVersion = 7.1;
+					};
+				};
 			};
 			buildConfigurationList = AA1EE4411760589B0029C7A5 /* Build configuration list for PBXProject "SDL2test" */;
 			compatibilityVersion = "Xcode 3.2";
@@ -141,6 +198,7 @@
 			projectRoot = "";
 			targets = (
 				AA1EE4451760589B0029C7A5 /* SDL2test */,
+				FA3D98F71BC4E5A2002C96C8 /* SDL2test-TV */,
 			);
 		};
 /* End PBXProject section */
@@ -167,6 +225,27 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA3D98F41BC4E5A2002C96C8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA3D99011BC4E5BC002C96C8 /* SDL_test_common.c in Sources */,
+				FA3D99021BC4E5BC002C96C8 /* SDL_test_compare.c in Sources */,
+				FA3D99031BC4E5BC002C96C8 /* SDL_test_crc32.c in Sources */,
+				FA3D99041BC4E5BC002C96C8 /* SDL_test_font.c in Sources */,
+				FA3D99051BC4E5BC002C96C8 /* SDL_test_fuzzer.c in Sources */,
+				FA3D99061BC4E5BC002C96C8 /* SDL_test_harness.c in Sources */,
+				FA3D99071BC4E5BC002C96C8 /* SDL_test_imageBlit.c in Sources */,
+				FA3D99081BC4E5BC002C96C8 /* SDL_test_imageBlitBlend.c in Sources */,
+				FA3D99091BC4E5BC002C96C8 /* SDL_test_imageFace.c in Sources */,
+				FA3D990A1BC4E5BC002C96C8 /* SDL_test_imagePrimitives.c in Sources */,
+				FA3D990B1BC4E5BC002C96C8 /* SDL_test_imagePrimitivesBlend.c in Sources */,
+				FA3D990C1BC4E5BC002C96C8 /* SDL_test_log.c in Sources */,
+				FA3D990D1BC4E5BC002C96C8 /* SDL_test_md5.c in Sources */,
+				FA3D990E1BC4E5BC002C96C8 /* SDL_test_random.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin XCBuildConfiguration section */
@@ -195,6 +274,7 @@
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = ../../include;
 				MACOSX_DEPLOYMENT_TARGET = 10.8;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = iphoneos;
@@ -220,6 +300,7 @@
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
+				HEADER_SEARCH_PATHS = ../../include;
 				MACOSX_DEPLOYMENT_TARGET = 10.8;
 				SDKROOT = iphoneos;
 			};
@@ -229,7 +310,6 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				EXECUTABLE_PREFIX = lib;
-				HEADER_SEARCH_PATHS = ../../include;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 			};
 			name = Debug;
@@ -238,11 +318,63 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				EXECUTABLE_PREFIX = lib;
-				HEADER_SEARCH_PATHS = ../../include;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 			};
 			name = Release;
 		};
+		FA3D98FE1BC4E5A3002C96C8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
+		FA3D98FF1BC4E5A3002C96C8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				COPY_PHASE_STRIP = NO;
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SKIP_INSTALL = YES;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
@@ -264,6 +396,15 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		FA3D99001BC4E5A3002C96C8 /* Build configuration list for PBXNativeTarget "SDL2test-TV" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FA3D98FE1BC4E5A3002C96C8 /* Debug */,
+				FA3D98FF1BC4E5A3002C96C8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 /* End XCConfigurationList section */
 	};
 	rootObject = AA1EE43E1760589B0029C7A5 /* Project object */;

+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/[email protected] → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/[email protected]


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/Default.png → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/Default.png


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/Icon.png → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/Icon.png


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/Info.plist → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/Info.plist


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateIcon.icns → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateIcon.icns


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateInfo.plist → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/TemplateInfo.plist


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.pbxproj → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.pbxproj


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.xcworkspace/contents.xcworkspacedata → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/___PROJECTNAME___.xcodeproj/project.xcworkspace/contents.xcworkspacedata


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Template/SDL iOS Application/main.c → jni/SDL2-2.0.5/Xcode-iOS/Template/SDL iOS Application/main.c


+ 0 - 0
jni/SDL2-2.0.4/Xcode-iOS/Test/Info.plist → jni/SDL2-2.0.5/Xcode-iOS/Test/Info.plist


+ 0 - 11
jni/SDL2-2.0.4/Xcode-iOS/Test/README → jni/SDL2-2.0.5/Xcode-iOS/Test/README

@@ -1,22 +1,11 @@
 TestiPhoneOS.xcodeproj contains targets to compile many of the SDL test programs for iPhone OS.  Most of these test programs work fine, with the following exceptions:
 
-testalpha:
-	Program crashes.  Problem appears to effect Mac OS X as well.
-
 testthread:
 	SIGTERM kills the process immediately without executing the 'kill' function.  The posix standard says this shouldn't happen.  Apple seems intent on having iPhone apps exit promptly when the user requests it, so maybe that's why(?)
 
 testlock:
 	Locks appear to work, but there doesn't appear to be a simple way to send the process SIGINT.
 
-testpalette:
-	"SDL error: blitting boat: Blit combination not supported."  Happens on Mac OS X as well.
-
 testsprite2: 
 	SDL_CreateTextureFromSurface requests an ARGB pixel format, but iPhone's SDL video driver only supports ABGR.
 
-testwin:
-	Behaves as it does under Mac OS X ... not sure if that is correctly or not.
-
-threadwin:
-	Works if -threaded is not on.  Otherwise it doesn't work, but this is true under Mac OS X as well.

+ 480 - 5
jni/SDL2-2.0.4/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj → jni/SDL2-2.0.5/Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj

@@ -65,7 +65,19 @@
 		AAE7DFAC14CBB54E00DF1A0E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
 		AAE7DFAD14CBB54E00DF1A0E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
 		AAE7DFB514CBB5F700DF1A0E /* testrendertarget.c in Sources */ = {isa = PBXBuildFile; fileRef = AAE7DFB414CBB5F700DF1A0E /* testrendertarget.c */; };
-		FA0EF22E1BAF4654000E07A6 /* testjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A74E0E2D0F1600EA573E /* testjoystick.c */; settings = {ASSET_TAGS = (); }; };
+		FA0EF22E1BAF4654000E07A6 /* testjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A74E0E2D0F1600EA573E /* testjoystick.c */; };
+		FA3D99481BC4E6AD002C96C8 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FA3D994A1BC4E6AD002C96C8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FA3D994B1BC4E6AD002C96C8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FA3D994C1BC4E6AD002C96C8 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FA3D994D1BC4E6AD002C96C8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FA3D994E1BC4E6AD002C96C8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FA3D994F1BC4E6AD002C96C8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FA3D99501BC4E6AD002C96C8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FA3D99521BC4E70C002C96C8 /* controllermap.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF22A1BAF4487000E07A6 /* controllermap.bmp */; };
+		FA3D99531BC4E70E002C96C8 /* axis.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2281BAF4487000E07A6 /* axis.bmp */; };
+		FA3D99541BC4E70F002C96C8 /* button.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2291BAF4487000E07A6 /* button.bmp */; };
+		FA3D99551BC4E712002C96C8 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
 		FA684F7B1BAF1A4400DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
 		FA684F7F1BAF1A4D00DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
 		FA684F801BAF1A5000DCFD1A /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
@@ -112,6 +124,59 @@
 		FA8B4BDF196766F100F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
 		FA8B4BE0196766F400F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
 		FA8B4BE1196766F600F8EB7C /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FAA8CEE41BDF06D600D3BD45 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA3D992B1BC4E619002C96C8 /* libSDL2.a */; };
+		FABA34771D8B4EAD00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34831D8B575200915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34841D8B575200915323 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FD1B48B80E3131CA007AB34E /* libSDL2.a */; };
+		FABA34851D8B575200915323 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FABA34861D8B575200915323 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FABA34871D8B575200915323 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FABA34881D8B575200915323 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FABA34891D8B575200915323 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FABA348A1D8B575200915323 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FABA348B1D8B575200915323 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FABA348C1D8B575200915323 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FABA348D1D8B575200915323 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FABA34941D8B578200915323 /* testaudiocapture.c in Sources */ = {isa = PBXBuildFile; fileRef = FABA34931D8B578200915323 /* testaudiocapture.c */; };
+		FABA34951D8B578600915323 /* testaudiocapture.c in Sources */ = {isa = PBXBuildFile; fileRef = FABA34931D8B578200915323 /* testaudiocapture.c */; };
+		FABA34981D8B582100915323 /* sample.wav in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAE20E2D33C600EA573E /* sample.wav */; };
+		FABA349A1D8B582100915323 /* loopwave.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A78B0E2D0F3D00EA573E /* loopwave.c */; };
+		FABA349C1D8B582100915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA349D1D8B582100915323 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FD1B48B80E3131CA007AB34E /* libSDL2.a */; };
+		FABA349E1D8B582100915323 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
+		FABA349F1D8B582100915323 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */; };
+		FABA34A01D8B582100915323 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
+		FABA34A11D8B582100915323 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
+		FABA34A21D8B582100915323 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89A0E2D111A00EA573E /* OpenGLES.framework */; };
+		FABA34A31D8B582100915323 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89B0E2D111A00EA573E /* CoreGraphics.framework */; };
+		FABA34A41D8B582100915323 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
+		FABA34A51D8B582100915323 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
+		FABA34A61D8B582100915323 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
+		FABA34AD1D8B58A700915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34AC1D8B58A700915323 /* AVFoundation.framework */; };
+		FABA34AE1D8B58B200915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34AF1D8B59F800915323 /* testaudiocapture.c in Sources */ = {isa = PBXBuildFile; fileRef = FABA34931D8B578200915323 /* testaudiocapture.c */; };
+		FABA34B01D8B5B6400915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B11D8B5B6C00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B21D8B5B7300915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B31D8B5B7800915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B41D8B5B7C00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B51D8B5B8400915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B61D8B5B8900915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B71D8B5B8D00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B81D8B5B9200915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34B91D8B5B9600915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BA1D8B5B9B00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BB1D8B5BA100915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BC1D8B5BA600915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BD1D8B5BAB00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BE1D8B5BB000915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34BF1D8B5BB500915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C01D8B5BBA00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C11D8B5BBE00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C21D8B5BC200915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C31D8B5BC600915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C41D8B5BCB00915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
+		FABA34C51D8B5BD000915323 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FABA34761D8B4EAD00915323 /* AVFoundation.framework */; };
 		FAE0E9821BAF9B230098DFA4 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FDA8AAD90E2D33B000EA573E /* icon.bmp */; };
 		FAE0E9861BAF9B230098DFA4 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FD1B48B80E3131CA007AB34E /* libSDL2.a */; };
 		FAE0E9871BAF9B230098DFA4 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA684F7A1BAF1A4400DCFD1A /* GameController.framework */; };
@@ -123,10 +188,10 @@
 		FAE0E98D1BAF9B230098DFA4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89C0E2D111A00EA573E /* UIKit.framework */; };
 		FAE0E98E1BAF9B230098DFA4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89D0E2D111A00EA573E /* Foundation.framework */; };
 		FAE0E98F1BAF9B230098DFA4 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A89E0E2D111A00EA573E /* CoreAudio.framework */; };
-		FAE0E9951BAF9B510098DFA4 /* testgamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = FA0EF2221BAF43DE000E07A6 /* testgamecontroller.c */; settings = {ASSET_TAGS = (); }; };
-		FAE0E9961BAF9B650098DFA4 /* controllermap.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF22A1BAF4487000E07A6 /* controllermap.bmp */; settings = {ASSET_TAGS = (); }; };
-		FAE0E9971BAF9B6A0098DFA4 /* button.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2291BAF4487000E07A6 /* button.bmp */; settings = {ASSET_TAGS = (); }; };
-		FAE0E9981BAF9B6E0098DFA4 /* axis.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2281BAF4487000E07A6 /* axis.bmp */; settings = {ASSET_TAGS = (); }; };
+		FAE0E9951BAF9B510098DFA4 /* testgamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = FA0EF2221BAF43DE000E07A6 /* testgamecontroller.c */; };
+		FAE0E9961BAF9B650098DFA4 /* controllermap.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF22A1BAF4487000E07A6 /* controllermap.bmp */; };
+		FAE0E9971BAF9B6A0098DFA4 /* button.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2291BAF4487000E07A6 /* button.bmp */; };
+		FAE0E9981BAF9B6E0098DFA4 /* axis.bmp in Resources */ = {isa = PBXBuildFile; fileRef = FA0EF2281BAF4487000E07A6 /* axis.bmp */; };
 		FDA8A79C0E2D0F9300EA573E /* testwm2.c in Sources */ = {isa = PBXBuildFile; fileRef = FDA8A75F0E2D0F1600EA573E /* testwm2.c */; };
 		FDA8A89F0E2D111A00EA573E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8980E2D111A00EA573E /* AudioToolbox.framework */; };
 		FDA8A8A00E2D111A00EA573E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FDA8A8990E2D111A00EA573E /* QuartzCore.framework */; };
@@ -304,6 +369,27 @@
 			remoteGlobalIDString = AA1EE4461760589B0029C7A5;
 			remoteInfo = SDL2test;
 		};
+		FA3D992A1BC4E619002C96C8 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = FD1B48AC0E3131CA007AB34E /* SDL.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = FAB598141BB5C1B100BE72C5;
+			remoteInfo = "libSDL-tv";
+		};
+		FA3D992E1BC4E619002C96C8 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = AA1EE44D176059220029C7A5 /* SDL2test.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = FA3D98F81BC4E5A2002C96C8;
+			remoteInfo = "SDL2test-TV";
+		};
+		FAA8CEE51BDF06DC00D3BD45 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = FD1B48AC0E3131CA007AB34E /* SDL.xcodeproj */;
+			proxyType = 1;
+			remoteGlobalIDString = FAB598131BB5C1B100BE72C5;
+			remoteInfo = "libSDL-tv";
+		};
 		FD1B48B70E3131CA007AB34E /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = FD1B48AC0E3131CA007AB34E /* SDL.xcodeproj */;
@@ -330,8 +416,14 @@
 		FA0EF2281BAF4487000E07A6 /* axis.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = axis.bmp; path = ../../test/axis.bmp; sourceTree = "<group>"; };
 		FA0EF2291BAF4487000E07A6 /* button.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = button.bmp; path = ../../test/button.bmp; sourceTree = "<group>"; };
 		FA0EF22A1BAF4487000E07A6 /* controllermap.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = controllermap.bmp; path = ../../test/controllermap.bmp; sourceTree = "<group>"; };
+		FA3D99341BC4E644002C96C8 /* testgamecontroller-TV.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "testgamecontroller-TV.app"; sourceTree = BUILT_PRODUCTS_DIR; };
 		FA684F7A1BAF1A4400DCFD1A /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; };
 		FA8B4BAC1967076F00F8EB7C /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+		FABA34761D8B4EAD00915323 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+		FABA34911D8B575200915323 /* testaudiocapture.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testaudiocapture.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		FABA34931D8B578200915323 /* testaudiocapture.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testaudiocapture.c; path = ../../test/testaudiocapture.c; sourceTree = "<group>"; };
+		FABA34AA1D8B582100915323 /* loopwav-TV.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "loopwav-TV.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		FABA34AC1D8B58A700915323 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS10.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; };
 		FAE0E9931BAF9B230098DFA4 /* testgamecontroller.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testgamecontroller.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		FD1B48AC0E3131CA007AB34E /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = ../SDL/SDL.xcodeproj; sourceTree = SOURCE_ROOT; };
 		FDA8A7410E2D0F1600EA573E /* testaudioinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testaudioinfo.c; path = ../../test/testaudioinfo.c; sourceTree = SOURCE_ROOT; };
@@ -390,6 +482,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B51D8B5B8400915323 /* AVFoundation.framework in Frameworks */,
 				046CEF7B13254F23007AD51D /* libSDL2.a in Frameworks */,
 				FA684F841BAF1A5C00DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BD1196766C900F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -407,6 +500,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B01D8B5B6400915323 /* AVFoundation.framework in Frameworks */,
 				AA1EE470176059D00029C7A5 /* libSDL2test.a in Frameworks */,
 				047A63E213285C3200CD7973 /* libSDL2.a in Frameworks */,
 				FA684F7B1BAF1A4400DCFD1A /* GameController.framework in Frameworks */,
@@ -425,6 +519,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34C41D8B5BCB00915323 /* AVFoundation.framework in Frameworks */,
 				AA1EE47817605BF60029C7A5 /* libSDL2test.a in Frameworks */,
 				FDBDE5810E313465006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F931BAF1A8A00DCFD1A /* GameController.framework in Frameworks */,
@@ -443,6 +538,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34BC1D8B5BA600915323 /* AVFoundation.framework in Frameworks */,
 				56ED0502118A8FE400A56AA6 /* libSDL2.a in Frameworks */,
 				FA684F8B1BAF1A7100DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BD8196766DD00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -460,6 +556,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34BE1D8B5BB000915323 /* AVFoundation.framework in Frameworks */,
 				AA1EE47617605B9E0029C7A5 /* libSDL2test.a in Frameworks */,
 				AAE7DEE114CBB1E100DF1A0E /* libSDL2.a in Frameworks */,
 				FA684F8D1BAF1A7800DCFD1A /* GameController.framework in Frameworks */,
@@ -478,6 +575,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34BD1D8B5BAB00915323 /* AVFoundation.framework in Frameworks */,
 				AA1EE47517605B930029C7A5 /* libSDL2test.a in Frameworks */,
 				AAE7DFA614CBB54E00DF1A0E /* libSDL2.a in Frameworks */,
 				FA684F8C1BAF1A7400DCFD1A /* GameController.framework in Frameworks */,
@@ -492,10 +590,64 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA3D99311BC4E644002C96C8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA34AD1D8B58A700915323 /* AVFoundation.framework in Frameworks */,
+				FAA8CEE41BDF06D600D3BD45 /* libSDL2.a in Frameworks */,
+				FA3D99481BC4E6AD002C96C8 /* GameController.framework in Frameworks */,
+				FA3D994A1BC4E6AD002C96C8 /* AudioToolbox.framework in Frameworks */,
+				FA3D994B1BC4E6AD002C96C8 /* QuartzCore.framework in Frameworks */,
+				FA3D994C1BC4E6AD002C96C8 /* OpenGLES.framework in Frameworks */,
+				FA3D994D1BC4E6AD002C96C8 /* CoreGraphics.framework in Frameworks */,
+				FA3D994E1BC4E6AD002C96C8 /* UIKit.framework in Frameworks */,
+				FA3D994F1BC4E6AD002C96C8 /* Foundation.framework in Frameworks */,
+				FA3D99501BC4E6AD002C96C8 /* CoreAudio.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA34821D8B575200915323 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA34831D8B575200915323 /* AVFoundation.framework in Frameworks */,
+				FABA34841D8B575200915323 /* libSDL2.a in Frameworks */,
+				FABA34851D8B575200915323 /* GameController.framework in Frameworks */,
+				FABA34861D8B575200915323 /* CoreMotion.framework in Frameworks */,
+				FABA34871D8B575200915323 /* AudioToolbox.framework in Frameworks */,
+				FABA34881D8B575200915323 /* QuartzCore.framework in Frameworks */,
+				FABA34891D8B575200915323 /* OpenGLES.framework in Frameworks */,
+				FABA348A1D8B575200915323 /* CoreGraphics.framework in Frameworks */,
+				FABA348B1D8B575200915323 /* UIKit.framework in Frameworks */,
+				FABA348C1D8B575200915323 /* Foundation.framework in Frameworks */,
+				FABA348D1D8B575200915323 /* CoreAudio.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA349B1D8B582100915323 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA349C1D8B582100915323 /* AVFoundation.framework in Frameworks */,
+				FABA349D1D8B582100915323 /* libSDL2.a in Frameworks */,
+				FABA349E1D8B582100915323 /* GameController.framework in Frameworks */,
+				FABA349F1D8B582100915323 /* CoreMotion.framework in Frameworks */,
+				FABA34A01D8B582100915323 /* AudioToolbox.framework in Frameworks */,
+				FABA34A11D8B582100915323 /* QuartzCore.framework in Frameworks */,
+				FABA34A21D8B582100915323 /* OpenGLES.framework in Frameworks */,
+				FABA34A31D8B582100915323 /* CoreGraphics.framework in Frameworks */,
+				FABA34A41D8B582100915323 /* UIKit.framework in Frameworks */,
+				FABA34A51D8B582100915323 /* Foundation.framework in Frameworks */,
+				FABA34A61D8B582100915323 /* CoreAudio.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		FAE0E9851BAF9B230098DFA4 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34AE1D8B58B200915323 /* AVFoundation.framework in Frameworks */,
 				FAE0E9861BAF9B230098DFA4 /* libSDL2.a in Frameworks */,
 				FAE0E9871BAF9B230098DFA4 /* GameController.framework in Frameworks */,
 				FAE0E9881BAF9B230098DFA4 /* CoreMotion.framework in Frameworks */,
@@ -513,6 +665,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34771D8B4EAD00915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5850E313495006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F7F1BAF1A4D00DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BC9196766BC00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -530,6 +683,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B11D8B5B6C00915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE58C0E3134F3006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F801BAF1A5000DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BCD196766BF00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -547,6 +701,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B31D8B5B7800915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE59B0E31356A006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F821BAF1A5700DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BCF196766C400F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -564,6 +719,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B41D8B5B7C00915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE59F0E31358D006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F831BAF1A5A00DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BD0196766C600F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -581,6 +737,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B61D8B5B8900915323 /* AVFoundation.framework in Frameworks */,
 				AA1EE47417605B5C0029C7A5 /* libSDL2test.a in Frameworks */,
 				FDBDE57C0E313445006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F851BAF1A6000DCFD1A /* GameController.framework in Frameworks */,
@@ -599,6 +756,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B21D8B5B7300915323 /* AVFoundation.framework in Frameworks */,
 				AA1EE47117605A7F0029C7A5 /* libSDL2test.a in Frameworks */,
 				FDC42FF40F0D866D009C87E1 /* libSDL2.a in Frameworks */,
 				FA684F811BAF1A5300DCFD1A /* GameController.framework in Frameworks */,
@@ -617,6 +775,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34C11D8B5BBE00915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5A90E3135C0006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F901BAF1A8100DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BDD196766EB00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -634,6 +793,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B71D8B5B8D00915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5AE0E3135E6006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F861BAF1A6200DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BD3196766CE00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -651,6 +811,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B81D8B5B9200915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5B60E3135FE006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F871BAF1A6500DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BD4196766D100F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -668,6 +829,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34B91D8B5B9600915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5BC0E31364D006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F881BAF1A6800DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BD5196766D400F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -685,6 +847,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34BA1D8B5B9B00915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5C20E313663006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F891BAF1A6A00DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BD6196766D700F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -702,6 +865,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34BB1D8B5BA100915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5C60E3136F1006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F8A1BAF1A6D00DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BD7196766DA00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -719,6 +883,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34BF1D8B5BB500915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5C80E313702006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F8E1BAF1A7B00DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BDB196766E500F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -736,6 +901,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34C01D8B5BBA00915323 /* AVFoundation.framework in Frameworks */,
 				AA1EE47717605BAB0029C7A5 /* libSDL2test.a in Frameworks */,
 				FDBDE5CA0E313712006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F8F1BAF1A7E00DCFD1A /* GameController.framework in Frameworks */,
@@ -754,6 +920,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34C21D8B5BC200915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5CC0E31372B006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F911BAF1A8400DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BDE196766EE00F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -771,6 +938,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34C31D8B5BC600915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5CE0E31373E006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F921BAF1A8700DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BDF196766F100F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -788,6 +956,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FABA34C51D8B5BD000915323 /* AVFoundation.framework in Frameworks */,
 				FDBDE5D40E313789006BAC0B /* libSDL2.a in Frameworks */,
 				FA684F941BAF1A9400DCFD1A /* GameController.framework in Frameworks */,
 				FA8B4BE1196766F600F8EB7C /* CoreMotion.framework in Frameworks */,
@@ -831,6 +1000,9 @@
 				AAE7DEEC14CBB1E100DF1A0E /* testscale.app */,
 				AAE7DFB114CBB54E00DF1A0E /* testrendertarget.app */,
 				FAE0E9931BAF9B230098DFA4 /* testgamecontroller.app */,
+				FA3D99341BC4E644002C96C8 /* testgamecontroller-TV.app */,
+				FABA34911D8B575200915323 /* testaudiocapture.app */,
+				FABA34AA1D8B582100915323 /* loopwav-TV.app */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -844,6 +1016,7 @@
 				FDA8A7C30E2D10FA00EA573E /* Linked Frameworks */,
 				FDA8A73B0E2D0F0400EA573E /* src */,
 				19C28FACFE9D520D11CA2CBB /* Products */,
+				FABA34751D8B4EAC00915323 /* Frameworks */,
 			);
 			name = CustomTemplate;
 			sourceTree = "<group>";
@@ -852,14 +1025,25 @@
 			isa = PBXGroup;
 			children = (
 				AA1EE452176059230029C7A5 /* libSDL2test.a */,
+				FA3D992F1BC4E619002C96C8 /* libSDL2test-TV.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
 		};
+		FABA34751D8B4EAC00915323 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				FABA34AC1D8B58A700915323 /* AVFoundation.framework */,
+				FABA34761D8B4EAD00915323 /* AVFoundation.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
 		FD1B48AD0E3131CA007AB34E /* Products */ = {
 			isa = PBXGroup;
 			children = (
 				FD1B48B80E3131CA007AB34E /* libSDL2.a */,
+				FA3D992B1BC4E619002C96C8 /* libSDL2.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -867,6 +1051,7 @@
 		FDA8A73B0E2D0F0400EA573E /* src */ = {
 			isa = PBXGroup;
 			children = (
+				FABA34931D8B578200915323 /* testaudiocapture.c */,
 				047A63F013285CD100CD7973 /* checkkeys.c */,
 				FDA8A78B0E2D0F3D00EA573E /* loopwave.c */,
 				FDA8A7410E2D0F1600EA573E /* testaudioinfo.c */,
@@ -1033,6 +1218,58 @@
 			productReference = AAE7DFB114CBB54E00DF1A0E /* testrendertarget.app */;
 			productType = "com.apple.product-type.application";
 		};
+		FA3D99331BC4E644002C96C8 /* testgamecontroller-TV */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FA3D99451BC4E645002C96C8 /* Build configuration list for PBXNativeTarget "testgamecontroller-TV" */;
+			buildPhases = (
+				FA3D99301BC4E644002C96C8 /* Sources */,
+				FA3D99311BC4E644002C96C8 /* Frameworks */,
+				FA3D99321BC4E644002C96C8 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				FAA8CEE61BDF06DC00D3BD45 /* PBXTargetDependency */,
+			);
+			name = "testgamecontroller-TV";
+			productName = "testgamecontroller-TV";
+			productReference = FA3D99341BC4E644002C96C8 /* testgamecontroller-TV.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FABA347D1D8B575200915323 /* testaudiocapture */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FABA348E1D8B575200915323 /* Build configuration list for PBXNativeTarget "testaudiocapture" */;
+			buildPhases = (
+				FABA347E1D8B575200915323 /* Resources */,
+				FABA34801D8B575200915323 /* Sources */,
+				FABA34821D8B575200915323 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = testaudiocapture;
+			productName = Test;
+			productReference = FABA34911D8B575200915323 /* testaudiocapture.app */;
+			productType = "com.apple.product-type.application";
+		};
+		FABA34961D8B582100915323 /* loopwav-TV */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FABA34A71D8B582100915323 /* Build configuration list for PBXNativeTarget "loopwav-TV" */;
+			buildPhases = (
+				FABA34971D8B582100915323 /* Resources */,
+				FABA34991D8B582100915323 /* Sources */,
+				FABA349B1D8B582100915323 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "loopwav-TV";
+			productName = Test;
+			productReference = FABA34AA1D8B582100915323 /* loopwav-TV.app */;
+			productType = "com.apple.product-type.application";
+		};
 		FAE0E9801BAF9B230098DFA4 /* testgamecontroller */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = FAE0E9901BAF9B230098DFA4 /* Build configuration list for PBXNativeTarget "testgamecontroller" */;
@@ -1346,6 +1583,14 @@
 			isa = PBXProject;
 			attributes = {
 				LastUpgradeCheck = 0630;
+				TargetAttributes = {
+					FA3D99331BC4E644002C96C8 = {
+						CreatedOnToolsVersion = 7.1;
+					};
+					FABA34961D8B582100915323 = {
+						ProvisioningStyle = Automatic;
+					};
+				};
 			};
 			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestiPhoneOS" */;
 			compatibilityVersion = "Xcode 3.2";
@@ -1356,6 +1601,7 @@
 				Japanese,
 				French,
 				German,
+				Base,
 			);
 			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
 			projectDirPath = "";
@@ -1372,12 +1618,15 @@
 			projectRoot = "";
 			targets = (
 				047A63DD13285C3200CD7973 /* checkkeys */,
+				FABA347D1D8B575200915323 /* testaudiocapture */,
 				FDA8AAAA0E2D330F00EA573E /* loopwav */,
+				FABA34961D8B582100915323 /* loopwav-TV */,
 				FDAAC3BB0E2D47E6001DB1D8 /* testaudioinfo */,
 				FDC42FEF0F0D866D009C87E1 /* testdraw2 */,
 				FDAAC58A0E2D5429001DB1D8 /* testerror */,
 				FDAAC5B80E2D55B5001DB1D8 /* testfile */,
 				FAE0E9801BAF9B230098DFA4 /* testgamecontroller */,
+				FA3D99331BC4E644002C96C8 /* testgamecontroller-TV */,
 				046CEF7513254F23007AD51D /* testgesture */,
 				FDAAC6150E2D5914001DB1D8 /* testgles */,
 				FDD2C1700E2E52C000B7A85F /* testiconv */,
@@ -1407,6 +1656,20 @@
 			remoteRef = AA1EE451176059230029C7A5 /* PBXContainerItemProxy */;
 			sourceTree = BUILT_PRODUCTS_DIR;
 		};
+		FA3D992B1BC4E619002C96C8 /* libSDL2.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libSDL2.a;
+			remoteRef = FA3D992A1BC4E619002C96C8 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		FA3D992F1BC4E619002C96C8 /* libSDL2test-TV.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libSDL2test-TV.a";
+			remoteRef = FA3D992E1BC4E619002C96C8 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
 		FD1B48B80E3131CA007AB34E /* libSDL2.a */ = {
 			isa = PBXReferenceProxy;
 			fileType = archive.ar;
@@ -1465,6 +1728,32 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA3D99321BC4E644002C96C8 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA3D99521BC4E70C002C96C8 /* controllermap.bmp in Resources */,
+				FA3D99541BC4E70F002C96C8 /* button.bmp in Resources */,
+				FA3D99531BC4E70E002C96C8 /* axis.bmp in Resources */,
+				FA3D99551BC4E712002C96C8 /* icon.bmp in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA347E1D8B575200915323 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA34971D8B582100915323 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA34981D8B582100915323 /* sample.wav in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		FAE0E9811BAF9B230098DFA4 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -1617,6 +1906,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				047A63F113285CD100CD7973 /* checkkeys.c in Sources */,
+				FABA34941D8B578200915323 /* testaudiocapture.c in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1652,6 +1942,30 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA3D99301BC4E644002C96C8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA34AF1D8B59F800915323 /* testaudiocapture.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA34801D8B575200915323 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA34951D8B578600915323 /* testaudiocapture.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FABA34991D8B582100915323 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FABA349A1D8B582100915323 /* loopwave.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		FAE0E9831BAF9B230098DFA4 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -1798,6 +2112,14 @@
 		};
 /* End PBXSourcesBuildPhase section */
 
+/* Begin PBXTargetDependency section */
+		FAA8CEE61BDF06DC00D3BD45 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			name = "libSDL-tv";
+			targetProxy = FAA8CEE51BDF06DC00D3BD45 /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
 /* Begin XCBuildConfiguration section */
 		046CEF8413254F23007AD51D /* Debug */ = {
 			isa = XCBuildConfiguration;
@@ -1921,6 +2243,132 @@
 			};
 			name = Release;
 		};
+		FA3D99461BC4E645002C96C8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				INFOPLIST_FILE = Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = YES;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+			};
+			name = Debug;
+		};
+		FA3D99471BC4E645002C96C8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				INFOPLIST_FILE = Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				MTL_ENABLE_DEBUG_INFO = NO;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				TARGETED_DEVICE_FAMILY = 3;
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		FABA348F1D8B575200915323 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		FABA34901D8B575200915323 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+		FABA34A81D8B582100915323 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DEVELOPMENT_TEAM = "";
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALID_ARCHS = arm64;
+			};
+			name = Debug;
+		};
+		FABA34A91D8B582100915323 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				DEVELOPMENT_TEAM = "";
+				INFOPLIST_FILE = Info.plist;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = appletvos;
+				SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
+				TVOS_DEPLOYMENT_TARGET = 9.0;
+				VALID_ARCHS = arm64;
+			};
+			name = Release;
+		};
 		FAE0E9911BAF9B230098DFA4 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -2275,6 +2723,33 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		FA3D99451BC4E645002C96C8 /* Build configuration list for PBXNativeTarget "testgamecontroller-TV" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FA3D99461BC4E645002C96C8 /* Debug */,
+				FA3D99471BC4E645002C96C8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FABA348E1D8B575200915323 /* Build configuration list for PBXNativeTarget "testaudiocapture" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FABA348F1D8B575200915323 /* Debug */,
+				FABA34901D8B575200915323 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FABA34A71D8B582100915323 /* Build configuration list for PBXNativeTarget "loopwav-TV" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FABA34A81D8B582100915323 /* Debug */,
+				FABA34A91D8B582100915323 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		FAE0E9901BAF9B230098DFA4 /* Build configuration list for PBXNativeTarget "testgamecontroller" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

+ 3 - 3
jni/SDL2-2.0.4/Xcode/SDL/Info-Framework.plist → jni/SDL2-2.0.5/Xcode/SDL/Info-Framework.plist

@@ -11,7 +11,7 @@
 	<key>CFBundleIconFile</key>
 	<string></string>
 	<key>CFBundleIdentifier</key>
-	<string>org.libsdl.SDL2</string>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleName</key>
@@ -19,10 +19,10 @@
 	<key>CFBundlePackageType</key>
 	<string>FMWK</string>
 	<key>CFBundleShortVersionString</key>
-	<string>2.0.4</string>
+	<string>2.0.5</string>
 	<key>CFBundleSignature</key>
 	<string>SDLX</string>
 	<key>CFBundleVersion</key>
-	<string>2.0.4</string>
+	<string>2.0.5</string>
 </dict>
 </plist>

+ 72 - 45
jni/SDL2-2.0.4/Xcode/SDL/SDL.xcodeproj/project.pbxproj → jni/SDL2-2.0.5/Xcode/SDL/SDL.xcodeproj/project.pbxproj

@@ -7,15 +7,9 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		007317A20858DECD00B2BC32 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179B0858DECD00B2BC32 /* AudioToolbox.framework */; };
-		007317A30858DECD00B2BC32 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179C0858DECD00B2BC32 /* AudioUnit.framework */; };
 		007317A40858DECD00B2BC32 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179D0858DECD00B2BC32 /* Cocoa.framework */; };
-		007317A50858DECD00B2BC32 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179E0858DECD00B2BC32 /* CoreAudio.framework */; };
 		007317A60858DECD00B2BC32 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179F0858DECD00B2BC32 /* IOKit.framework */; };
-		007317A90858DECD00B2BC32 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179B0858DECD00B2BC32 /* AudioToolbox.framework */; };
-		007317AA0858DECD00B2BC32 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179C0858DECD00B2BC32 /* AudioUnit.framework */; };
 		007317AB0858DECD00B2BC32 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179D0858DECD00B2BC32 /* Cocoa.framework */; };
-		007317AC0858DECD00B2BC32 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179E0858DECD00B2BC32 /* CoreAudio.framework */; };
 		007317AD0858DECD00B2BC32 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179F0858DECD00B2BC32 /* IOKit.framework */; };
 		007317C30858E15000B2BC32 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 007317C10858E15000B2BC32 /* Carbon.framework */; };
 		00CFA89D106B4BA100758660 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00CFA89C106B4BA100758660 /* ForceFeedback.framework */; };
@@ -57,14 +51,12 @@
 		04BD000912E6671800899322 /* SDL_diskaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFD8912E6671700899322 /* SDL_diskaudio.h */; };
 		04BD001012E6671800899322 /* SDL_dummyaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFD9412E6671700899322 /* SDL_dummyaudio.c */; };
 		04BD001112E6671800899322 /* SDL_dummyaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFD9512E6671700899322 /* SDL_dummyaudio.h */; };
-		04BD001812E6671800899322 /* SDL_coreaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDA012E6671700899322 /* SDL_coreaudio.c */; };
 		04BD001912E6671800899322 /* SDL_coreaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDA112E6671700899322 /* SDL_coreaudio.h */; };
 		04BD002612E6671800899322 /* SDL_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB412E6671700899322 /* SDL_audio.c */; };
 		04BD002712E6671800899322 /* SDL_audio_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB512E6671700899322 /* SDL_audio_c.h */; };
 		04BD002812E6671800899322 /* SDL_audiocvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB612E6671700899322 /* SDL_audiocvt.c */; };
 		04BD002912E6671800899322 /* SDL_audiodev.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB712E6671700899322 /* SDL_audiodev.c */; };
 		04BD002A12E6671800899322 /* SDL_audiodev_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB812E6671700899322 /* SDL_audiodev_c.h */; };
-		04BD002B12E6671800899322 /* SDL_audiomem.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB912E6671700899322 /* SDL_audiomem.h */; };
 		04BD002C12E6671800899322 /* SDL_audiotypecvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDBA12E6671700899322 /* SDL_audiotypecvt.c */; };
 		04BD002D12E6671800899322 /* SDL_mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDBB12E6671700899322 /* SDL_mixer.c */; };
 		04BD003412E6671800899322 /* SDL_sysaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDC212E6671700899322 /* SDL_sysaudio.h */; };
@@ -211,14 +203,12 @@
 		04BD022512E6671800899322 /* SDL_diskaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFD8912E6671700899322 /* SDL_diskaudio.h */; };
 		04BD022C12E6671800899322 /* SDL_dummyaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFD9412E6671700899322 /* SDL_dummyaudio.c */; };
 		04BD022D12E6671800899322 /* SDL_dummyaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFD9512E6671700899322 /* SDL_dummyaudio.h */; };
-		04BD023412E6671800899322 /* SDL_coreaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDA012E6671700899322 /* SDL_coreaudio.c */; };
 		04BD023512E6671800899322 /* SDL_coreaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDA112E6671700899322 /* SDL_coreaudio.h */; };
 		04BD024212E6671800899322 /* SDL_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB412E6671700899322 /* SDL_audio.c */; };
 		04BD024312E6671800899322 /* SDL_audio_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB512E6671700899322 /* SDL_audio_c.h */; };
 		04BD024412E6671800899322 /* SDL_audiocvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB612E6671700899322 /* SDL_audiocvt.c */; };
 		04BD024512E6671800899322 /* SDL_audiodev.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB712E6671700899322 /* SDL_audiodev.c */; };
 		04BD024612E6671800899322 /* SDL_audiodev_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB812E6671700899322 /* SDL_audiodev_c.h */; };
-		04BD024712E6671800899322 /* SDL_audiomem.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB912E6671700899322 /* SDL_audiomem.h */; };
 		04BD024812E6671800899322 /* SDL_audiotypecvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDBA12E6671700899322 /* SDL_audiotypecvt.c */; };
 		04BD024912E6671800899322 /* SDL_mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDBB12E6671700899322 /* SDL_mixer.c */; };
 		04BD025012E6671800899322 /* SDL_sysaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDC212E6671700899322 /* SDL_sysaudio.h */; };
@@ -387,6 +377,10 @@
 		04F7805D12FB74A200FC43C0 /* SDL_drawline.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F7804512FB74A200FC43C0 /* SDL_drawline.h */; };
 		04F7805E12FB74A200FC43C0 /* SDL_drawpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F7804612FB74A200FC43C0 /* SDL_drawpoint.c */; };
 		04F7805F12FB74A200FC43C0 /* SDL_drawpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F7804712FB74A200FC43C0 /* SDL_drawpoint.h */; };
+		562C4AE91D8F496200AF9EBE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E931D8B69C300B177DD /* AudioToolbox.framework */; };
+		562C4AEA1D8F496300AF9EBE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E931D8B69C300B177DD /* AudioToolbox.framework */; };
+		562D3C7C1D8F4933003FEEE6 /* SDL_coreaudio.m in Sources */ = {isa = PBXBuildFile; fileRef = FABA34C61D8B5DB100915323 /* SDL_coreaudio.m */; };
+		562D3C7D1D8F4933003FEEE6 /* SDL_coreaudio.m in Sources */ = {isa = PBXBuildFile; fileRef = FABA34C61D8B5DB100915323 /* SDL_coreaudio.m */; };
 		566CDE8F148F0AC200C5A9BB /* SDL_dropevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 566CDE8D148F0AC200C5A9BB /* SDL_dropevents_c.h */; };
 		566CDE90148F0AC200C5A9BB /* SDL_dropevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 566CDE8E148F0AC200C5A9BB /* SDL_dropevents.c */; };
 		567E2F1C17C44BB2005F1892 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 567E2F1B17C44BB2005F1892 /* SDL_sysfilesystem.m */; };
@@ -406,6 +400,12 @@
 		56A6702A185654B40007D20F /* SDL_dynapi_overrides.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A67020185654B40007D20F /* SDL_dynapi_overrides.h */; };
 		56A6702B185654B40007D20F /* SDL_dynapi_overrides.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A67020185654B40007D20F /* SDL_dynapi_overrides.h */; };
 		56A6702C185654B40007D20F /* SDL_dynapi_overrides.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A67020185654B40007D20F /* SDL_dynapi_overrides.h */; };
+		56C5237E1D8F4985001F2F30 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E951D8B69D600B177DD /* CoreAudio.framework */; };
+		56C5237F1D8F4985001F2F30 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E951D8B69D600B177DD /* CoreAudio.framework */; };
+		56C523801D8F498B001F2F30 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00D0D08310675DD9004B05EF /* CoreFoundation.framework */; };
+		56C523811D8F498C001F2F30 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00D0D08310675DD9004B05EF /* CoreFoundation.framework */; };
+		A7381E961D8B69D600B177DD /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E951D8B69D600B177DD /* CoreAudio.framework */; };
+		A7381E971D8B6A0300B177DD /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E931D8B69C300B177DD /* AudioToolbox.framework */; };
 		A77E6EB4167AB0A90010E40B /* SDL_gamecontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		A77E6EB5167AB0A90010E40B /* SDL_gamecontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		AA0AD09D16648D1700CE5896 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = BBFC088A164C6514003E6A99 /* SDL_gamecontroller.c */; };
@@ -563,7 +563,6 @@
 		DB313F7617554B71006C0E22 /* SDL_coreaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDA112E6671700899322 /* SDL_coreaudio.h */; };
 		DB313F7717554B71006C0E22 /* SDL_audio_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB512E6671700899322 /* SDL_audio_c.h */; };
 		DB313F7817554B71006C0E22 /* SDL_audiodev_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB812E6671700899322 /* SDL_audiodev_c.h */; };
-		DB313F7917554B71006C0E22 /* SDL_audiomem.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDB912E6671700899322 /* SDL_audiomem.h */; };
 		DB313F7A17554B71006C0E22 /* SDL_sysaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDC212E6671700899322 /* SDL_sysaudio.h */; };
 		DB313F7B17554B71006C0E22 /* SDL_wave.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDC412E6671700899322 /* SDL_wave.h */; };
 		DB313F7C17554B71006C0E22 /* blank_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 04BDFDD612E6671700899322 /* blank_cursor.h */; };
@@ -698,7 +697,6 @@
 		DB313FFF17554B71006C0E22 /* SDL_spinlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFD7512E6671700899322 /* SDL_spinlock.c */; };
 		DB31400017554B71006C0E22 /* SDL_diskaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFD8812E6671700899322 /* SDL_diskaudio.c */; };
 		DB31400117554B71006C0E22 /* SDL_dummyaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFD9412E6671700899322 /* SDL_dummyaudio.c */; };
-		DB31400217554B71006C0E22 /* SDL_coreaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDA012E6671700899322 /* SDL_coreaudio.c */; };
 		DB31400317554B71006C0E22 /* SDL_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB412E6671700899322 /* SDL_audio.c */; };
 		DB31400417554B71006C0E22 /* SDL_audiocvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB612E6671700899322 /* SDL_audiocvt.c */; };
 		DB31400517554B71006C0E22 /* SDL_audiodev.c in Sources */ = {isa = PBXBuildFile; fileRef = 04BDFDB712E6671700899322 /* SDL_audiodev.c */; };
@@ -802,10 +800,7 @@
 		DB31406817554B71006C0E22 /* SDL_x11xinput2.c in Sources */ = {isa = PBXBuildFile; fileRef = AA628ACF159367F2005138DD /* SDL_x11xinput2.c */; };
 		DB31406917554B71006C0E22 /* SDL_x11messagebox.c in Sources */ = {isa = PBXBuildFile; fileRef = AA9E4092163BE51E007A2AD0 /* SDL_x11messagebox.c */; };
 		DB31406A17554B71006C0E22 /* SDL_cocoamessagebox.m in Sources */ = {isa = PBXBuildFile; fileRef = AABCC38C164063D200AB8930 /* SDL_cocoamessagebox.m */; };
-		DB31406C17554B71006C0E22 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179B0858DECD00B2BC32 /* AudioToolbox.framework */; };
-		DB31406D17554B71006C0E22 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179C0858DECD00B2BC32 /* AudioUnit.framework */; };
 		DB31406E17554B71006C0E22 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179D0858DECD00B2BC32 /* Cocoa.framework */; };
-		DB31406F17554B71006C0E22 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179E0858DECD00B2BC32 /* CoreAudio.framework */; };
 		DB31407017554B71006C0E22 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179F0858DECD00B2BC32 /* IOKit.framework */; };
 		DB31407217554B71006C0E22 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 007317C10858E15000B2BC32 /* Carbon.framework */; };
 		DB31408B17554D37006C0E22 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00CFA89C106B4BA100758660 /* ForceFeedback.framework */; };
@@ -813,6 +808,7 @@
 		FA73671D19A540EF004122E4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA73671C19A540EF004122E4 /* CoreVideo.framework */; };
 		FA73671E19A54140004122E4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA73671C19A540EF004122E4 /* CoreVideo.framework */; };
 		FA73671F19A54144004122E4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA73671C19A540EF004122E4 /* CoreVideo.framework */; };
+		FABA34C71D8B5DB100915323 /* SDL_coreaudio.m in Sources */ = {isa = PBXBuildFile; fileRef = FABA34C61D8B5DB100915323 /* SDL_coreaudio.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -826,10 +822,7 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
-		0073179B0858DECD00B2BC32 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = "<absolute>"; };
-		0073179C0858DECD00B2BC32 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = "<absolute>"; };
 		0073179D0858DECD00B2BC32 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
-		0073179E0858DECD00B2BC32 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = "<absolute>"; };
 		0073179F0858DECD00B2BC32 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
 		007317C10858E15000B2BC32 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
 		00794D3F09D0C461003FC8A1 /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = "<group>"; };
@@ -857,14 +850,12 @@
 		04BDFD8912E6671700899322 /* SDL_diskaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_diskaudio.h; sourceTree = "<group>"; };
 		04BDFD9412E6671700899322 /* SDL_dummyaudio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_dummyaudio.c; sourceTree = "<group>"; };
 		04BDFD9512E6671700899322 /* SDL_dummyaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_dummyaudio.h; sourceTree = "<group>"; };
-		04BDFDA012E6671700899322 /* SDL_coreaudio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_coreaudio.c; sourceTree = "<group>"; };
 		04BDFDA112E6671700899322 /* SDL_coreaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_coreaudio.h; sourceTree = "<group>"; };
 		04BDFDB412E6671700899322 /* SDL_audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audio.c; sourceTree = "<group>"; };
 		04BDFDB512E6671700899322 /* SDL_audio_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audio_c.h; sourceTree = "<group>"; };
 		04BDFDB612E6671700899322 /* SDL_audiocvt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audiocvt.c; sourceTree = "<group>"; };
 		04BDFDB712E6671700899322 /* SDL_audiodev.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audiodev.c; sourceTree = "<group>"; };
 		04BDFDB812E6671700899322 /* SDL_audiodev_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audiodev_c.h; sourceTree = "<group>"; };
-		04BDFDB912E6671700899322 /* SDL_audiomem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audiomem.h; sourceTree = "<group>"; };
 		04BDFDBA12E6671700899322 /* SDL_audiotypecvt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audiotypecvt.c; sourceTree = "<group>"; };
 		04BDFDBB12E6671700899322 /* SDL_mixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_mixer.c; sourceTree = "<group>"; };
 		04BDFDC212E6671700899322 /* SDL_sysaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysaudio.h; sourceTree = "<group>"; };
@@ -1027,6 +1018,8 @@
 		56A6701E185654B40007D20F /* SDL_dynapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_dynapi.c; path = ../../src/dynapi/SDL_dynapi.c; sourceTree = "<group>"; };
 		56A6701F185654B40007D20F /* SDL_dynapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi.h; path = ../../src/dynapi/SDL_dynapi.h; sourceTree = "<group>"; };
 		56A67020185654B40007D20F /* SDL_dynapi_overrides.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi_overrides.h; path = ../../src/dynapi/SDL_dynapi_overrides.h; sourceTree = "<group>"; };
+		A7381E931D8B69C300B177DD /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+		A7381E951D8B69D600B177DD /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
 		A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gamecontroller.h; sourceTree = "<group>"; };
 		AA0F8490178D5ECC00823F9D /* SDL_systls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = "<group>"; };
 		AA628AC8159367B7005138DD /* SDL_rotate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_rotate.c; sourceTree = "<group>"; };
@@ -1106,6 +1099,7 @@
 		F59C710600D5CB5801000001 /* SDL.info */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SDL.info; sourceTree = "<group>"; };
 		F5A2EF3900C6A39A01000001 /* BUGS.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = BUGS.txt; path = ../../BUGS.txt; sourceTree = SOURCE_ROOT; };
 		FA73671C19A540EF004122E4 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = /System/Library/Frameworks/CoreVideo.framework; sourceTree = "<absolute>"; };
+		FABA34C61D8B5DB100915323 /* SDL_coreaudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_coreaudio.m; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -1113,11 +1107,10 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				A7381E971D8B6A0300B177DD /* AudioToolbox.framework in Frameworks */,
+				A7381E961D8B69D600B177DD /* CoreAudio.framework in Frameworks */,
 				FA73671D19A540EF004122E4 /* CoreVideo.framework in Frameworks */,
-				007317A20858DECD00B2BC32 /* AudioToolbox.framework in Frameworks */,
-				007317A30858DECD00B2BC32 /* AudioUnit.framework in Frameworks */,
 				007317A40858DECD00B2BC32 /* Cocoa.framework in Frameworks */,
-				007317A50858DECD00B2BC32 /* CoreAudio.framework in Frameworks */,
 				007317A60858DECD00B2BC32 /* IOKit.framework in Frameworks */,
 				00D0D08410675DD9004B05EF /* CoreFoundation.framework in Frameworks */,
 				00D0D0D810675E46004B05EF /* Carbon.framework in Frameworks */,
@@ -1129,14 +1122,14 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				56C5237E1D8F4985001F2F30 /* CoreAudio.framework in Frameworks */,
 				FA73671E19A54140004122E4 /* CoreVideo.framework in Frameworks */,
-				007317A90858DECD00B2BC32 /* AudioToolbox.framework in Frameworks */,
-				007317AA0858DECD00B2BC32 /* AudioUnit.framework in Frameworks */,
 				007317AB0858DECD00B2BC32 /* Cocoa.framework in Frameworks */,
-				007317AC0858DECD00B2BC32 /* CoreAudio.framework in Frameworks */,
 				007317AD0858DECD00B2BC32 /* IOKit.framework in Frameworks */,
+				56C523801D8F498B001F2F30 /* CoreFoundation.framework in Frameworks */,
 				007317C30858E15000B2BC32 /* Carbon.framework in Frameworks */,
 				DB31408B17554D37006C0E22 /* ForceFeedback.framework in Frameworks */,
+				562C4AE91D8F496200AF9EBE /* AudioToolbox.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1144,14 +1137,14 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				56C5237F1D8F4985001F2F30 /* CoreAudio.framework in Frameworks */,
 				FA73671F19A54144004122E4 /* CoreVideo.framework in Frameworks */,
-				DB31406C17554B71006C0E22 /* AudioToolbox.framework in Frameworks */,
-				DB31406D17554B71006C0E22 /* AudioUnit.framework in Frameworks */,
 				DB31406E17554B71006C0E22 /* Cocoa.framework in Frameworks */,
-				DB31406F17554B71006C0E22 /* CoreAudio.framework in Frameworks */,
 				DB31407017554B71006C0E22 /* IOKit.framework in Frameworks */,
+				56C523811D8F498C001F2F30 /* CoreFoundation.framework in Frameworks */,
 				DB31407217554B71006C0E22 /* Carbon.framework in Frameworks */,
 				DB31408D17554D3C006C0E22 /* ForceFeedback.framework in Frameworks */,
+				562C4AEA1D8F496300AF9EBE /* AudioToolbox.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1307,7 +1300,6 @@
 				04BDFDB612E6671700899322 /* SDL_audiocvt.c */,
 				04BDFDB712E6671700899322 /* SDL_audiodev.c */,
 				04BDFDB812E6671700899322 /* SDL_audiodev_c.h */,
-				04BDFDB912E6671700899322 /* SDL_audiomem.h */,
 				04BDFDBA12E6671700899322 /* SDL_audiotypecvt.c */,
 				04BDFDBB12E6671700899322 /* SDL_mixer.c */,
 				04BDFDC212E6671700899322 /* SDL_sysaudio.h */,
@@ -1339,8 +1331,8 @@
 		04BDFD9F12E6671700899322 /* coreaudio */ = {
 			isa = PBXGroup;
 			children = (
-				04BDFDA012E6671700899322 /* SDL_coreaudio.c */,
 				04BDFDA112E6671700899322 /* SDL_coreaudio.h */,
+				FABA34C61D8B5DB100915323 /* SDL_coreaudio.m */,
 			);
 			path = coreaudio;
 			sourceTree = "<group>";
@@ -1737,13 +1729,12 @@
 		BEC562FE0761C0E800A33029 /* Linked Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				A7381E931D8B69C300B177DD /* AudioToolbox.framework */,
+				A7381E951D8B69D600B177DD /* CoreAudio.framework */,
 				FA73671C19A540EF004122E4 /* CoreVideo.framework */,
 				00D0D08310675DD9004B05EF /* CoreFoundation.framework */,
 				007317C10858E15000B2BC32 /* Carbon.framework */,
-				0073179B0858DECD00B2BC32 /* AudioToolbox.framework */,
-				0073179C0858DECD00B2BC32 /* AudioUnit.framework */,
 				0073179D0858DECD00B2BC32 /* Cocoa.framework */,
-				0073179E0858DECD00B2BC32 /* CoreAudio.framework */,
 				0073179F0858DECD00B2BC32 /* IOKit.framework */,
 				00CFA89C106B4BA100758660 /* ForceFeedback.framework */,
 			);
@@ -1840,7 +1831,6 @@
 				04BD001912E6671800899322 /* SDL_coreaudio.h in Headers */,
 				04BD002712E6671800899322 /* SDL_audio_c.h in Headers */,
 				04BD002A12E6671800899322 /* SDL_audiodev_c.h in Headers */,
-				04BD002B12E6671800899322 /* SDL_audiomem.h in Headers */,
 				04BD003412E6671800899322 /* SDL_sysaudio.h in Headers */,
 				04BD003612E6671800899322 /* SDL_wave.h in Headers */,
 				04BD004212E6671800899322 /* blank_cursor.h in Headers */,
@@ -1996,7 +1986,6 @@
 				04BD024312E6671800899322 /* SDL_audio_c.h in Headers */,
 				04BD024612E6671800899322 /* SDL_audiodev_c.h in Headers */,
 				AAC070FD195606770073DCDF /* SDL_opengles2_gl2.h in Headers */,
-				04BD024712E6671800899322 /* SDL_audiomem.h in Headers */,
 				04BD025012E6671800899322 /* SDL_sysaudio.h in Headers */,
 				04BD025212E6671800899322 /* SDL_wave.h in Headers */,
 				04BD025D12E6671800899322 /* blank_cursor.h in Headers */,
@@ -2151,7 +2140,6 @@
 				DB313F7717554B71006C0E22 /* SDL_audio_c.h in Headers */,
 				DB313F7817554B71006C0E22 /* SDL_audiodev_c.h in Headers */,
 				AAC070FE195606770073DCDF /* SDL_opengles2_gl2.h in Headers */,
-				DB313F7917554B71006C0E22 /* SDL_audiomem.h in Headers */,
 				DB313F7A17554B71006C0E22 /* SDL_sysaudio.h in Headers */,
 				DB313F7B17554B71006C0E22 /* SDL_wave.h in Headers */,
 				DB313F7C17554B71006C0E22 /* blank_cursor.h in Headers */,
@@ -2323,7 +2311,7 @@
 		0867D690FE84028FC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 0630;
+				LastUpgradeCheck = 0730;
 				TargetAttributes = {
 					BECDF5FE0761BA81005FE872 = {
 						DevelopmentTeam = EH385AYQ6F;
@@ -2404,7 +2392,6 @@
 				04BDFFFC12E6671800899322 /* SDL_spinlock.c in Sources */,
 				04BD000812E6671800899322 /* SDL_diskaudio.c in Sources */,
 				04BD001012E6671800899322 /* SDL_dummyaudio.c in Sources */,
-				04BD001812E6671800899322 /* SDL_coreaudio.c in Sources */,
 				04BD002612E6671800899322 /* SDL_audio.c in Sources */,
 				04BD002812E6671800899322 /* SDL_audiocvt.c in Sources */,
 				04BD002912E6671800899322 /* SDL_audiodev.c in Sources */,
@@ -2440,6 +2427,7 @@
 				04BD00A812E6671800899322 /* SDL_string.c in Sources */,
 				04BD00BD12E6671800899322 /* SDL_syscond.c in Sources */,
 				04BD00BE12E6671800899322 /* SDL_sysmutex.c in Sources */,
+				FABA34C71D8B5DB100915323 /* SDL_coreaudio.m in Sources */,
 				04BD00C012E6671800899322 /* SDL_syssem.c in Sources */,
 				04BD00C112E6671800899322 /* SDL_systhread.c in Sources */,
 				04BD00CA12E6671800899322 /* SDL_thread.c in Sources */,
@@ -2523,7 +2511,6 @@
 				04BD021812E6671800899322 /* SDL_spinlock.c in Sources */,
 				04BD022412E6671800899322 /* SDL_diskaudio.c in Sources */,
 				04BD022C12E6671800899322 /* SDL_dummyaudio.c in Sources */,
-				04BD023412E6671800899322 /* SDL_coreaudio.c in Sources */,
 				04BD024212E6671800899322 /* SDL_audio.c in Sources */,
 				04BD024412E6671800899322 /* SDL_audiocvt.c in Sources */,
 				04BD024512E6671800899322 /* SDL_audiodev.c in Sources */,
@@ -2559,6 +2546,7 @@
 				04BD02C012E6671800899322 /* SDL_qsort.c in Sources */,
 				04BD02C112E6671800899322 /* SDL_stdlib.c in Sources */,
 				04BD02C212E6671800899322 /* SDL_string.c in Sources */,
+				562D3C7C1D8F4933003FEEE6 /* SDL_coreaudio.m in Sources */,
 				04BD02D712E6671800899322 /* SDL_syscond.c in Sources */,
 				04BD02D812E6671800899322 /* SDL_sysmutex.c in Sources */,
 				04BD02DA12E6671800899322 /* SDL_syssem.c in Sources */,
@@ -2642,7 +2630,6 @@
 				DB313FFF17554B71006C0E22 /* SDL_spinlock.c in Sources */,
 				DB31400017554B71006C0E22 /* SDL_diskaudio.c in Sources */,
 				DB31400117554B71006C0E22 /* SDL_dummyaudio.c in Sources */,
-				DB31400217554B71006C0E22 /* SDL_coreaudio.c in Sources */,
 				DB31400317554B71006C0E22 /* SDL_audio.c in Sources */,
 				DB31400417554B71006C0E22 /* SDL_audiocvt.c in Sources */,
 				DB31400517554B71006C0E22 /* SDL_audiodev.c in Sources */,
@@ -2678,6 +2665,7 @@
 				DB31402417554B71006C0E22 /* SDL_qsort.c in Sources */,
 				DB31402517554B71006C0E22 /* SDL_stdlib.c in Sources */,
 				DB31402617554B71006C0E22 /* SDL_string.c in Sources */,
+				562D3C7D1D8F4933003FEEE6 /* SDL_coreaudio.m in Sources */,
 				DB31402717554B71006C0E22 /* SDL_syscond.c in Sources */,
 				DB31402817554B71006C0E22 /* SDL_sysmutex.c in Sources */,
 				DB31402917554B71006C0E22 /* SDL_syssem.c in Sources */,
@@ -2767,14 +2755,31 @@
 		00CFA621106A567900758660 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				DEPLOYMENT_POSTPROCESSING = YES;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				GCC_ALTIVEC_EXTENSIONS = YES;
 				GCC_AUTO_VECTORIZATION = YES;
 				GCC_ENABLE_SSE3_EXTENSIONS = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.5;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 				SDKROOT = macosx;
 				STRIP_STYLE = "non-global";
 			};
@@ -2783,15 +2788,17 @@
 		00CFA622106A567900758660 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				CLANG_LINK_OBJC_RUNTIME = NO;
 				COMBINE_HIDPI_IMAGES = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1.0.0;
-				DYLIB_CURRENT_VERSION = 5.0.0;
+				DYLIB_CURRENT_VERSION = 5.1.0;
 				FRAMEWORK_VERSION = A;
 				HEADER_SEARCH_PATHS = /usr/X11R6/include;
 				INFOPLIST_FILE = "Info-Framework.plist";
 				INSTALL_PATH = "@rpath";
 				OTHER_LDFLAGS = "-liconv";
+				PRODUCT_BUNDLE_IDENTIFIER = org.libsdl.SDL2;
 				PRODUCT_NAME = SDL2;
 				PROVISIONING_PROFILE = "";
 				WRAPPER_EXTENSION = framework;
@@ -2827,12 +2834,30 @@
 		00CFA627106A568900758660 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
 				GCC_ALTIVEC_EXTENSIONS = YES;
 				GCC_AUTO_VECTORIZATION = YES;
 				GCC_ENABLE_SSE3_EXTENSIONS = YES;
+				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.5;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				STRIP_INSTALLED_PRODUCT = NO;
@@ -2842,15 +2867,17 @@
 		00CFA628106A568900758660 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				CLANG_LINK_OBJC_RUNTIME = NO;
 				COMBINE_HIDPI_IMAGES = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1.0.0;
-				DYLIB_CURRENT_VERSION = 5.0.0;
+				DYLIB_CURRENT_VERSION = 5.1.0;
 				FRAMEWORK_VERSION = A;
 				HEADER_SEARCH_PATHS = /usr/X11R6/include;
 				INFOPLIST_FILE = "Info-Framework.plist";
 				INSTALL_PATH = "@rpath";
 				OTHER_LDFLAGS = "-liconv";
+				PRODUCT_BUNDLE_IDENTIFIER = org.libsdl.SDL2;
 				PRODUCT_NAME = SDL2;
 				PROVISIONING_PROFILE = "";
 				WRAPPER_EXTENSION = framework;

+ 0 - 0
jni/SDL2-2.0.4/Xcode/SDL/pkg-support/SDL.info → jni/SDL2-2.0.5/Xcode/SDL/pkg-support/SDL.info


+ 0 - 0
jni/SDL2-2.0.4/Xcode/SDL/pkg-support/codesign-frameworks.sh → jni/SDL2-2.0.5/Xcode/SDL/pkg-support/codesign-frameworks.sh


+ 0 - 0
jni/SDL2-2.0.4/Xcode/SDL/pkg-support/resources/License.txt → jni/SDL2-2.0.5/Xcode/SDL/pkg-support/resources/License.txt


+ 0 - 0
jni/SDL2-2.0.4/Xcode/SDL/pkg-support/resources/ReadMe.txt → jni/SDL2-2.0.5/Xcode/SDL/pkg-support/resources/ReadMe.txt


+ 0 - 0
jni/SDL2-2.0.4/Xcode/SDL/pkg-support/resources/SDL_DS_Store → jni/SDL2-2.0.5/Xcode/SDL/pkg-support/resources/SDL_DS_Store


+ 0 - 0
jni/SDL2-2.0.4/Xcode/SDL/pkg-support/sdl_logo.pdf → jni/SDL2-2.0.5/Xcode/SDL/pkg-support/sdl_logo.pdf


+ 2 - 2
jni/SDL2-2.0.4/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj → jni/SDL2-2.0.5/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj

@@ -3934,7 +3934,7 @@
 				);
 				GCC_OPTIMIZATION_LEVEL = 0;
 				HEADER_SEARCH_PATHS = ../../include;
-				MACOSX_DEPLOYMENT_TARGET = 10.5;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 			};
 			name = Debug;
 		};
@@ -4060,7 +4060,7 @@
 				);
 				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
 				HEADER_SEARCH_PATHS = ../../include;
-				MACOSX_DEPLOYMENT_TARGET = 10.5;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
 			};
 			name = Release;
 		};

+ 0 - 0
jni/SDL2-2.0.4/Xcode/SDLTest/TestDropFile-Info.plist → jni/SDL2-2.0.5/Xcode/SDLTest/TestDropFile-Info.plist


+ 0 - 0
jni/SDL2-2.0.4/Xcode/XcodeDocSet/Doxyfile → jni/SDL2-2.0.5/Xcode/XcodeDocSet/Doxyfile


+ 0 - 0
jni/SDL2-2.0.4/acinclude/ac_check_define.m4 → jni/SDL2-2.0.5/acinclude/ac_check_define.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/alsa.m4 → jni/SDL2-2.0.5/acinclude/alsa.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/ax_check_compiler_flags.m4 → jni/SDL2-2.0.5/acinclude/ax_check_compiler_flags.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/ax_gcc_archflag.m4 → jni/SDL2-2.0.5/acinclude/ax_gcc_archflag.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/ax_gcc_x86_cpuid.m4.htm → jni/SDL2-2.0.5/acinclude/ax_gcc_x86_cpuid.m4.htm


+ 0 - 0
jni/SDL2-2.0.4/acinclude/esd.m4 → jni/SDL2-2.0.5/acinclude/esd.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/libtool.m4 → jni/SDL2-2.0.5/acinclude/libtool.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/ltoptions.m4 → jni/SDL2-2.0.5/acinclude/ltoptions.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/ltsugar.m4 → jni/SDL2-2.0.5/acinclude/ltsugar.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/ltversion.m4 → jni/SDL2-2.0.5/acinclude/ltversion.m4


+ 0 - 0
jni/SDL2-2.0.4/acinclude/lt~obsolete.m4 → jni/SDL2-2.0.5/acinclude/lt~obsolete.m4


+ 4 - 1
jni/SDL2-2.0.4/android-project/AndroidManifest.xml → jni/SDL2-2.0.5/android-project/AndroidManifest.xml

@@ -17,6 +17,9 @@
     <!-- Allow writing to external storage -->
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 
+    <!-- if you want to capture audio, uncomment this. -->
+    <!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> -->
+
     <!-- Create a Java class extending SDLActivity and place it in a
          directory under src matching the package, e.g.
          	src/com/gamemaker/game/MyGame.java
@@ -24,7 +27,7 @@
          then replace "SDLActivity" with the name of your class (e.g. "MyGame")
          in the XML below.
 
-         An example Java class can be found in README-android.txt
+         An example Java class can be found in README-android.md
     -->
     <application android:label="@string/app_name"
                  android:icon="@drawable/ic_launcher"

+ 0 - 0
jni/SDL2-2.0.4/android-project/ant.properties → jni/SDL2-2.0.5/android-project/ant.properties


+ 0 - 0
jni/SDL2-2.0.4/android-project/build.properties → jni/SDL2-2.0.5/android-project/build.properties


+ 0 - 0
jni/SDL2-2.0.4/android-project/build.xml → jni/SDL2-2.0.5/android-project/build.xml


+ 0 - 0
jni/SDL2-2.0.4/android-project/default.properties → jni/SDL2-2.0.5/android-project/default.properties


+ 0 - 0
jni/SDL2-2.0.4/android-project/jni/Android.mk → jni/SDL2-2.0.5/android-project/jni/Android.mk


+ 4 - 0
jni/SDL2-2.0.4/android-project/jni/Application.mk → jni/SDL2-2.0.5/android-project/jni/Application.mk

@@ -4,3 +4,7 @@
 # APP_STL := stlport_static 
 
 APP_ABI := armeabi armeabi-v7a x86
+
+# Min SDK level
+APP_PLATFORM=android-10
+

+ 0 - 0
jni/SDL2-2.0.4/android-project/jni/src/Android.mk → jni/SDL2-2.0.5/android-project/jni/src/Android.mk


Some files were not shown because too many files changed in this diff