)]}'
{
  "log": [
    {
      "commit": "874eacff6d70f5b53f94cd0129ea558283ee55da",
      "tree": "925f5f3a4b32bc626f9c11dcd2de424a8367083a",
      "parents": [
        "a558dcbaa0f908490b3f029bafdef6d4c86b0e9b"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 19 20:50:33 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 19 20:50:33 2016 -0700"
      },
      "message": "Fixed bug 3460 - docs/README-macosx.md: g++fat.sh should be g++-fat.sh in universal build command\n\nElisée Maurer\n\nI scratched my head for a while until I realized there\u0027s a typo in the command listed in the instructions for universal Mac builds: https://hg.libsdl.org/SDL/file/c1bb718f6c3f/docs/README-macosx.md#l24\n\nIt should say `g++-fat.sh` but instead it says `g++fat.sh`, which makes `./configure` fail with a C++ preprocessor error.\n"
    },
    {
      "commit": "a558dcbaa0f908490b3f029bafdef6d4c86b0e9b",
      "tree": "4270b74feed0abf7d0e203b03ce55a0815f8df08",
      "parents": [
        "9abb43e65c464e4ef80b6d75cb1e8a7ec2d14b36"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 19 20:42:22 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 19 20:42:22 2016 -0700"
      },
      "message": "Fixed bug 3461 - Implement TEXTINPUT events for Haiku\n\nKai Sterker\n\nApparently, SDL2 on Haiku does not generate SDL_TEXTINPUT events.\nAttached is a patch that adds this functionality.\n\nTested with SDLs own checkkeys program and different keymaps as well as my own SDL application and German keyboard layout to verify it generates the expected input.\n"
    },
    {
      "commit": "9abb43e65c464e4ef80b6d75cb1e8a7ec2d14b36",
      "tree": "94263dcd169ea41f30f68a535d81a0e2736eefc1",
      "parents": [
        "b18133c80882377ae58546f4fcd8071b4e565beb"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 19 20:39:12 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 19 20:39:12 2016 -0700"
      },
      "message": "Fixed crash on Mac OS X 10.10 and earlier\n"
    },
    {
      "commit": "b18133c80882377ae58546f4fcd8071b4e565beb",
      "tree": "5b3e1e2d6bc3079cec18fcedcb4a8a641f79949a",
      "parents": [
        "cf9bed5054bb9b8bfa8ab4e61de3282191bbcf91"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 18 23:24:49 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 18 23:24:49 2016 -0700"
      },
      "message": "Fixed bug 3369 - RaspberryPI ability to specify a Dispmanx layer\n\nAlbert Casals\n\nOn a RaspberryPI, it might become convenient to specify the Dispmanx layer SDL uses.\nCurrently, it is hardcoded to be 10000 to sit above most applications.\n\nThis can be specially useful when integrating other graphical apps and frameworks like OMXplayer, QT5 etc.. in order to have more flexibility on their Z-order.\n"
    },
    {
      "commit": "cf9bed5054bb9b8bfa8ab4e61de3282191bbcf91",
      "tree": "d6add3fbe4fbde98c1c93ae2581911419ae9c2ce",
      "parents": [
        "0e9c16ffe86a689ac0042aed8c4b990f51afe270"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 18 23:12:45 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 18 23:12:45 2016 -0700"
      },
      "message": "Worked around a crash on Mac OS X 10.10 and earlier, thanks to Eric Wasylishen.\n"
    },
    {
      "commit": "0e9c16ffe86a689ac0042aed8c4b990f51afe270",
      "tree": "f30a045c4fefa42058f50d34e20fd44074e3390f",
      "parents": [
        "0f537d02df4bd03acc6d488384df2d81670e3ecb"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 17 22:09:22 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 17 22:09:22 2016 -0700"
      },
      "message": "Fixed bug 3444 - Android-TV: no more handling of back button on remote\n\nny00\n\nUnfortunately, simply checking the return codes of \"onNativePadDown/Up\" as previously done has its own issue:\n\nIf an SDL joystick is connected *and* opened, then a proper KeyEvent, say with keycode KEYCODE_BUTTON_1, should lead to an SDL joystick button event as expected.\n\nIf, however, the joystick was *not* opened, then \"onNativePadDown/Up\" will return a negative value, so before the commit from bug 3426, you could unexpectedly get a keyboard event. (In practice, you\u0027ll just get a log message, since KEYCODE_BUTTON_1 has no mapping to a proper SDL_ScanCode value, but it\u0027s still an problem).\n\nWhat should still be done, though, is checking the key code itself. We do have the KeyEvent.isGamepadButton method, but according my test, it returns \"true\" exactly (and only) for the KEYCODE_BUTTON* values, and not for KEYCODE_DPAD* or any other key code.\n\nHere is a possible solution:\n- Do check the return codes of \"onNativePadDown/Up\" as previously done.\n- In addition, in \"Android_OnPadDown/Up\" from src/joystick/android/SDL_sysjoystick.c, 0 should *always* be returned in case the key code can be translated to an SDL_joystick button; Even if no matching joystick can be found.\n"
    },
    {
      "commit": "0f537d02df4bd03acc6d488384df2d81670e3ecb",
      "tree": "66d2deaa1a610c00e452ce908abcafb450303aec",
      "parents": [
        "5abf243bc061aec9b664c122ce05a1da79106e43"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 17 21:47:33 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 17 21:47:33 2016 -0700"
      },
      "message": "Partial fix for bug 3092 - Statically link sdl2 with /MT for msvc\n\nMike Linford\n\nI\u0027m also having trouble statically linking SDL2 on Visual Studio 2015 with /MT. My symptom is that memcpy is being defined twice.\n"
    },
    {
      "commit": "5abf243bc061aec9b664c122ce05a1da79106e43",
      "tree": "d2cbd66e443db5f4594cfe02a19e7e753f519df9",
      "parents": [
        "b547ce941a74885da9f37c4697cf8541848a4c8d"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 17 21:44:32 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 17 21:44:32 2016 -0700"
      },
      "message": "Fixed bug 3456 - SDL_GameControllerOpen fails if the joystick subsystem isn\u0027t initialized\n\nPhilipp Wiesemann\n\nMaybe the fault is in the SDL_VIDEO_DRIVER_WINDOWS section in SDL_InitSubSystem() of \"src/SDL.c\". Because there only SDL_INIT_JOYSTICK is checked. The flags are adapted for SDL_INIT_GAMECONTROLLER afterwards.\n"
    },
    {
      "commit": "b547ce941a74885da9f37c4697cf8541848a4c8d",
      "tree": "244b9ad22b3319de6315652b7ffd5f6491f6f4f4",
      "parents": [
        "475ac41440d345f5bf4b859dba23a33da75d2553"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 17 21:37:26 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 17 21:37:26 2016 -0700"
      },
      "message": "Fixed bug 3458 - x11: reset deadkeys in StartTextInput/StopTextInput\n\nEric Wasylishen\n\nThe patch makes StartTextInput/StopTextInput call Xutf8ResetIC ( https://www.x.org/releases/X11R7.5/doc/man/man3/XmbResetIC.3.html ) on the XIC of all SDL windows.\n\nThis fixes my use case in Quakespasm (Ubuntu 16.04, system keyboard layout set to German. Type the \u0027^\u0027 dead key, which opens Quakespasm\u0027s developer console and calls SDL_StartTextInput, then press \u0027e\u0027. I expect the dead key to be ignored.)\n\nAlso, here is a patch for sdl2\u0027s \"checkkeys\" for testing this: https://bugzilla-attachments.libsdl.org/attachment.cgi?id\u003d2451\n"
    },
    {
      "commit": "475ac41440d345f5bf4b859dba23a33da75d2553",
      "tree": "b210198c8b8fcf7e461ca36f141075b3749a4877",
      "parents": [
        "2bb44dd225883255664895b71be6b23b4cd7ef99"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 16 22:47:49 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 16 22:47:49 2016 +0200"
      },
      "message": "Linux: Added missing scancodes.\n"
    },
    {
      "commit": "2bb44dd225883255664895b71be6b23b4cd7ef99",
      "tree": "12d5e274e1e5fd7b3e409ccb33d79539eb82d148",
      "parents": [
        "84df0fb9b55bba4aab6eea1ee25b1f33864d2dfa"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 16 22:47:37 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 16 22:47:37 2016 +0200"
      },
      "message": "Windows: Fixed not removing the always added hint callback on quit.\n\nThis was no real problem because SDL_Quit() also calls SDL_ClearHints().\n"
    },
    {
      "commit": "84df0fb9b55bba4aab6eea1ee25b1f33864d2dfa",
      "tree": "0e6ae9f28dad29bb775d877413bba34db30eff12",
      "parents": [
        "6ec2821ef841dd6c464bef6da8c9996cbb683562"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 16 22:46:56 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 16 22:46:56 2016 +0200"
      },
      "message": "Linux: Removed not needed platform info from entry in controller database.\n"
    },
    {
      "commit": "6ec2821ef841dd6c464bef6da8c9996cbb683562",
      "tree": "e47acc6880dde27b6206eaf92ad40c7cdf46979d",
      "parents": [
        "8d2ff09947975ec55b543fa8c912ef72bb9a365a"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sat Oct 15 20:02:17 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sat Oct 15 20:02:17 2016 +0200"
      },
      "message": "Linux: Fixed compile warnings about unused variables.\n"
    },
    {
      "commit": "8d2ff09947975ec55b543fa8c912ef72bb9a365a",
      "tree": "8fe009601b47f5e536a22e1e272b0e01c7094282",
      "parents": [
        "2d4762614917aedaa513d905150bfe756a509bf6"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sat Oct 15 20:01:50 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sat Oct 15 20:01:50 2016 +0200"
      },
      "message": "Android: Split long line in README.\n"
    },
    {
      "commit": "2d4762614917aedaa513d905150bfe756a509bf6",
      "tree": "34d0ab7626c274623d2e4f3c79c54d696b98c265",
      "parents": [
        "c0245eb287ebd18ceee5645d7b7d7e31681fd45e"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sat Oct 15 20:01:30 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sat Oct 15 20:01:30 2016 +0200"
      },
      "message": "Removed unused constants in controllermap program.\n"
    },
    {
      "commit": "c0245eb287ebd18ceee5645d7b7d7e31681fd45e",
      "tree": "42de2271fb46814abf8652bb02d3b9a4b085bda2",
      "parents": [
        "61319ae4022cb7781ab1f4b835ec7c5033e749fc"
      ],
      "author": {
        "name": "Csongor Szabo",
        "email": "csongor.szabo@prezi.com",
        "time": "Fri Oct 14 17:06:28 2016 +0100"
      },
      "committer": {
        "name": "Csongor Szabo",
        "email": "csongor.szabo@prezi.com",
        "time": "Fri Oct 14 17:06:28 2016 +0100"
      },
      "message": "emscripten: check if device pixel ratio has changed\n"
    },
    {
      "commit": "61319ae4022cb7781ab1f4b835ec7c5033e749fc",
      "tree": "8387da4c0627649a3798938a59c529eb9e06e8c8",
      "parents": [
        "7ed384aa6716445e46e74baddee99fc91a795d92"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:56:04 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:56:04 2016 -0700"
      },
      "message": "Fixed compiler option warning for 64-bit builds on Visual Studio 2008\n"
    },
    {
      "commit": "7ed384aa6716445e46e74baddee99fc91a795d92",
      "tree": "070518ecee1183929c84b8514613f92708843e83",
      "parents": [
        "c24bd3fbbc91fef2647900ecd27f8d0c1df99193"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:40:21 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:40:21 2016 -0700"
      },
      "message": "Fixed bug 3453 - First mouse button input after a drag and drop event is ignored\n\nOlav Sorensen\n\nAfter a drag and drop event, any following mouse button input (down/up) doesn\u0027t generate an event. Clicking any mouse button a *second* time generates an event like it should.\n\nFurther investigation shows that the new SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH logic also causes this issue in other cases, like the first time you open the program and click the mouse.\n"
    },
    {
      "commit": "c24bd3fbbc91fef2647900ecd27f8d0c1df99193",
      "tree": "44ab23e5b11586f81e2c0a9e6c70f1b0cc8ea977",
      "parents": [
        "87d1aaed097e476e96d59374b0bebd31cbf89000"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:27:44 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:27:44 2016 -0700"
      },
      "message": "Fixed bug 3452 - Getting unicode arguments for the main entry point on Windows\n\nSimon Hug\n\nThere are currently three entry points in the SDL2_main code for windows: main, wmain and WinMain. Only the latter two properly convert the arguments to UTF-8.\n\nConsole applications linked with MSVC will always link with the main entry point (wmain has to be selected by manually setting the entry point). This makes it likely that such programs will not have proper unicode arguments.\n"
    },
    {
      "commit": "87d1aaed097e476e96d59374b0bebd31cbf89000",
      "tree": "2b5faff577c2a61322cd01858838a457628701c2",
      "parents": [
        "f2d1d3148cac4a98da608a1f4c333ac089098ae3"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:22:48 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:22:48 2016 -0700"
      },
      "message": "Fixed warning about redefining DECLSPEC\n"
    },
    {
      "commit": "f2d1d3148cac4a98da608a1f4c333ac089098ae3",
      "tree": "d4a7f3c53752c5ca8b5cc521e394d85597773adf",
      "parents": [
        "86cecb982f5aab311a3a6428301372447e4f436a"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:20:40 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:20:40 2016 -0700"
      },
      "message": "Fixed warning about missing field initializers in SDL_DBusContext\nStatic variables are automatically initialized to zero.\n"
    },
    {
      "commit": "86cecb982f5aab311a3a6428301372447e4f436a",
      "tree": "320da3852542e9ed0ed64303c2a637f62b01292f",
      "parents": [
        "bec31302de747c4586ed54ba35732d40a908dd67"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:15:39 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 08:15:39 2016 -0700"
      },
      "message": "Fixed processing mouse and keyboard events in hatari, which uses the old SDLMain.m without creating an SDLApplication instance\n"
    },
    {
      "commit": "bec31302de747c4586ed54ba35732d40a908dd67",
      "tree": "e69c60a37eed6bc9be99ec48b8b62cec6672ad53",
      "parents": [
        "b06cc34da859280ca2db34e25bd02cd23c9d4ce9"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 06:57:55 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 06:57:55 2016 -0700"
      },
      "message": "Fixed bug 2758 - Android issues with NDK r10c and API-21\n\nSylvain\n\nAfter a long time, I found out more clearly what was going wrong.\n\nThe native libraries should be built with a \"APP_PLATFORM\" as low as possible.\nIdeally, APP_PLATFORM should be equals to the minSdkVersion of the AndroidManifest.xml\nSo that the application never runs on a lower APP_PLATFORM than it has been built for.\n\nAn additional good patch would be to write explicitly in \"jni/Application.mk\": APP_PLATFORM\u003dandroid-10\n\n(If no APP_PLATFORM is set, the \"targetSdkVersion\" of the AndroidManifest.xml is applied as an APP_PLATFORM to the native libraries. And currently, this is bad, because targetSdkVersion is 12, whereas minSdkLevel is 10.\nAnd in fact, there is a warning from ndk: \"Android NDK: WARNING: APP_PLATFORM android-12 is larger than android:minSdkVersion 10 in ./AndroidManifest.xml\".)\n\n\nto precise what happened in the initial reported test-case:\nLet say the \"c\" code contains a call to \"srand()\".\n\nwith APP_PLATFORM\u003dandroid-21, libSDL2.so contains a undef reference to \"srand()\".\nwith APP_PLATFORM\u003dandroid-10, libSDL2.so contains a undef reference to \"srand48()\".\n\nbut srand() is missing on devices with APP_PLATFORM\u003dandroid-10 (it was in fact replaced by srand48()).\nSo, if you build for android-21 (where srand() is available), you will really have a call to \"srand()\" and it will fail on android-10.\nThat was the issue. The path tried to fix this by in fact always calling srand48().\n\n\nSDL patches that were applied are beneficial anyway, there are implicitly allowing they backward compatibility of using android-21 on a android-10 platform.\nIt can be helpful in case you want to target a higher APP_PLATFORM than minSdkVersion to have potentially access to more functions.\nEg you want to have access to GLES3 functions (or other) of \"android-21\". But, if dlopen() fails (on android-10), you do a fall-back to GLES2.\n"
    },
    {
      "commit": "b06cc34da859280ca2db34e25bd02cd23c9d4ce9",
      "tree": "4d1f72eceda1d5e962ed2a05317f5c769c4bc0e5",
      "parents": [
        "dc622679e296ae2bbfd2c7ebb8b23df22cd75246"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 01:04:21 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 01:04:21 2016 -0700"
      },
      "message": "Fixed building with cmake when fcitx isn\u0027t installed\n"
    },
    {
      "commit": "dc622679e296ae2bbfd2c7ebb8b23df22cd75246",
      "tree": "0e2ee46a3dc57d5f723cf14e04ba88ec13b2c9bd",
      "parents": [
        "066439eef9f4a56cf21ed516e9509afd768307c0"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 00:51:57 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 14 00:51:57 2016 -0700"
      },
      "message": "Fixed divide by zero if setting integer scale without setting logical width and height\n"
    },
    {
      "commit": "066439eef9f4a56cf21ed516e9509afd768307c0",
      "tree": "259e5bb8840a923a8233cd6a0677604e8cdefb94",
      "parents": [
        "bf330d85f7736ef5a3276c91e12e95596ac956f2"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 04:57:31 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 04:57:31 2016 -0700"
      },
      "message": "Fixed typo getting the drawable size\n"
    },
    {
      "commit": "bf330d85f7736ef5a3276c91e12e95596ac956f2",
      "tree": "05e138549ab54e1d04c70efded1e77b95cc98934",
      "parents": [
        "bcb679e2e8e82039611d315866300e69000985d8"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 04:54:43 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 04:54:43 2016 -0700"
      },
      "message": "Fixed bug 3328 - Race condition in Wayland_VideoInit\n\nRobert Folland\n\nWhen running this little test program with SDL2 on Wayland it often crashes in SDL_Init.\n\nFrom a backtrace it is apparent that there is a race condition in creating a xkb_context_ref. Sometimes it is 0x0.\n\nBy moving the relevant lines higher up in Wayland_VideoInit (in SDL2-2.0.4/src/video/wayland/SDL_waylandvideo.c:302) this seems to get fixed.\n\nI moved the call to WAYLAND_xkb_context_new() up to before the call to WAYLAND_wl_display_connect().\n\nHere is the test program (just a loop of init and quit), and a backtrace from gdb:\n\n#include \u003ccstdio\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cSDL2/SDL.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003ciostream\u003e\n\nint main(int argc, char **argv)\n{\n    int count \u003d atoi(argv[1]);\n\n    for (int i \u003d 0; i \u003c count; i++) {\n        std::cout \u003c\u003c \"Init \" \u003c\u003c i \u003c\u003c std::endl;\n        if (SDL_Init(SDL_INIT_VIDEO) \u003c 0) {\n            SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,\n                         \"Couldn\u0027t initialize SDL: %s\\n\",\n                         SDL_GetError());\n            return 1;\n        }\n        std::cout \u003c\u003c \"Quit\" \u003c\u003c std::endl;\n        SDL_Quit();\n    }\n    return 0;\n}\n\n\nInit 12\nQuit\nInit 13\n\nProgram received signal SIGSEGV, Segmentation fault.\nxkb_context_ref (ctx\u003dctx@entry\u003d0x0) at src/context.c:156\n156         ctx-\u003erefcnt++;\n(gdb) bt\n#0  xkb_context_ref (ctx\u003dctx@entry\u003d0x0) at src/context.c:156\n#1  0x00007ffff5e1cd4c in xkb_keymap_new (ctx\u003d0x0, format\u003dXKB_KEYMAP_FORMAT_TEXT_V1, flags\u003dflags@entry\u003dXKB_KEYMAP_COMPILE_NO_FLAGS) at src/keymap-priv.c:65\n#2  0x00007ffff5e1c6cc in xkb_keymap_new_from_buffer (ctx\u003d\u003coptimized out\u003e,\n    buffer\u003d0x7ffff7fd5000 \"xkb_keymap {\\nxkb_keycodes \\\"(unnamed)\\\" {\\n\\tminimum \u003d 8;\\n\\tmaximum \u003d 255;\\n\\t\u003cESC\u003e\", \u0027 \u0027 \u003crepeats 16 times\u003e, \"\u003d 9;\\n\\t\u003cAE01\u003e\", \u0027 \u0027 \u003cre\npeats 15 times\u003e, \"\u003d 10;\\n\\t\u003cAE02\u003e\", \u0027 \u0027 \u003crepeats 15 times\u003e, \"\u003d 11;\\n\\t\u003cAE03\u003e\", \u0027 \u0027 \u003crepeats 15 times\u003e, \"\u003d 12;\\n\\t\u003cAE04\u003e\", \u0027 \u0027 \u003crepeats 12 times\u003e..., length\u003d48090,\n    format\u003d\u003coptimized out\u003e, flags\u003d\u003coptimized out\u003e) at src/keymap.c:191\n#3  0x00007ffff7b8ea4e in keyboard_handle_keymap (data\u003d0x6169b0, keyboard\u003d\u003coptimized out\u003e, format\u003d\u003coptimized out\u003e, fd\u003d5, size\u003d48091)\n    at /home/vlab/abs/sdl2/src/SDL2-2.0.4/src/video/wayland/SDL_waylandevents.c:269\n#4  0x00007ffff64501f0 in ffi_call_unix64 () from /usr/lib/libffi.so.6\n#5  0x00007ffff644fc58 in ffi_call () from /usr/lib/libffi.so.6\n#6  0x00007ffff665be3e in wl_closure_invoke (closure\u003dclosure@entry\u003d0x61f000, flags\u003dflags@entry\u003d1, target\u003d\u003coptimized out\u003e, target@entry\u003d0x616d20,\n    opcode\u003dopcode@entry\u003d0, data\u003d\u003coptimized out\u003e) at src/connection.c:949\n#7  0x00007ffff6658be0 in dispatch_event (display\u003d\u003coptimized out\u003e, queue\u003d\u003coptimized out\u003e) at src/wayland-client.c:1274\n#8  0x00007ffff6659db4 in dispatch_queue (queue\u003d0x617398, display\u003d0x6172d0) at src/wayland-client.c:1420\n#9  wl_display_dispatch_queue_pending (display\u003d0x6172d0, queue\u003d0x617398) at src/wayland-client.c:1662\n#10 0x00007ffff665a0cf in wl_display_roundtrip_queue (display\u003d0x6172d0, queue\u003d0x617398) at src/wayland-client.c:1085\n#11 0x00007ffff7b8faa0 in Wayland_VideoInit (_this\u003d\u003coptimized out\u003e) at /home/vlab/abs/sdl2/src/SDL2-2.0.4/src/video/wayland/SDL_waylandvideo.c:302\n#12 0x00007ffff7b7aed6 in SDL_VideoInit_REAL (driver_name\u003d\u003coptimized out\u003e, driver_name@entry\u003d0x0) at /home/vlab/abs/sdl2/src/SDL2-2.0.4/src/video/SDL_video.c:513\n#13 0x00007ffff7ae0ee7 in SDL_InitSubSystem_REAL (flags\u003d16416) at /home/vlab/abs/sdl2/src/SDL2-2.0.4/src/SDL.c:173\n#14 0x0000000000400b24 in main (argc\u003d2, argv\u003d0x7fffffffebb8) at vplay-init.cpp:13\n(gdb)\n"
    },
    {
      "commit": "bcb679e2e8e82039611d315866300e69000985d8",
      "tree": "2b763777345fd29aedeeffadd2f3000a96fa9b48",
      "parents": [
        "8b55a76f78054deee57df322586f0f480aaf8836"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 04:53:01 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 04:53:01 2016 -0700"
      },
      "message": "Fixed bug 3451 - Raspberry Pi Raspbian SDL_assert triggered sometimes at RPI_WarpMouseGlobal\n\nEric wing\n\nSometimes an SDL_assert triggers at RPI_WarpMouseGlobal\nsrc/video/raspberry/SDL_rpimouse.c:232 \u0027update\u0027.\n\nIt doesn\u0027t always reproduce, but it seems to happen when you really bog down the system and the event loop can\u0027t update for awhile.\n\n\nThe first time I hit this, I wasn\u0027t even using the mouse. I don\u0027t call any warp mouse functions either.\n\n\nI can usually reproduce with a simple program that runs an expensive blocking CPU series of functions which blocks the main loop until complete (can be up to 10 seconds).\n\nSometimes this assertion gets triggered after that. I\u0027m not sure if\nthey are related or coincidental.\n\n\nDisabling the SDL_asserts when compiling SDL will avoid this problem. I actually haven\u0027t seen any problems with the mouse when I do this.\n\nOn a Raspberry Pi 2 running Raspbian Jessie.\n"
    },
    {
      "commit": "8b55a76f78054deee57df322586f0f480aaf8836",
      "tree": "03bae66b16dc030ac6df20bb0c3ee98c4926d135",
      "parents": [
        "82215e9a81b9af7c7a4ffafa9e1678362f887965"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 04:01:25 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 04:01:25 2016 -0700"
      },
      "message": "Fixed black screen on Steam Link\n"
    },
    {
      "commit": "82215e9a81b9af7c7a4ffafa9e1678362f887965",
      "tree": "c34ec3a88e6d76e44c877e2a68e513a95114f95c",
      "parents": [
        "11c588e69e25e0fe68b3b09ed17dbfe36ee43f5f"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 02:19:23 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 02:19:23 2016 -0700"
      },
      "message": "Added support for the PS4 Slim controller, model CUH-ZCT2U\n"
    },
    {
      "commit": "11c588e69e25e0fe68b3b09ed17dbfe36ee43f5f",
      "tree": "219e4a662f74d26ce38e4cd8a889a55c7c70e82f",
      "parents": [
        "0d0e94860cd042b64e064fbb58ddc2521248e556"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 02:09:37 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 02:09:37 2016 -0700"
      },
      "message": "Fixed black screen on Steam Link\n"
    },
    {
      "commit": "0d0e94860cd042b64e064fbb58ddc2521248e556",
      "tree": "2eae4a8438ecafdf8a7094a0125e32b42bd536ee",
      "parents": [
        "ccef9153da1484949ed4633e96fd9a92f932264c"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 08:46:34 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 13 08:46:34 2016 -0700"
      },
      "message": "Fixed bug 3355 - false \"Invalid renderer\" after creating an \"opengles2\" renderer.\n\nCall SDL_GL_GetDrawableSize() directly because we may be in the initialization path and SDL_GetRendererOutputSize() will fail because the renderer magic isn\u0027t set up yet.\n"
    },
    {
      "commit": "ccef9153da1484949ed4633e96fd9a92f932264c",
      "tree": "ae5529729a70c2a18ede8ec88c847cc93c13dde9",
      "parents": [
        "b54bd4a800e51f73b9a384b818aeb5d4cb56754a"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 22:34:54 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 22:34:54 2016 -0700"
      },
      "message": "Added a note on how to allow non-root applications to increase their thread priority on Linux\n"
    },
    {
      "commit": "b54bd4a800e51f73b9a384b818aeb5d4cb56754a",
      "tree": "31788de2f2685ab1c4f4e29c986ea9503a66c12e",
      "parents": [
        "d70166e5bcdff2299cbf5bc3865ac17ea4205382"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 22:25:19 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 22:25:19 2016 -0700"
      },
      "message": "Work-around for a hang when USB devices are unplugged, contributed by James Zipperer\n"
    },
    {
      "commit": "d70166e5bcdff2299cbf5bc3865ac17ea4205382",
      "tree": "33b550e5fbe267d28be47210c2ba930681374726",
      "parents": [
        "ef356db533306919c2cf435d79bb4c361f68f734"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 19:50:16 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 19:50:16 2016 -0700"
      },
      "message": "Backed out change 92dc590a7116 which was: Fixed bug 3320 - SDL_windows_main.c defines both console application entry points\nWith that change only the wmain() entry point was defined, and applications that linked with main() would no longer build.\n"
    },
    {
      "commit": "ef356db533306919c2cf435d79bb4c361f68f734",
      "tree": "3719e24b660d9b30f879836efbb5d4845da43165",
      "parents": [
        "91434944d4eae0cb2ff9c522cf9f96b5c53ba52f"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 18:57:12 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 18:57:12 2016 -0700"
      },
      "message": "Added note for David Carlier\u0027s work on OpenBSD\n"
    },
    {
      "commit": "91434944d4eae0cb2ff9c522cf9f96b5c53ba52f",
      "tree": "b5917aa16a5d62c9082fe90af8ddac243da4393c",
      "parents": [
        "3636ae6dd0b3783a75e20aea0de0ab87975bec6d"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 18:46:17 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 18:46:17 2016 -0700"
      },
      "message": "Build SDL as universal binary\n"
    },
    {
      "commit": "3636ae6dd0b3783a75e20aea0de0ab87975bec6d",
      "tree": "11bba280cdee1f49f6c4fa1f15bc29e66cc21651",
      "parents": [
        "7b8bd1c537cddae899c92a72ef5907a3afcab183"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 18:45:56 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 18:45:56 2016 -0700"
      },
      "message": "Fixed build warning\n"
    },
    {
      "commit": "7b8bd1c537cddae899c92a72ef5907a3afcab183",
      "tree": "9e639f26c49dffdc447f89ac0bc0f96704b0bc7d",
      "parents": [
        "7c66d66365ccacc6ac34b0cb50116a2b7da71aba"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Wed Oct 12 23:38:31 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Wed Oct 12 23:38:31 2016 +0200"
      },
      "message": "X11: Fixed compile warning about unused variable.\n"
    },
    {
      "commit": "7c66d66365ccacc6ac34b0cb50116a2b7da71aba",
      "tree": "11b4f0aa8c0364d8c619bd414c8a93bfe07b506c",
      "parents": [
        "457c9570d94bbcd0db34362a7b5e2d7ce35d9cd8"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Wed Oct 12 23:36:49 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Wed Oct 12 23:36:49 2016 +0200"
      },
      "message": "Removed empty statements in tests.\n"
    },
    {
      "commit": "457c9570d94bbcd0db34362a7b5e2d7ce35d9cd8",
      "tree": "0175480dcdc60e42ec6f08ac096df521aa833643",
      "parents": [
        "eec818808d859e1979cd37b2fb4869328d773cb6"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Wed Oct 12 23:36:29 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Wed Oct 12 23:36:29 2016 +0200"
      },
      "message": "Linux: Removed redundant function call.\n"
    },
    {
      "commit": "eec818808d859e1979cd37b2fb4869328d773cb6",
      "tree": "5e39507eae209fa3a82663011e632612ea3d4c8c",
      "parents": [
        "9c40244c42fd2ed5d519c44050011527d541d617"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 00:01:17 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 12 00:01:17 2016 -0700"
      },
      "message": "Fixed pointer signedness warning\n"
    },
    {
      "commit": "9c40244c42fd2ed5d519c44050011527d541d617",
      "tree": "f3adc7d0a834231210793ee1420a40c5b981a734",
      "parents": [
        "0d3731b708a935b88fafe60cff2d784210d78569"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 11 23:56:52 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 11 23:56:52 2016 -0700"
      },
      "message": "Updated WhatsNew with 2.0.5 changes\n"
    },
    {
      "commit": "0d3731b708a935b88fafe60cff2d784210d78569",
      "tree": "08d9af4a84b0ab422b28e848535685b0579dfb81",
      "parents": [
        "54af527402dd09bcd3e788473991452891aa14fe"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 11 23:21:41 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 11 23:21:41 2016 -0700"
      },
      "message": "Fixed comment for new pixel formats\n"
    },
    {
      "commit": "54af527402dd09bcd3e788473991452891aa14fe",
      "tree": "02fdc95b2456096c4cf06d31c51d6d3e9ffb444b",
      "parents": [
        "10a371b29308a5b1bbd8149bfe22f344dbf47b01"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 11 23:19:05 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 11 23:19:05 2016 -0700"
      },
      "message": "Fixed bug 2923 - Add SDL_PIXELFORMAT_RGBA32 for byte-wise 32bit RGBA data\n\nDaniel Gibson\n\nOk, I followed the simple approach of just making SDL_PIXELFORMAT_RGBA32 an alias of SDL_PIXELFORMAT_RGBA8888/SDL_PIXELFORMAT_ABGR8888, depending on endianess. And I did the same for SDL_PIXELFORMAT_ARGB32, .._BGRA, .._ABGR.\n\nSDL_GetPixelFormatName() will of course return SDL_PIXELFORMAT_RGBA8888 (or SDL_PIXELFORMAT_ABGR8888) instead of SDL_PIXELFORMAT_RGBA32, but as long as that\u0027s mentioned in the docs it shouldn\u0027t be a problem.\n"
    },
    {
      "commit": "10a371b29308a5b1bbd8149bfe22f344dbf47b01",
      "tree": "d364d26f5695d84ebf080558532de243ad11f33c",
      "parents": [
        "1f8c158832ed383cb2ee68c55a662d00745fea71"
      ],
      "author": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Tue Oct 11 16:36:40 2016 -0400"
      },
      "committer": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Tue Oct 11 16:36:40 2016 -0400"
      },
      "message": "cmake: Now generates Wayland protocol source bits like the configure script.\n\nFixes Bugzilla #3430.\n"
    },
    {
      "commit": "1f8c158832ed383cb2ee68c55a662d00745fea71",
      "tree": "791779e42461a4df2a093b98f15d5f692a2ab6a2",
      "parents": [
        "c424b15929b7e83879ed3ff858ea37acbd1526dc"
      ],
      "author": {
        "name": "Alex Baines",
        "email": "alex@abaines.me.uk",
        "time": "Mon Oct 03 15:31:11 2016 +0100"
      },
      "committer": {
        "name": "Alex Baines",
        "email": "alex@abaines.me.uk",
        "time": "Mon Oct 03 15:31:11 2016 +0100"
      },
      "message": "Fix invalid read from poor setlocale usage.\n"
    },
    {
      "commit": "c424b15929b7e83879ed3ff858ea37acbd1526dc",
      "tree": "4e9e00b15afb8acf412d99292d0c12058b0a7447",
      "parents": [
        "b9d12a818542c67baf9ffc6a7b0505117ceb93f2"
      ],
      "author": {
        "name": "Steffen Pankratz",
        "email": "kratz00@gmx.de",
        "time": "Mon Oct 10 18:28:05 2016 +0200"
      },
      "committer": {
        "name": "Steffen Pankratz",
        "email": "kratz00@gmx.de",
        "time": "Mon Oct 10 18:28:05 2016 +0200"
      },
      "message": "Fixed bug 3096 - SDL_BlitSurface with overlapping source and destination\n"
    },
    {
      "commit": "b9d12a818542c67baf9ffc6a7b0505117ceb93f2",
      "tree": "46c81022e446e290bd22befbc1a37383df1c33c6",
      "parents": [
        "2bd6608b1b039563434a5ef99dcb59b258e4f139"
      ],
      "author": {
        "name": "Steffen Pankratz",
        "email": "kratz00@gmx.de",
        "time": "Tue Oct 11 17:31:29 2016 +0200"
      },
      "committer": {
        "name": "Steffen Pankratz",
        "email": "kratz00@gmx.de",
        "time": "Tue Oct 11 17:31:29 2016 +0200"
      },
      "message": "Fixed a memory leak in function GL_RenderReadPixels\n"
    },
    {
      "commit": "2bd6608b1b039563434a5ef99dcb59b258e4f139",
      "tree": "293fe10656d63ba1511668c4529c644a756e8e0a",
      "parents": [
        "877b614743d6da080bbde7daa7c822797f0ccbf9"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 10 23:26:26 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 10 23:26:26 2016 -0700"
      },
      "message": "Use SDL C runtime strlen()\n"
    },
    {
      "commit": "877b614743d6da080bbde7daa7c822797f0ccbf9",
      "tree": "734ca96058b38f9a699a50d00490b7d366b2f8f4",
      "parents": [
        "1905e7b0977b64d39dcb920bba97c80f0f06b377"
      ],
      "author": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Mon Oct 10 15:29:18 2016 -0400"
      },
      "committer": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Mon Oct 10 15:29:18 2016 -0400"
      },
      "message": "alsa: more tapdancing to enumerate physical hardware devices.\n\nApparently some systems see \"hw:\", some see \"default:\" and some see\n\"sysdefault:\" (and maybe others!). My workstation sees both \"hw:\" and\n\"sysdefault:\" ...\n\nTry to find a prefix we like and prioritize the prefixes we (think) we want\nmost. If everything else fails, if there\u0027s a \"default\" (not a prefix) device\nname, list that by itself so the user gets _something_ here.\n\nIf we can\u0027t find a prefix we like _and_ there\u0027s no \"default\" device, report\nno hardware found at all.\n"
    },
    {
      "commit": "1905e7b0977b64d39dcb920bba97c80f0f06b377",
      "tree": "2511856049885181b9145ff40b62dd7a84dfc2e5",
      "parents": [
        "3c7f0c51df3b1276dfa95e7a055ccfcbc2e6874f"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 10 02:58:29 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 10 02:58:29 2016 -0700"
      },
      "message": "Made #if defined(X) consistent\n"
    },
    {
      "commit": "3c7f0c51df3b1276dfa95e7a055ccfcbc2e6874f",
      "tree": "8ca5a3b2e7ee85616d5448ea8c2912beb4fd491a",
      "parents": [
        "19f3a4da19fbdf11f6db184500ae99c8e1dda411"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 10 02:58:12 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 10 02:58:12 2016 -0700"
      },
      "message": "Make sure we have iconv.h before building with it\n"
    },
    {
      "commit": "19f3a4da19fbdf11f6db184500ae99c8e1dda411",
      "tree": "d4489e611ebf546452f22b1b6bc130a86c81ed34",
      "parents": [
        "70ea8650539bc42c0658c999614b267b0f6255b6"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 09 20:31:32 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 09 20:31:32 2016 +0200"
      },
      "message": "Fixed compiling of three test programs with C++.\n"
    },
    {
      "commit": "70ea8650539bc42c0658c999614b267b0f6255b6",
      "tree": "f67ee6cf34a555941158bdb368166aa32177db9e",
      "parents": [
        "75f08c229c48629da32ddee4c46e0601141d0d44"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 09 20:31:04 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 09 20:31:04 2016 +0200"
      },
      "message": "Linux: Fixed mixed up scancodes.\n"
    },
    {
      "commit": "75f08c229c48629da32ddee4c46e0601141d0d44",
      "tree": "5a58e809999bc6bb226e1e46ba05b1f4341fc2de",
      "parents": [
        "02e02d8102377973f3fbfaa108f526d3babc085a"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 09 20:30:49 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 09 20:30:49 2016 +0200"
      },
      "message": "iOS: Updated demo README.\n"
    },
    {
      "commit": "02e02d8102377973f3fbfaa108f526d3babc085a",
      "tree": "04a01766f8425f718e5a229be3e2dbc49ac7505b",
      "parents": [
        "193155a847f97ab817bec7bd5a6e9578ba772bf6"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Sat Oct 08 11:30:07 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Sat Oct 08 11:30:07 2016 -0700"
      },
      "message": "Fixed building and using fcitx IME support on Linux\n"
    },
    {
      "commit": "193155a847f97ab817bec7bd5a6e9578ba772bf6",
      "tree": "e96931344ab51af19004dec75cb7d8a990c60800",
      "parents": [
        "b4641701e84d7367af1e0a9dc63033973dea819e"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 23:40:44 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 23:40:44 2016 -0700"
      },
      "message": "Implemented SDL_GetHintBoolean() to make it easier to check boolean hints\n"
    },
    {
      "commit": "b4641701e84d7367af1e0a9dc63033973dea819e",
      "tree": "403ebdc8173e5828b36e6f49801b1f4aa957e230",
      "parents": [
        "ded9fbc50e5997c91298e48d11ef3d6eb3e5507e"
      ],
      "author": {
        "name": "Ethan Lee",
        "email": "flibitijibibo@flibitijibibo.com",
        "time": "Fri Sep 30 09:26:57 2016 -0400"
      },
      "committer": {
        "name": "Ethan Lee",
        "email": "flibitijibibo@flibitijibibo.com",
        "time": "Fri Sep 30 09:26:57 2016 -0400"
      },
      "message": "SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING\n"
    },
    {
      "commit": "ded9fbc50e5997c91298e48d11ef3d6eb3e5507e",
      "tree": "0c5f90700f8d063c06d9402aaea57c32442062e5",
      "parents": [
        "b8af45ce245f54f7350cc87113751c02329f35f1"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 19:08:22 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 19:08:22 2016 -0700"
      },
      "message": "ALSA_snd_pcm_drop() can hang on some systems (Steam Link) so don\u0027t use that when shutting down the ALSA audio driver.\n"
    },
    {
      "commit": "b8af45ce245f54f7350cc87113751c02329f35f1",
      "tree": "3f675891a3e751926b2cd1b87345f0046b91c675",
      "parents": [
        "011d93fe246d697099e185fb27488f45982b6de7"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:57:40 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:57:40 2016 -0700"
      },
      "message": "Fixed bug 2824 - Add Fcitx Input Method Support\n\nWeitian Leung\n\nJust moved ibus direct call to SDL_IME_* related functions, and adds fcitx IME support (uses DBus, too),\nenable with env: SDL_IM_MODULE\u003dfcitx (ibus still the default one)\n"
    },
    {
      "commit": "011d93fe246d697099e185fb27488f45982b6de7",
      "tree": "b047d0b9af035761848309dd4680c2b6e22e9a16",
      "parents": [
        "f4539fcfa15a4b7a7abbc812e73fd8d672c8ee21"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:24:34 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:24:34 2016 -0700"
      },
      "message": "Fixed bug 3438 - SDL_GameControllerEventWatcher: Log on event with value \u003e\u003d k_nMaxReverseEntries\n"
    },
    {
      "commit": "f4539fcfa15a4b7a7abbc812e73fd8d672c8ee21",
      "tree": "17ad91e0afb45283c90751c0e0d7c053c0bf8a6b",
      "parents": [
        "ba4365cce41867d45a3a286befae73fd540a1bc2"
      ],
      "author": {
        "name": "Alex Baines",
        "email": "alex@abaines.me.uk",
        "time": "Mon Oct 03 11:35:34 2016 +0100"
      },
      "committer": {
        "name": "Alex Baines",
        "email": "alex@abaines.me.uk",
        "time": "Mon Oct 03 11:35:34 2016 +0100"
      },
      "message": "Improve X11 key handling when XKB isn\u0027t available + add xvnc scancodes.\n\nBased on a patch by Bill Lash (see bug 3094).\n"
    },
    {
      "commit": "ba4365cce41867d45a3a286befae73fd540a1bc2",
      "tree": "818a1f539a693be3e3f2bc7acda0a56ab6c59737",
      "parents": [
        "0ace2751bf3aab1714130fcbc3fd1e523f1bf906"
      ],
      "author": {
        "name": "Bill Lash",
        "email": "william.lash@gmail.com",
        "time": "Sat Aug 15 00:25:52 2015 -0500"
      },
      "committer": {
        "name": "Bill Lash",
        "email": "william.lash@gmail.com",
        "time": "Sat Aug 15 00:25:52 2015 -0500"
      },
      "message": "Additional patch to correct the number key assignments, and add assignments for keys that were missed\n"
    },
    {
      "commit": "0ace2751bf3aab1714130fcbc3fd1e523f1bf906",
      "tree": "d4e0393fe5c97a123b4a9880a0408e0e4509f6f6",
      "parents": [
        "dc4f702a195efcf8e8dab896310f17199ddaa905"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:11:03 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:11:03 2016 -0700"
      },
      "message": "Fixed bug 3063 - Wayland: SDL resizes EGL surface to 0x0.\n\nx414e54\n\nWayland will sometimes send empty resize events (0 width and 0 height) to the client. I have not worked out the exact conditions a client would receive these but I can assume it might be if the window is offscreen or not mapped yet.\n\nThis causes issues with some SDL clients as they receive the 0x0 event and unexpected resize event or might not request to resize back to the correct size.\n\nAs per the wl_shell Wayland spec configure events are only a suggestion and the client is free to ignore or pick a different size (this is how min/max and fixed aspect ratio is supped to be implemented).\n\nA patch is attached but is just the first iteration and I will fix any issues such as checking for FULLSCREEN/MAXIMIZED or RESIZABLE flags unless someone else fixes this first.\n\nI have update to take into account non resizable and fullscreen windows. Also adding in maximize/restore and title functions for Wayland.\n"
    },
    {
      "commit": "dc4f702a195efcf8e8dab896310f17199ddaa905",
      "tree": "38afeb0923882a91c32943f085f84d11ee963ce3",
      "parents": [
        "28bd2455142251d4e5bd4a5f6e5e58e0f7a33c74"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:09:09 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:09:09 2016 -0700"
      },
      "message": "Fixed bug 3061 - Selecting the dummy video driver on Mac OS X results in an error\n\nDarren Kulp\n\nThe dummy video driver is not available on Mac OS X if SDL_VIDEO_OPENGL is set at library compilation time.\n\nIn src/video/SDL_video.c, there is a compile-time check in SDL_CreateWindow() for (SDL_VIDEO_OPENGL \u0026\u0026 __MACOSX__). When it succeeds, SDL_WINDOW_OPENGL is always requested. Since the dummy video driver does not supply an OpenGL implementation, the error \"No OpenGL support in video driver\" is supplied to the user, and SDL_CreateWindow() is exited early.\n"
    },
    {
      "commit": "28bd2455142251d4e5bd4a5f6e5e58e0f7a33c74",
      "tree": "a9382c8ae905c026c4b3fef58e9061b331474b6c",
      "parents": [
        "a5c5fab7c70e40b12649d1dfc8abd3dbeb0184e8"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:03:08 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:03:08 2016 -0700"
      },
      "message": "Fixed bug 3043 - fix alsa configury and cmake checks\n\nOzkan Sezer\n\nSDL\u0027s alsa uses snd_pcm_recover() which has been available only since alsa-lib-1.0.11.\n"
    },
    {
      "commit": "a5c5fab7c70e40b12649d1dfc8abd3dbeb0184e8",
      "tree": "bcfd9601f36a77cfede262b950b75ce750d0b34c",
      "parents": [
        "a8110001165ca60597deb24ef6ef61458a2a0bf7"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:00:30 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 18:00:30 2016 -0700"
      },
      "message": "Fixed bug 3029 - software renderer cuts off edges when rotate-blitting with a multiple of 90 degrees\n\nAdam M.\n\nWhen doing a rotated texture copy with the software renderer, where the angle is a multiple of 90 degrees, one or two edges of the image get cut off. This is because of the following line in sw_rotate.c:\n    if ((unsigned)dx \u003c (unsigned)sw \u0026\u0026 (unsigned)dy \u003c (unsigned)sh) {\nwhich is effectively saying:\n    if (dx \u003e\u003d 0 \u0026\u0026 dx \u003c src-\u003ew-1 \u0026\u0026 dy \u003e\u003d 0 \u0026\u0026 dy \u003c src-\u003eh-1) {\n\nAs a result, it doesn\u0027t process pixels in the right column or bottom row of the source image (except when they\u0027re accessed as part of the bilinear filtering for nearby pixels). This causes it to look like the edges are cut off, and it\u0027s especially obvious with an exact multiple of 90 degrees.\n"
    },
    {
      "commit": "a8110001165ca60597deb24ef6ef61458a2a0bf7",
      "tree": "06fd7d62d3f11b6b183671154c42f06eba321943",
      "parents": [
        "e3f5eaa62025b182d5fab952a4f4b8dd52dd6657"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:58:02 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:58:02 2016 -0700"
      },
      "message": "Fixed bug 3022 - SDL_UnlockMutex(SDL_EventQ.lock) in SDL_PeepEvents can cause error when lock is null\n"
    },
    {
      "commit": "e3f5eaa62025b182d5fab952a4f4b8dd52dd6657",
      "tree": "258d3511e6b6e553cad70e47cb454ee5f605d90d",
      "parents": [
        "0a7ea3046cc51617e8f0df4a7a2c2a3fbe3144a6"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:49:33 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:49:33 2016 -0700"
      },
      "message": "Fixed bug 2983 - Update Android.readme to include Tegra Graphics Debugger compatibility tip\n\nMichael Labbé\n\nNVidia has released some pretty nice Tegra profiling tools for their Android devices. The NVidia Tegra Graphics Debugger works by providing an interposer library that intercepts ES2 and EGL calls.  You must link against these libraries.\n\nUnfortunately, this quietly fails with SDL2 because libEGL and libGLES2 are dynamically loaded with dlopen().\n\nNVidia offers a secondary approach to using the Tegra Graphics Debugger: root your device and install a global interposer library.  Almost no devs will try this first if they don’t have a rooted device.\n\nI propose an update to the Android readme that explains why the static linking approach recommended by NVidia doesn’t work.\n"
    },
    {
      "commit": "0a7ea3046cc51617e8f0df4a7a2c2a3fbe3144a6",
      "tree": "890cbe168569fa9941857de82e96b65eed2ddae8",
      "parents": [
        "d2cf99bedd4b07a8eebac473f177d50a4b59ae41"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:46:58 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:46:58 2016 -0700"
      },
      "message": "Converted README documentation to DOS text format\n"
    },
    {
      "commit": "d2cf99bedd4b07a8eebac473f177d50a4b59ae41",
      "tree": "bf9d8528c3d8965fadfc2a6de6f6384beade009d",
      "parents": [
        "1bd4656a5c5516b4759800ab0b8495c8ecf5350c"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:30:21 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:30:21 2016 -0700"
      },
      "message": "Fixed bug 2957 - De-reference rz_src without NULL check in SDLgfx_rotateSurface function\n\nNitz\n\nIn function SDLgfx_rotateSurface:\n\nrz_dst \u003d\n            SDL_CreateRGBSurface(SDL_SWSURFACE, dstwidth, dstheight + GUARD_ROWS,\n            rz_src-\u003eformat-\u003eRmask, rz_src-\u003eformat-\u003eGmask,\n            rz_src-\u003eformat-\u003eBmask, rz_src-\u003eformat-\u003eAmask);\n\nHere rz_src get De-referenced without NULL check, which is risky.\n"
    },
    {
      "commit": "1bd4656a5c5516b4759800ab0b8495c8ecf5350c",
      "tree": "d36b321dc9e2db0acee136455558b33d8ce9fcd1",
      "parents": [
        "15c57330b9d07f62e23ab1b99efe38f4b9717453"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:26:25 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:26:25 2016 -0700"
      },
      "message": "Fixed bug 2956 - De-reference videodata without NULL check in X11_DispatchEvent(_THIS) function\n"
    },
    {
      "commit": "15c57330b9d07f62e23ab1b99efe38f4b9717453",
      "tree": "95ded1636a6936fa7929b96c95d9209a451d3085",
      "parents": [
        "e8283769b5ec4e68e390d1c0cc3c84c955cdd359"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:23:20 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:23:20 2016 -0700"
      },
      "message": "Fixed bug 2952 - SDL_MixAudioFormat does not support audio format AUDIO_U16LSB/AUDIO_U16MSB\n\nSimon Sandström\n\nAs stated in Summary. The switch statement will execute the default case and set a SDL error message: \"SDL_MixAudio(): unknown audio format\".\n\nThere are atleast two more problems here:\n\n1. SDL_MixAudioFormat does not notify the user that an error has occured and that a SDL error message was set. It took me awhile to understand why I couldn\u0027t mix down the volume on my AUDIO_U16LSB formatted audio stream.. until I started digging in the SDL source code.\n\n2. The error message is incorrect, it should read: \"SDL_MixAudioFormat(): unknown audio format\".\n"
    },
    {
      "commit": "e8283769b5ec4e68e390d1c0cc3c84c955cdd359",
      "tree": "a13cd9cbbec94d8006ad7fd9fd9869dec4f87df7",
      "parents": [
        "1482737d0f005322bbca7884eb5ab09b06ed3d98"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:04:58 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 17:04:58 2016 -0700"
      },
      "message": "Fixed bug 2924 - SDL_CreateRGBSurface[From] versions that take SDL_PIXELFORMAT enum\n\nDaniel Gibson\n\nCurrently, SDL_CreateRGBSurface() and SDL_CreateRGBSurfaceFrom() take Uint32 masks for RGBA to \"describe\" the Pixelformat of the surface.\nInternally those value are only used to map to one of the SDL_PIXELFORMAT_* enum values that are used for further processing.\n\nI think it would be both handy and more efficient to be able to specify SDL_PIXELFORMAT_* yourself without using SDL_PixelFormatEnumToMasks() to create masks first, so I implemented functions that do that:\nSDL_CreateRGBSurfaceWithFormat() and SDL_CreateRGBSurfaceWithFormatFrom() which are like the versions without \"WithFormat\" but instead of taking 4 Uint32s for R/G/B/A masks, they take one for a SDL_PIXELFORMAT_* enum value.\n\nTogether with https://bugzilla.libsdl.org/show_bug.cgi?id\u003d2923 creating a SDL_Surface* from RGBA data (e.g. from stb_image)  is as easy as\n  surf \u003d SDL_SDL_CreateRGBSurfaceWithFormat(0, w, h, bppToUse*8, SDL_PIXELFORMAT_RGBA32);\n"
    },
    {
      "commit": "1482737d0f005322bbca7884eb5ab09b06ed3d98",
      "tree": "dd32005dd755feb6b0b253678797660a7a39367f",
      "parents": [
        "65228b6b717e3f2d59f5d137095ee9b428589b4a"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:44:42 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:44:42 2016 -0700"
      },
      "message": "Fixed bug 2885 - SDL_stdinc.h doesn\u0027t need to include iconv.h\n\nRyan C. Gordon\n\nWe still include iconv.h in SDL_stdinc.h, probably because this header might have referenced the native iconv functions and types directly. Since these are hidden behind a stable ABI now and never just a #define for the system iconv, we shouldn\u0027t need this header included from a public SDL header anymore, slowing down external apps compiles and pulling tons of stuff into the namespace.\n"
    },
    {
      "commit": "65228b6b717e3f2d59f5d137095ee9b428589b4a",
      "tree": "147164fa07743a8e63edadedde443fe439063e33",
      "parents": [
        "744162bad770d62438d3996b6690009ed70aa746"
      ],
      "author": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Fri Oct 07 19:39:43 2016 -0400"
      },
      "committer": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Fri Oct 07 19:39:43 2016 -0400"
      },
      "message": "audio: Backed out the audio-thread detaching changes.\n\nIt added a ton of complexity. A simpler solution might arise at some\npoint though.\n"
    },
    {
      "commit": "744162bad770d62438d3996b6690009ed70aa746",
      "tree": "e08dcceaccd918790b5429b715d698b070d61eac",
      "parents": [
        "b99ca5872e8fd2cd9e8efc873ccf248e1731f8e5"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:32:58 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:32:58 2016 -0700"
      },
      "message": "Fixed bug 2833 - Access Violation on SDL_PollEvent after init, delay and quit of joystick subsystem\n\nJan Klass\n\nNot sure if this is limited to the joystick subsystem,\nbut I created a minimal program for reproducibility,\nwhich is attached.\n\nThe issue occurs with my gamepad Razer Onza (an xbox-style gamepad) plugged in.\nOn initialization, the gamepad is being recognized.\nAfter quitting the subsystem, the poll will receive the joystick added event,\nwhich it instantly handles itself, calling SDL_SYS_JoystickDetect again,\nwhich this time calls IDirectInput8_EnumDevices with dinput \u003d NULL (after it was released on quit).\nThis seems to lead to an access violation within said function, which I have no source for.\n"
    },
    {
      "commit": "b99ca5872e8fd2cd9e8efc873ccf248e1731f8e5",
      "tree": "221add10bc703922d40274a2b60f9723587bbafb",
      "parents": [
        "56535a51c913d32a69c4f5b9b057cfc54b7c413d"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:19:50 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:19:50 2016 -0700"
      },
      "message": "Fixed bug 2832 - Inverted arrow-key navigation in MessageBox\n\nJan Hellwig\n\nOn Windows, you are able to navigate between the buttons on a MessageBox that was created using SDL_ShowMessageBox using the arrow keys. However, if you press the left arrow key, the selection jumps to the button on the right of the currently selected one (and vice versa).\n\nThis can be fixed by reversing the order in which the buttons are added to the dialog.\n\nThe attached patch files fixes this problem. However the first press of an arrow key leads to the selection of the leftmost or rightmost button on the MessageBox, not to the selection of the button left/right of the one that is selected by default.\n"
    },
    {
      "commit": "56535a51c913d32a69c4f5b9b057cfc54b7c413d",
      "tree": "dab1ac46537be75f966b8fbd61d8abdb2675ec4c",
      "parents": [
        "242dabfbe1f4c6c3d60e400190415f0fcbcaab1e"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:13:37 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:13:37 2016 -0700"
      },
      "message": "Fixed recentering triggers when the application doesn\u0027t have focus\n"
    },
    {
      "commit": "242dabfbe1f4c6c3d60e400190415f0fcbcaab1e",
      "tree": "63db113a97c5a2bc6fd82459af5cb2854abaf965",
      "parents": [
        "d36fc78eb8e682911bea51293870b7b361734e20"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:04:15 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 16:04:15 2016 -0700"
      },
      "message": "Fixed bug 2823 - Release events for triggers receive wrong centered value\n\nRyochan7\n\nI have been using SDL 2 for a little project that I have been developing for a while. My project is called antimicro and it takes gamepad input and then translates gamepad events into keyboard and mouse events. SDL is used to read the input from an XInput gamepad and it works great for the most part. However, there is one glaring problem that I have encountered.\n\nWhen a device is unplugged and SDL sends the centered value release events for all axes, buttons, and hats, SDL does not use the proper centered value for the triggers. It pushes an SDL_JOYAXISMOTION event onto the queue with a value of 0 for all axes. That value is converted to around 16,000 for a Game Controller. That value is incorrect for triggers and, in my program, that causes any bindings that are assigned to the triggers to get activated. With most profiles, that will typically mean that a mouse right click and left click will be activated before the device is finally seen as removed and then those bindings are released by antimicro.\n"
    },
    {
      "commit": "d36fc78eb8e682911bea51293870b7b361734e20",
      "tree": "45272df75aa68ac5c8bb23dcdf7d6276f7fc5083",
      "parents": [
        "50fcfbc6fcc27e208e2c7b53e644fbb9ec321035"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 15:21:19 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 15:21:19 2016 -0700"
      },
      "message": "Fixed bug 2808 - Fix SDL reporting wrong window size on resume\n\nJonas Kulla\n\nAt startup time, the single android window is assigned a \"windowed\" (window-\u003ewindowed.{w,h}) size based on the current orientation of the mobile device; this size is never updated throughout the lifetime of the app.\n\nThis becomes problematic when the app is paused and then resumed in an orientation that it did not start up in. Eventually, \u0027SDL_OnWindowRestored()\u0027 is called, which calls \u0027SDL_UpdateFullscreenMode()\u0027. This function is very problematic because it is written with a desktop monitor in mind: it tries to find a matching display mode for the windowed size, doesn\u0027t find any, and finally applies the windowed size as the fullscreen one. In the end, the windowed size is reported in a RESIZED event, which doesn\u0027t correspond to the actual surface size.\n\nTo see this in action: Start an orientation aware SDL app in eg. portrait mode, suspend the app, put the device into landscape orientation and resume the app. It will erroneously render in portrait mode (until the device is rotated again).\n"
    },
    {
      "commit": "50fcfbc6fcc27e208e2c7b53e644fbb9ec321035",
      "tree": "8cdae668cee164a7eddecc5b0f7cb8707f935566",
      "parents": [
        "9ab809fec4417a2e107aef9aabb51b469f3b6e9e"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 15:08:37 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 15:08:37 2016 -0700"
      },
      "message": "Applied Ubuntu patch bug_822210_fix_sdl2-config.cmake_whitespace.patch\n"
    },
    {
      "commit": "9ab809fec4417a2e107aef9aabb51b469f3b6e9e",
      "tree": "cedae4c3fe36250596652d0bed2547bd49a47f91",
      "parents": [
        "46e54b15e823df2fa9ae02004991ce040a6e4832"
      ],
      "author": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Fri Oct 07 15:13:46 2016 -0400"
      },
      "committer": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Fri Oct 07 15:13:46 2016 -0400"
      },
      "message": "audio: Don\u0027t trust audio drivers to drain pending audio.\n\nThis tends to be a frequent spot where drivers hang, and the waits were\noften unreliable in any case.\n\nInstead, our audio thread now alerts the driver that we\u0027re done streaming audio\n(which currently XAudio2 uses to alert the system not to warn about the\nimpending underflow) and then SDL_Delay()\u0027s for a duration that\u0027s reasonable\nto drain the DMA buffers before closing the device.\n"
    },
    {
      "commit": "46e54b15e823df2fa9ae02004991ce040a6e4832",
      "tree": "6e36bd918a664aa279125c1e07aa3b88ee75c04a",
      "parents": [
        "1f89f99dc6416d47b8f31ac4391a6ff837aefecd"
      ],
      "author": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Fri Oct 07 14:42:24 2016 -0400"
      },
      "committer": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Fri Oct 07 14:42:24 2016 -0400"
      },
      "message": "audio: better way to calculate buffer drain wait times.\n"
    },
    {
      "commit": "1f89f99dc6416d47b8f31ac4391a6ff837aefecd",
      "tree": "3442f7f99d280790cc302d87774b82322eca83ab",
      "parents": [
        "5f55a68020cb147faccbc3d0ab18e10e5ccfa53c"
      ],
      "author": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Fri Oct 07 14:35:25 2016 -0400"
      },
      "committer": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Fri Oct 07 14:35:25 2016 -0400"
      },
      "message": "audio: threading and device hang improvements.\n\nThis tries to make SDL robust against device drivers that have hung up,\napps don\u0027t freeze in catastrophic (but not necessarily uncommon) conditions.\n\nNow we detach the audio thread and let it clean up and don\u0027t care if it\nnever actually runs to completion.\n"
    },
    {
      "commit": "5f55a68020cb147faccbc3d0ab18e10e5ccfa53c",
      "tree": "4a44dbec8ff6f1d63e561ff6ddf3df869da88dbb",
      "parents": [
        "e7a1e998ad089846a509e157f61014d822d4bea7"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 11:18:55 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Fri Oct 07 11:18:55 2016 -0700"
      },
      "message": "Some systems include both \"default:\" and \"hw:\" for the same usb device\n"
    },
    {
      "commit": "e7a1e998ad089846a509e157f61014d822d4bea7",
      "tree": "0320234457ab1b6da7ccb59beeb5b0fdef916104",
      "parents": [
        "1b4d975cbfcc606c681cf434bf68e48621f161a1"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 06 06:08:16 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Thu Oct 06 06:08:16 2016 -0700"
      },
      "message": "fix for finding ALSA hotplug devices on Steam Link\n\nJames Zipperer\n\nThe device names show up as \"default:\", not \"hw:\"\n"
    },
    {
      "commit": "1b4d975cbfcc606c681cf434bf68e48621f161a1",
      "tree": "20ad75fa94ee4cd3bd18f7ad87f7a91af37e0bf7",
      "parents": [
        "6fa5241eaf0dbe2d24da9c2714f60d9c7f1b933b"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 05 00:12:16 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Wed Oct 05 00:12:16 2016 -0700"
      },
      "message": "Backed out a very unsafe change that was trying to prevent audio hang at quit.\n\nRyan and I have ideas on a better way to handle this.\n"
    },
    {
      "commit": "6fa5241eaf0dbe2d24da9c2714f60d9c7f1b933b",
      "tree": "f865a5547a46b44c3b2edbfa9c1e7c76c6a05843",
      "parents": [
        "836ba6964e0465e29274cbba040dd58ce94fcd50"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 06:48:07 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 06:48:07 2016 -0700"
      },
      "message": "ensure SDL_AUDIODEVICEREMOVED gets sent when hotplug removes a device\n\nJames Zipperer\n\nThe problem I was seeing was that the the ALSA hotplug thread would call SDL_RemoveAudioDevice, but my application code was not seeing an SDL_AUDIODEVICEREMOVED event to go along with it.   To fix it, I added some code into SDL_RemoveAudioDevice to call SDL_OpenedAudioDeviceDisconnected on the corresponding open audio device.  There didn\u0027t appear to be a way to cross reference the handle that SDL_RemoveAudioDevice gets and the SDL_AudioDevice pointer that SDL_OpenedAudioDeviceDisconnected needs, so I ended up adding a void *handle field to struct SDL_AudioDevice so that I could do the cross reference.\n\nIs there some other way beside adding a void *handle field to the struct to get the proper information for SDL_OpenedAudioDeviceDisconnected?\n"
    },
    {
      "commit": "836ba6964e0465e29274cbba040dd58ce94fcd50",
      "tree": "d474eea4c52e25c0bfe77b034d923491267d8e29",
      "parents": [
        "2e481560726e7c34a425ec6dcfcbe791a2e1fe38"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 06:46:46 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 06:46:46 2016 -0700"
      },
      "message": "fix deadlock on close device\n\nJames Zipperer\n\nsnd_pcm_drain doesn\u0027t always drain when you unplug a usb device.  Use snd_pcm_drop instead\n"
    },
    {
      "commit": "2e481560726e7c34a425ec6dcfcbe791a2e1fe38",
      "tree": "cb70e8bd84a74c6962548a5777a4710bc454410f",
      "parents": [
        "a90edd90a8f41a86c8cce45fa98147b28c1c2697"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 06:45:28 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 06:45:28 2016 -0700"
      },
      "message": "fix audio deadlock\n\nJames Zipperer\n\nClose the audio device before waiting for the audio thread to complete, which fixes a situation where the audio thread never completes\n\nAdd an additional check in the audio thread to see if the device is enabled and bail out if the device is no longer enabled\n"
    },
    {
      "commit": "a90edd90a8f41a86c8cce45fa98147b28c1c2697",
      "tree": "d433512b45cfbb8a18159928ccbc22298fb227a1",
      "parents": [
        "fb8d7b44472d0e3be78d4b50e4188e5332c0dd1f"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 04:08:02 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 04:08:02 2016 -0700"
      },
      "message": "Modified the custom cursor test to be able to load BMP files as cursors\n"
    },
    {
      "commit": "fb8d7b44472d0e3be78d4b50e4188e5332c0dd1f",
      "tree": "cecef3a3544f892b0510f7747a6e066fa320f86c",
      "parents": [
        "132c94dcf0ab1e7faca491350e61fbdfc17ab206"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 03:50:28 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 03:50:28 2016 -0700"
      },
      "message": "Fixed bug 3021 - HapticOpenFromJoystick() problems\n\nJoe Thompson\n\nWith Direct Input device (MOMO Steering Wheel w/FF)\nwith SDL 2.0.3,\nSDL_HapticOpenFromJoystick() would fail. (Can\u0027t set exclusive mode)\nNow with 2.0.4 rc1,\nSDL_HapticOpenFromJoystick() succeeds but the the returned SDL_Haptic* cannot be used. Calls to SDL_HapticNewEffect() fail with \"Haptic error Unable to create effect\"\n\nIf SDL_HapticOpen() is used instead of HapticOpenFromJoystick(), the device is usable. Calls to HapticNewEffect() succeed with the exact same parameters as the previous failing call.\n\nI have attached a proposed patch for this issue.\n\nWhen using SDL_HapticOpenFromJoystick(), the original code did not (re)enumerate the axes. This returned a new haptic device with 0 axes. Later, when a new effect is created, SDL_SYS_SetDirection() would set the flags to include DIEFF_SPHERICAL, regardless of what the caller actually set. (see Line 566 in SDL_dinputhaptic.c). This would cause the SDL_HapticNewEffect() to fail (or interpret the coordinates incorreclty.)\n\nThe patch moves the call to IDirectInputDevice8_EnumObjects() outside of the if() block so that the axes are (re)enumerated for the new haptic device.\n\nNote: For steering wheels it is common for the joystick to have multiple axes (ie steering, throttle, brake), but the haptic portion of the joystick usually only applies to steering.\n"
    },
    {
      "commit": "132c94dcf0ab1e7faca491350e61fbdfc17ab206",
      "tree": "f4e15e6927fbfc2a51b01a7568beb56b0d8ad73b",
      "parents": [
        "f05ce622abafcccf3e0dc41a6a86b30fe13ee8af"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 03:42:42 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 03:42:42 2016 -0700"
      },
      "message": "Fixed compiler warning about missing field initializers\n"
    },
    {
      "commit": "f05ce622abafcccf3e0dc41a6a86b30fe13ee8af",
      "tree": "e260da04868b85fba4c28d7781daa235dd9981d1",
      "parents": [
        "d2ce4f9fa7009d2766b3d585cab8d6c9c8cab4d1"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 03:38:39 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 03:38:39 2016 -0700"
      },
      "message": "Fixed compiler warning - this should have been a const char pointer\n"
    },
    {
      "commit": "d2ce4f9fa7009d2766b3d585cab8d6c9c8cab4d1",
      "tree": "9026587fa114d1a4056e0df4a50e807e943b2969",
      "parents": [
        "9f09fa4a563d9b2bba75d502b57bd1276d2f1f85"
      ],
      "author": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Tue Oct 04 14:25:31 2016 -0400"
      },
      "committer": {
        "name": "Ryan C. Gordon",
        "email": "icculus@icculus.org",
        "time": "Tue Oct 04 14:25:31 2016 -0400"
      },
      "message": "Fixed potential buffer overflow in SDL_vsnprintf() (thanks, Taylor!).\n\nFixes Bugzilla #3441.\n\n\"When using internal SDL_vsnprintf(), and source string length is greater\nthan destination, the final NULL char will be written beyond destination size.\n\nPrimary issue that is SDL_strlcpy returns length of source string\n(SDL_PrintString()), not how much is written to destination. The destination\nptr is then incremented by this length before the sanity check is done.\nDestination string is properly terminated, but an extra NULL char will be\nwritten beyond destination buffer length.\n\nPatch used internally is attached which fixes primary issue with SDL_strlcpy()\nin SDL_PrintString() and adjusts sanity checks to increment destination ptr\nsafely.\"\n"
    },
    {
      "commit": "9f09fa4a563d9b2bba75d502b57bd1276d2f1f85",
      "tree": "4dc03c018f9611106e8f1df194faae5567b0b9ab",
      "parents": [
        "f3e2e7ea7445cbe6c8e3b22c2d710d04bf99a230"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 02:11:52 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Tue Oct 04 02:11:52 2016 -0700"
      },
      "message": "Fixed bug 2157 - Caps Lock key produces key down \u0026 key up events while key is still pressed.\n\nTim McDaniel\n\nUsing checkkeys test app:\n* Press and hold Caps Lock key.\n* checkkeys reports a CapsLock key pressed event and a CapsLock key released event.\n* Release Caps Lock key.\n* checkkeys reports no further events.\n\nThis patch fixes OSX Caps Lock up/down event detection by installing a HID callback.\n"
    },
    {
      "commit": "f3e2e7ea7445cbe6c8e3b22c2d710d04bf99a230",
      "tree": "92573e9d7b1bbdc4ff6e038328c09662374421ad",
      "parents": [
        "4353669fa2af5f55ee2987e144d9acfb27590dda"
      ],
      "author": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 03 03:42:10 2016 -0700"
      },
      "committer": {
        "name": "Sam Lantinga",
        "email": "slouken@libsdl.org",
        "time": "Mon Oct 03 03:42:10 2016 -0700"
      },
      "message": "Fixed setting the version info in the shared library when using CMake\n\nRay Molenkamp\n\nWhen building sdl as shared lib, the version info is lacking in the final binary.\n\nCMake gathers the right resource files into ${VERSION_SOURCES} but then doesn\u0027t do anything with them.\n"
    },
    {
      "commit": "4353669fa2af5f55ee2987e144d9acfb27590dda",
      "tree": "245c2e16c6e204034cb2ae3c552549dc9b8da1e9",
      "parents": [
        "c2c66cd6fe016dd9bee6cb64ccafbb2a84161013"
      ],
      "author": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 02 22:32:50 2016 +0200"
      },
      "committer": {
        "name": "Philipp Wiesemann",
        "email": "philipp.wiesemann@arcor.de",
        "time": "Sun Oct 02 22:32:50 2016 +0200"
      },
      "message": "Android: Fixed compile error.\n"
    }
  ],
  "next": "c2c66cd6fe016dd9bee6cb64ccafbb2a84161013"
}
