This source is stable, and is fully tested on all supported platforms.
Please send bug reports or questions to the SDL mailing list:
http://www.libsdl.org/mailing-list.php
The latest stable release may be found on the SDL website.

## API Documentation

## Major changes since SDL 1.0.0:

- 1.2.7: Added a test program for dynamically loading OpenGL
- 1.2.7: Increased sensitivity of the Windows joystick driver
- 1.2.7: Added support for SDL_VIDEO_WINDOW_POS and SDL_VIDEO_CENTERED on Windows
- 1.2.7: Added fullscreen toggle support in testwm for Windows, etc.
- 1.2.7: Fixed mouse focus events after resetting video mode on Windows
- 1.2.7: Added colorkey blit tests to testvidinfo (thanks Mike!)
- 1.2.7: Added video hardware acceleration support on QNX (thanks Mike!)
- 1.2.7: SDL no longer sets a fatal signal handler for SIGPIPE
- 1.2.7: Fixed modifier key state on MacOS X (thanks Max!)
- 1.2.7: Added support for remote XVideo (thanks Frederic!)
- 1.2.7: Try to use higher refresh rate by default in DirectX driver (thanks Dmitry!)
- 1.2.7: Fixed static linking on MacOS X (thanks Max!)
- 1.2.7: Various Atari video driver improvements (thanks Patrice!)
- 1.2.7: Fixed compiling with broken Linux 2.6 headers
- 1.2.7: Fixed mouse cursor visibility and focus events on MacOS X (thanks Max!)
- 1.2.7: Added support for /dev/joy* on Free/Net/OpenBSD (thanks Christian!)
- 1.2.7: Fixed problems with CD-ROM audio playback on MacOS X 10.1
- 1.2.7: Added dynamic GL library loading to MacOS Carbon support (thanks Anders!)
- 1.2.7: Added the ability to hide the cursor in the DirectFB driver (thanks Pete!)
- 1.2.7: Added minor cleanup for Embedded Visual C++ 3.0 (thanks Andy!)
- 1.2.7: Fixed high CPU usage with ALSA audio driver (thanks Michel!)
- 1.2.7: Added function to create RWops from const memory: SDL_RWFromConstMem()
- 1.2.7: Fixed compiling with ALSA 1.0 (thanks Stephane!)
- 1.2.7: Added YUV overlay support on BeOS (thanks Andrew!)
- 1.2.7: Fixed build problems with newer versions of automake
- 1.2.7: Fixed MacOS X libtool framework support (thanks Max!)
- 1.2.7: Added CPU feature detection functions to SDL_cpuinfo.h
- 1.2.7: Fixed illegal instruction crash using 3DNow on Intel processors
- 1.2.7: Fixed asm issues with mmx.h and gcc 3.3 (thanks Stephane!)
- 1.2.7: Updated libtool support so Mingw32 builds work.
- 1.2.7: Disable screen saver in Windows DIB video driver
- 1.2.7: Added Atari CD-ROM support (thanks Patrice!)
- 1.2.7: Fixed crash calling app defined window proc (thanks Scott!)
- 1.2.7: Fixed long long constant warnings in GCC 3.3.1 (thanks Stephane!)
- 1.2.7: Added configure.in support for K*BSD (thanks Robert!)
- 1.2.7: Added QNX package and audio fixes (thanks Mike!)
- 1.2.7: Fixed joystick open problems on BSD (thanks SUGIMOTO!)
- 1.2.7: Fixed X11 mode line crash with only one video mode (thanks Alan!)
- 1.2.6: Fixed bugs in the Nano-X video driver
- 1.2.6: Fixed use of SDL with XInitThreads()
- 1.2.6: Added MMX and 3DNow! optimized alpha blitters (thanks Stephane!)
- 1.2.6: Turned dynamic loading of ESD and aRts on by default
- 1.2.6: Fixed fullscreen mouse click bug in Quartz events (thanks Max!)
- 1.2.6: Added an environment variable SDL_VIDEO_WINDOW_POS for MacOS X
- 1.2.6: Added SDL_GL_MULTISAMPLEBUFFERS and SDL_GL_MULTISAMPLESAMPLES for FSAA support (thanks Shawn and Ryan!)
- 1.2.6: Added audio and CD-ROM support for OSF/Tru64 (thanks Hayashi!)
- 1.2.6: Added SDL_LoadObject(), SDL_LoadFunction(), and SDL_UnloadObject()
- 1.2.6: Added new Atari audio drivers (thanks Patrice!)
- 1.2.6: Added more-than-three mouse button support for the Quartz target
- 1.2.6: Fixed compile problem in SDL_stretch.c with gcc 3.3
- 1.2.6: Added initial support for RISC OS (thanks Peter and Alan!)
- 1.2.6: Improved video mode selection under XFree86 (thanks Despair!)
- 1.2.6: Added support for HID sliders wheels and dials on MacOS X
- 1.2.6: Added m68k assembly routines for audio mixing (thanks Patrice!)
- 1.2.6: Updated FreeBSD joystick USBHID support (thanks Matthew!)
- 1.2.6: Fixed video intitialization problem on Qtopia (thanks David!)
- 1.2.6: Fixed refresh rate issue with XFree86 4.3.0 (thanks Stephen!)
- 1.2.6: Fixed lost cursor bug under MacOS X (thanks Darrell!)
- 1.2.6: Fixed crash in SDL_SetIcon() under Quartz (thanks Darrell!)
- 1.2.6: Darrell added support for emulated SDL_DOUBLEBUF on MacOSX
- 1.2.6: Cth converted the MMX audio mixing routines to VC++ syntax
- 1.2.6: David MacCormack fixed a bug in window sizing with Windows menus
- 1.2.6: Enable the glXGetProcAddressARB code on X11 (fixes NVidia issues)
- 1.2.6: Added support for SDL_WM_GrabInput and SDL_WM_IconifyWindow on Qtopia (thanks David!)
- 1.2.6: Almost completely rewritten and improved QNX code (thanks Mike and Julian!)
- 1.2.6: Fixed left/right shift detection on Windows (thanks Mike!)
- 1.2.6: Fixed invalid memory access in DGA video driver (thanks ldb!)
- 1.2.6: Generate an expose event on MacOS X after power save (thanks Darrell!)
- 1.2.6: Updated Atari port for new system headers (thanks Patrice!)
- 1.2.6: Linux joystick cleanups from Alan Swanson
- 1.2.6: *BSD joystick cleanups from Wilbern Cobb
- 1.2.6: Worked around Visual C++ 7 optimizer bug in blit code
- 1.2.6: Open ALSA devices in non-blocking mode (thanks Aleksey!)
- 1.2.6: Updated for DirectDB 0.9.15 (thanks Denis!)
- 1.2.6: Fixed building SDL DLL with Watcom C++ (thanks Jean-Pierre)
- 1.2.6: Support 1-bit alpha on surfaces passed to SDL_WM_SetIcon() (thanks Glenn!)
- 1.2.6: Greatly improved X11 DGA video speed (thanks Cezary!)
- 1.2.6: Added MMX audio mixing code for gcc (thanks Stephane!)
- 1.2.6: Fixed potential dropped events under DirectInput
- 1.2.6: Fixed alpha blending bug (thanks Glenn!)
- 1.2.6: Fixed joystick detection on Windows XP (thanks Maciej!)
- 1.2.6: Fixed a crash blitting RLE surfaces to RLE surfaces
- 1.2.6: Fixed mouse warp position bug with offset video modes
- 1.2.6: Fixed windows event handling for ActiveX controls
- 1.2.6: Added Visual C++ 7 (.NET) projects (thanks James!)
- 1.2.5: Added an environment variable SDL_HAS3BUTTONMOUSE for Quartz
- 1.2.5: Added initial support for Dreamcast (thanks HERO!)
- 1.2.5: Implemented resizing Cocoa windows (thanks Darrell!)
- 1.2.5: Updated Quartz video code for MacOS X 10.2 (thanks Darrell!)
- 1.2.5: Added an environment variable SDL_VIDEO_WINDOW_POS for X11
- 1.2.5: Fixed mouse focus problems caused by X11 'unclutter' hack
- 1.2.5: Applied John's fix for left-handed mice under Windows.
- 1.2.5: Gamepads and other HID devices should work under MacOS X
- 1.2.5: Fixed missing cursor after shadow buffer flip (thanks Jan!)
- 1.2.5: Updated MacOS projects with "enums as int" build option
- 1.2.5: Added -benchmark flag to testvidinfo for testing video speed
- 1.2.5: Added accelerated YUV code to DirectFB driver (thanks Denis!)
- 1.2.5: Command line apps on MacOS X go to forground (thanks Max!)
- 1.2.5: Fixed aRts runtime sound daemon detection
- 1.2.5: Improved the Nano-X video support (thanks Greg!)
- 1.2.5: Updated Borland projects for Kylix 3 (thanks Dominique)
- 1.2.5: Added compile-time checking for the size of enums
- 1.2.5: Fixed offset bug in hardware accelerated fills and blits
- 1.2.5: Fixed serious bugs in BSD HID joystick code (thanks Krister!)
- 1.2.5: Added project files for embedded Visual C++ 4.0
- 1.2.5: Added SDL_BUTTON_WHEELUP (4) and SDL_BUTTON_WHEELDOWN (5)
- 1.2.5: Added SDL_GL_STEREO for stereoscopic OpenGL contexts
- 1.2.5: Added the environment variable SDL_VIDEO_X11_WMCLASS
- 1.2.5: Fullscreen windows are always topmost in Windows
- 1.2.5: Fixed mouse grab going fullscreen to windowed in Windows
- 1.2.5: Fixed VidMode error when running on XFree86 3.3
- 1.2.5: Fixed Quartz mouse motion and window centering bugs
- 1.2.5: Updated configure.in for automake 1.6.2
- 1.2.5: Fixed building Windows DLL with latest native Cygwin tools
- 1.2.5: Added a way to get the Windows OpenGL context in SDL_syswm.h
- 1.2.5: Removed DDFLIP_WAIT flag from DirectX flip for performance
- 1.2.5: Zeroed SDL_Surface::unused1 so glSDL will work on stock SDL
- 1.2.5: Only modifier key state is noted when X11 window opens
- 1.2.5: Added initial support for PicoGUI (thanks Micah!)
- 1.2.5: Fixed SDL_DisplayFormatAlpha() on RGB surfaces with alpha
- 1.2.5: Added pthread detection for HP-UX 11.X
- 1.2.5: SDL_Init(SDL_INIT_JOYSTICK) on MacOS X works with no joystick
- 1.2.5: Fixed DirectX software surface memory leak
- 1.2.5: Fixed video initialization crash on Windows CE
- 1.2.5: Updated the QNX audio code for QNX 6.2 (thanks Travis!)
- 1.2.5: Fixed building with pthread and pth support on UNIX
- 1.2.5: Added detection of several joysticks to Linux code
- 1.2.5: Fixed thread detection and joystick code for NetBSD
- 1.2.5: Added support for audio in the Atari port (thanks Patrice!)
- 1.2.5: Added check for ENOMEDIUM to the Linux CDROM code
- 1.2.5: Added YUV hardware acceleration on MacOS X (thanks Darrell!)
- 1.2.5: Fixed building shared libraries on MacOS X (thanks Max!)
- 1.2.5: Use secondary audio buffers in DirectSound by default
- 1.2.5: Fixed window tab on Windows taskbar after application quit
- 1.2.5: Fixed setting OpenGL mode multiple times on Windows
- 1.2.5: Added Zaurus PDA (Qtopia) support by David Hedbor
- 1.2.5: Removed README.OpenBSD - SDL works out of the box on OpenBSD
- 1.2.5: Fixed crash in QZ_SetCaption() (thanks Darrell)
- 1.2.5: Updated ALSA audio support for ALSA 0.9
- 1.2.5: Don't build RPM archives with ALSA library dependencies
- 1.2.5: SDL_PollEvent()/SDL_WaitEvent() return values now match docs
- 1.2.4: Added initial support for Atari (thanks Patrice!)
- 1.2.4: Added support for building SDL for EPOC/SymbianOS 6.0
- 1.2.4: SDL now compiles and works cleanly on stock BSDI
- 1.2.4: Added support for joysticks on *BSD (thanks Wilbern!)
- 1.2.4: Added support for Xi Graphics XME fullscreen extension
- 1.2.4: Incorporated XFree86 extension libraries into the source
- 1.2.4: Dynamically load sound daemon audio drivers on UNIX
- 1.2.4: David Snopek added Borland compiler support
- 1.2.4: Updated for Watcom and LCC compilers (thanks Jean-Pierre)
- 1.2.4: Added a YUV overlay test program (thanks Jon!)
- 1.2.4: Fixed gamma ramps in DirectX windowed and OpenGL modes
- 1.2.4: John Popplewell fixed mousewheel support on Windows
- 1.2.4: Disabled QueryPerformanceCounter() due to problems on Win2K
- 1.2.4: Fixed Windows OpenGL mouse cursor/position mismatch bug
- 1.2.4: Fixed display settings with ALT-tab and OpenGL on Windows
- 1.2.4: Fixed timeout in Linux condition variable implementation
- 1.2.4: Fixed bug in joystick detection code under Linux
- 1.2.4: Fix crash with Linux supermount fstab entries (thanks Erno!)
- 1.2.4: Fixed X11 crash updating rectangles of zero height (thanks Mattias!)
- 1.2.4: Fixed spurious keypress at startup on BeOS
- 1.2.4: MacOS audio locking has been implemented by Ryan Gordon
- 1.2.4: Fixed "short jump out of range" error in MMX code (thanks Steven)
- 1.2.4: Specify the SDL API calling convention (C by default)
- 1.2.4: Updated autogen.sh for new versions of automake
- 1.2.4: Fixed SDL 1.1 RPM dependency problem (thanks Edward!)
- 1.2.3: Added X11 Xinerama support - fullscreen starts on screen 0
- 1.2.3: Added platform independent OpenGL header - SDL_opengl.h
- 1.2.3: Fixed flashing the screen when creating a window on BeOS
- 1.2.3: Added double-buffering support for SVGAlib (thanks Kutak!)
- 1.2.3: Fixed crash when using double-buffering with DGA
- 1.2.3: Fixed resuming a paused CD on Win2K (thanks Aragorn)
- 1.2.3: Improved MacOS international keyboard handling (thanks Max!)
- 1.2.3: Added support for the GNU Pth thread lib (thanks Mandin!)
- 1.2.3: Added the Undo key for the Atari keyboard (thanks Mandin!)
- 1.2.3: Fixed XVideo on GeForce by using last available adaptor
- 1.2.3: Added CD-ROM support for BSD/OS (thanks Steven!)
- 1.2.3: Added library version information to the Windows DLL
- 1.2.3: Added initial support for EPOC/Symbian OS (thanks Hannu!)
- 1.2.3: Added a joystick driver for MacOS X (thanks Max!)
- 1.2.3: Improved MacOS X international keyboard handling
- 1.2.3: Added support for DirectFB video on Linux (thanks Denis!)
- 1.2.3: Fixed IDE and SCSI CD-ROM detection on BeOS (thanks Caz!)
- 1.2.3: Fixed the system dependent SDL_WINDOWID hack on Windows
- 1.2.3: Added 640x480 as a scaled resolution for NTSC/PAL output
- 1.2.3: Added support for TV output on the Linux PlayStation Beta
- 1.2.3: Added initial NVidia acceleration on framebuffer console
- 1.2.3: Fixed audio format selection for OpenBSD (thanks Peter!)
- 1.2.2: Fixed crash when quitting fullscreen mode on MacOS X
- 1.2.2: Fixed fullscreen mouse events on MacOS X
- 1.2.2: Now returns an error if unable to open audio on BeOS
- 1.2.2: Fixed keyboard input translation on WinCE (thanks Rainer!)
- 1.2.2: Now gets correct keyboard state when starting up on X11
- 1.2.2: Improved the DGA 2.0 and framebuffer console drivers
- 1.2.2: Improved the OpenBSD port (native audio default, etc.)
- 1.2.2: Improved OSS audio driver support, thanks to 4Front Tech.
- 1.2.2: Improved X11 fullscreen support, works better with KDE
- 1.2.2: Improved SDL_GetTicks() resolution on W2K (thanks Holger!)
- 1.2.2: Added FreeBSD VGL video driver from FreeBSD ports
- 1.2.1: Added Linux PlayStation 2 Graphics Synthesizer support
- 1.2.1: Added an audio driver that writes to disk (thanks Ryan!)
- 1.2.1: Mouse wheel sends mouse button (4/5) events on Windows
- 1.2.1: Added MacOS X Project Builder projects (thanks Darrell!)
- 1.2.1: Added initial support for Quartz video (thanks Darrell!)
- 1.2.1: Disabled Linux /dev/event joystick interface by default
- 1.2.1: Added native OpenBSD audio driver (thanks vedge!)
- 1.2.1: Added detection of Open Sound System on Solaris x86
- 1.2.1: Added initial support for Nano-X (thanks Hsieh-Fu!)
- 1.2.1: Fixed endian detection on IA64 architectures (thanks Bill!)
- 1.2.1: Added --disable-dga configure option to disable DGA
- 1.2.1: Fixed stuck keys when changing the video mode
- 1.2.1: Fixed double-mouse event bug on Windows using OpenGL
- 1.2.1: Fixed 320x200 video mode on framebuffer console
- 1.2.1: Improved robustness for the ELO touchpad (thanks Alex!)
- 1.2.1: Added support for building under Cygwin on Windows
- 1.2.1: Added a dummy video driver for benchmarking (thanks Ryan!)
- 1.2.1: Fixed fullscreen cursor offset bug on BeOS
- 1.2.0: Added initial support for HP-UX (thanks Stephanie)
- 1.2.0: Added initial support for BSDI (thanks Kurt)
- 1.2.0: Fixed blitting 32-bit ARGB images to SDL_OPENGLBLIT screens
- 1.2.0: Fixed automake build dependencies (thanks Markus!)
- 1.2.0: Added 24 bpp support to software YUV display functions
- 1.2.0: Don't bomb trying to get DGA mouse on XFree86 4.0
- 1.2.0: Added initial support for OSF/Tru64 (thanks Anders)
- 1.1.8: Fixed joystick hat motion on MacOS
- 1.1.8: Don't detect mouse and keyboard as joystick on MacOS
- 1.1.8: Check for OpenGL 1.2 before using 16-bit SDL_OPENGLBLIT
- 1.1.8: Added support for /dev/sound/* in Linux 2.4
- 1.1.8: Fixed crash when blitting to RLE encoded surfaces
- 1.1.8: Fixed 8-bit audio on MacOS X
- 1.1.8: Fixed keyboard handling on MacOS X and MacOS classic
- 1.1.8: Fixed mouse cursor visibility when switching apps on MacOS
- 1.1.8: Implemented semaphore support on MacOS X
- 1.1.8: Worked around broken sem_getvalue() on MacOS X
- 1.1.8: Fixed 16-bit big-endian audio on MacOS X and MacOS classic
- 1.1.8: Fixed mutex locking on Linux glibc 2.0
- 1.1.8: SDL_Quit() removes the parachute signal handlers
- 1.1.8: Added NAS audio server support (thanks Erik!)
- 1.1.8: Added SDL_NOFRAME for frameless windows (thanks Andreas)
- 1.1.8: Added support for resizable windows on MacOS
- 1.1.8: Added a function to query the surface clip rectangle
- 1.1.8: Added a function to query the current event filter
- 1.1.8: The X11 XVideo adapter is now locked (thanks Jeffrey)
- 1.1.8: Improved the speed of fullscreen OpenGL on Windows
- 1.1.8: Added ELO touchscreen support for fbcon (thanks Alex)
- 1.1.8: Added accelerated MacOS X OpenGL support
- 1.1.8: Surface lock and unlock operations can now be nested
- 1.1.8: Optimized fillrect for PPC video memory (thanks Mattias)
- 1.1.8: Work around "blackout" problem with XVideo acceleration
- 1.1.8: Obtain correct key state on X11 focus (thanks Mattias)
- 1.1.8: Fixed keyboard handling on the framebuffer console
- 1.1.8: Added basic support for VGA16 framebuffer console
- 1.1.8: Open a new virtual terminal if possible on fbcon
- 1.1.8: Fixed default audio driver on FreeBSD (thanks Maxim)
- 1.1.8: Fixed joystick crash on Windows (thanks Pete)
- 1.1.7: Expanded documentation from the SDL Documentation Project
- 1.1.7: Report X11 client message events if SYSWMEVENTS enabled
- 1.1.7: Added support for a single hat on Windows joysticks
- 1.1.7: The gamma ramp routines now take arrays of Uint16 values
- 1.1.7: Added initial support for QNX RTP (thanks Patrick)
- 1.1.7: Added ALSA sound driver (thanks Patrick Trainor)
- 1.1.7: Added aRts UNIX sound driver (thanks Neil Stevens)
- 1.1.7: Get keyboard modifier state on input focus on Win32
- 1.1.7: SDL_ConvertSurface() now accepts SDL_RLEACCEL as a flag
- 1.1.7: Added initial UnixWare 7 support (thanks rr)
- 1.1.7: Added working YUY -> RGB conversion code (thanks Eugene)
- 1.1.7: Fixed video initialization crash on IRIX
- 1.1.7: Fixed MacOS fullscreen palette code (thanks Darrell)
- 1.1.7: Fixed background brush flicker on Win32 (thanks Gautier)
- 1.1.7: Fixed incorrect pitch when switching to window on Win32
- 1.1.7: Fixed memory leak when switching video modes on Win32
- 1.1.7: Init of fbcon shouldn't automatically set graphics mode
- 1.1.6: Allow SDL_VIDEO_INIT when built without thread support
- 1.1.6: Fixed palette problems with non-X11 fullscreen displays
- 1.1.6: Fixed Win32 crash with SDL_OPENGLBLIT and GL functions
- 1.1.6: Improved default MacOS millisecond time resolution
- 1.1.6: Fixed X11 overlapping endian blit bug (thanks Mattias)
- 1.1.6: Fixed starting directory on BeOS (thanks Samuel)
- 1.1.6: Integrated FreeBSD SVGAlib support (thanks folks)
- 1.1.6: Fixed middle-button handling on DirectInput
- 1.1.6: Added SDL_GetThreadID() to get a specific thread's ID
- 1.1.6: Worked around a crash in pthreads on RedHat 7
- 1.1.6: Fixed a brown-bag crash in clipping code
- 1.1.5: Convert from '/' to ':' opening files on MacOS
- 1.1.5: Clean up empty output files on Win32 and MacOS
- 1.1.5: Run command dialog if command key on startup on MacOS
- 1.1.5: Initial NetBSD support (thanks Krister Walfridsson)
- 1.1.5: Expanded the YUV overlay to handle odd (ATI) hardware
- 1.1.5: Fixed MacOS GL attribute selection (thanks Darrell)
- 1.1.5: Implemented gamma correction on 8-bit hardware displays
- 1.1.5: Performed logical/physical palette split (thanks Mattias)
- 1.1.5: Added initial MacOS X support (thanks Stan)
- 1.1.5: SDL_WarpMouse() now works on BeOS (thanks Christian)
- 1.1.5: Windows GDI driver now supports 565 modes (thanks Ben)
- 1.1.5: Correctly load OpenGL extensions on Win32 (thanks Beosil)
- 1.1.5: Fixed crash with some threaded audio drivers
- 1.1.5: Audio is now closed in SDL_Quit(), if necessary
- 1.1.5: Win32 version now uses MSVC multi-threaded DLL runtime
- 1.1.5: Replaced useless SDL_SetClipping() with SDL_SetClipRect()
- 1.1.5: Added a flag to YUV overlays to show hardware support
- 1.1.5: Added SDL_WasInit() to see what is currently initialized
- 1.1.5: YUV overlays can now be accelerated with DirectX
- 1.1.5: YUV overlays now have working pitch (thanks Vivien)
- 1.1.5: Prompt the user if MacOS mode change may damage hardware
- 1.1.5: Fixed DrawSprocket video mode lists and mode changes
- 1.1.5: Added DrawSprocket acceleration of colorkey blits
- 1.1.5: MacOS event handling is much more responsive by default
- 1.1.5: MacOS modifier keys now generate key events
- 1.1.5: Mattias Engdegård did the "Great Alpha Flip"
- 1.1.5: Added SDL_DisplayFormatAlpha() for fast alpha blits
- 1.1.5: Added SDL_MapRGBA() and SDL_GetRGBA() to handle alpha
- 1.1.5: SDL_SetAlpha() now accepts the SDL_RLEACCEL flag
- 1.1.5: Blit semantics involving alpha are now well defined
- 1.1.5: Added support for X11 DirectColor visuals for gamma API
- 1.1.5: Added initial AmigaOS support (thanks Gabriele Greco)
- 1.1.5: Added an initial gamma correction API (thanks Daniel)
- 1.1.5: Disable DGA mouse while X11 application is iconified
- 1.1.5: Allow 16-bit audio on Solaris (thanks Mattias)
- 1.1.5: Added RLE acceleration of alpha blits (thanks Mattias)
- 1.1.5: New documentation from the SDL Documentation Project
- 1.1.4: Work around window resize bug in KDE 1.2
- 1.1.4: Command-click is interpreted as right click on MacOS
- 1.1.4: Removed ESounD detection on Solaris
- 1.1.4: Updated to libtool 1.3.5 and latest config.guess
- 1.1.4: testgl now works on 8-bit displays under X11
- 1.1.4: SDL_WINDOWID hack now works with OpenGL on Linux
- 1.1.4: Builds correctly on UNIX without X11 installed
- 1.1.4: Fixed default GL driver loading on Win32
- 1.1.4: Implemented fullscreen toggle on BeOS (thanks David)
- 1.1.4: No longer use DirectDraw with OpenGL modes on Win32
- 1.1.4: Added support for 320x200x8 in SVGAlib (thanks Michele)
- 1.1.4: Implemented resizable windows on BeOS (thanks David)
- 1.1.4: RLE colorkey encoding reduces memory use (thanks Mattias)
- 1.1.4: The CD track length variable is now 32-bits (thanks Martin)
- 1.1.4: Fixed crashing bug in Win32 semaphores (thanks Markus)
- 1.1.4: Disabled aggresive gcc optimizations on X86
- 1.1.4: Added support for blitting with GL (thanks Daniel Vogel)
- 1.1.4: Improved the speed of the 16-bit colorkey copy blit
- 1.1.4: Fixed pthread condition variable timeout
- 1.1.3: Use timeGetTime() instead of GetTickCount() on Win32
- 1.1.3: Release mouse when popped out of fullscreen on X11
- 1.1.3: IRIX 6.5 and FreeBSD 4.0 are now officially supported
- 1.1.3: Added optimization flags when compiling on x86 with gcc
- 1.1.3: On BeOS, change to app directory when launched by Tracker
- 1.1.3: Hold the option key on launch to get dialog on MacOS
- 1.1.3: Added DrawSprockets on MacOS (thanks Darrell Walisser)
- 1.1.3: Added support for Linux 2.4 input interface (HID)
- 1.1.3: Fixed 24-bpp blits on big-endian systems (thanks Mattias)
- 1.1.3: Don't try to use DGA mouse support on XFree86 4.00
- 1.1.3: Don't create an X11 shared memory buffer for GL displays
- 1.1.3: Framebuffer console acceleration disabled (broken) on G200
- 1.1.3: Allow maximize on resizable Win32 surfaces (thanks Randi)
- 1.1.3: Much faster RLE colorkey blit (thanks Xark and Mattias)
- 1.1.3: Fixed some problems with iconification and focus in X11
- 1.1.3: Added IMPS/2 protocol support for framebuffer console
- 1.1.3: Added user-resizable video mode support
- 1.1.3: Added arbitrary scaling of YUV overlay surfaces
- 1.1.3: Added support for semaphores and condition variables
- 1.1.3: Added SDL_ASYNCBLIT flag for asynchronous video updates
- 1.1.3: Don't let the WM place window in X11 fullscreen mode
- 1.1.3: Unload GL library after X11 display has closed
- 1.1.3: Fixed X11 error when a clipped rectangle is updated
- 1.1.3: Fixed crash when surface memory can't be allocated
- 1.1.3: Added a check for DirectX 5 audio (thanks Markus)
- 1.1.3: Added inline MMX assembly for YUV -> RGB conversion
- 1.1.3: Fixed startup crash in X11_RefreshDisplay()
- 1.1.3: SDL_Init(SDL_INIT_AUDIO) no longer fails with no soundcard
- 1.1.3: Initial YUV video overlay support (supports XvImages)
- 1.1.3: Fixed BadMatch X11 error with GLX 1.3
- 1.1.3: Worked around incompatibilities with XFree86 4.0 vidmode
- 1.1.3: The audio Makefile no longer takes forever to create
- 1.1.3: The joystick hat positions changed to constants
- 1.1.3: Fixed overlapping copy blit with odd widths
- 1.1.3: Fix for SDL_WINDOWID crash contributed by Mattias
- 1.1.3: Speeded up 32-bit alpha channel blits by nearly 100%
- 1.1.3: Added experimental DGA 2.0 support (set SDL_VIDEODRIVER)
- 1.1.2: Fixed crash running on NT with a read-only filesystem
- 1.1.2: Re-use thread creation mutex on glibc-2.0 systems
- 1.1.2: SDL_WM_SetIcon() now uses icon colorkey if mask is NULL
- 1.1.2: Win32 relative mouse mode fixes (thanks Randi Relander)
- 1.1.2: Not being able to set audio frags is no longer fatal
- 1.1.2: Added support for multiple timers (thanks Stephane Peter)
- 1.1.2: Copy blits optimized using inline assembly on x86 Linux
- 1.1.2: Copy blit can now handle overlapping blits
- 1.1.2: Fixed GL direct rendering on Utah GLX (thanks John Fulmer)
- 1.1.2: Added unofficial support for AIX (thanks Carsten Griwodz)
- 1.1.2: Enabled X11 VidMode extension on remote displays
- 1.1.2: Load libGL.so.1 under X11 if an app isn't linked with GL
- 1.1.2: Don't restack windows in the X11 environment
- 1.1.2: Multiple X11 visual support (thanks Mattias Engdegård)
- 1.1.0: Internal event state is updated before filter is called
- 1.1.0: Worked around DGA mouse cursor bug in Voodoo X server
- 1.1.0: Added SDL OpenGL documentation (thanks Nicholas Vining)
- 1.1.0: Added AAlib video driver support (thanks Stephane Peter)
- 1.1.0: Added fullscreen support for Win32 GDI video driver
- 1.1.0: Added SDL_GetAudioState() to get current audio status
- 1.1.0: Added SDL_GetRelativeMouseState() to get relative motion
- 1.1.0: Added 32-bit PII MMX optimized blitters from Hermes
- 1.1.0: Added SDL_bool datatype for functions returning true/false
- 1.1.0: Improved alpha blend speed (thanks Alexandre Courbot)
- 1.1.0: Added function to queue events: SDL_PushEvent()
- 1.1.0: Added user-defined event type to SDL_Event structure
- 1.1.0: Added SDL_InitSubSystem() and SDL_QuitSubSystem()
- 1.1.0: Added BDirectWindow fullscreen support on BeOS
- 1.1.0: Added initial joystick support (Linux, Win32, BeOS, MacOS)
- 1.1.0: The timer now runs in a separate thread if possible
- 1.1.0: Added initial OpenGL support (Linux, Win32, BeOS, MacOS)
- 1.0.9: Avoid potential crash in Win32 mouse handling (thanks Cliff)
- 1.0.9: Fixed bug where /dev/dsp was incorrectly marked available
- 1.0.9: Fixed DirectX crash if video height is larger than width
- 1.0.9: Fixed win32 timer error message typo (thanks Martin Dvorak)
- 1.0.8: Fixed deadlock if SDL_LockAudio() called from audio thread
- 1.0.8: Fixed a race condition in thread creation
- 1.0.7: Added detection for Linux supermount CD-ROM drives
- 1.0.6: Added --static-libs option to sdl-config
- 1.0.6: Fixed a clipping bug in the RLE colorkey blitting
- 1.0.6: Mouse window manager routines implemented on MacOS
- 1.0.6: Fixed SDL_HWPALETTE in fullscreen X11 video driver
- 1.0.6: Improved relative mouse warping in X11 video driver
- 1.0.6: DGA mouse mode is now enabled by SDL_VIDEO_X11_DGAMOUSE
- 1.0.6: Grab input by default in fullscreen mode
- 1.0.6: Detect hanging (incorrectly configured) Linux soundcard
- 1.0.6: If ESPEAKER env variable is set, use ESD audio driver
- 1.0.5: Fixed audio structure alignment for packing compilers
- 1.0.5: Exposed SDL_AudioInit() and SDL_VideoInit()
- 1.0.5: Added SDL_WM_ToggleFullScreen(), implemented for X11
- 1.0.5: Removed ALT-Enter functionality - should be in apps
- 1.0.5: The DSP audio driver is used by default on Linux
- 1.0.4: Added optional DMA support for the Linux audio driver
- 1.0.4: Fixed CD-ROM opening on the iBook under MacOS
- 1.0.4: Fixed a crash in 8-bit mode when using X11 video
- 1.0.4: Initial audio support on MacOS (thanks Darrell Walisser)
- 1.0.4: The audio thread runs at high priority on Win32
- 1.0.4: ESD audio support is now a separate selectable driver
- 1.0.4: Initial OpenBSD support (thanks Federico Schwindt)
- 1.0.4: Fixed hang when closing audio on Windows 2000
- 1.0.4: Warn about monochrome X displays (thanks Christian Bauer)
- 1.0.4: Fixed spurious X11 mouse focus events at ALT-ENTER
- 1.0.4: Perform input ungrab at video quit, just in case
- 1.0.4: Corrected X11 depth reporting in SDL_VideoModeOK()
- 1.0.3: Disable mouse threshold when X11 mouse is in warp mode
- 1.0.3: Fixed black-screen on exit in fbcon video driver
- 1.0.3: Much improved console switching in fbcon video driver
- 1.0.3: Fixed X11 UNICODE translation bug (thanks Andreas Arens)
- 1.0.3: Fixed WaveOut mutex logic bug (thanks Markus Oberhum)
- 1.0.3: Use X11 mouse warping when cursor hidden and input grabbed
- 1.0.3: Doesn't try to use TrackMouseEvent() on Win95
- 1.0.3: DirectColor support in fbcon driver (thanks Adam Meyerowitz)
- 1.0.3: Fixed ALT-ENTER key state problem on X11
- 1.0.2: Fixed Win32 code to run on VMWare with DIB video driver
- 1.0.2: Added window manager function: SDL_WM_GrabInput()
- 1.0.2: Added window manager function: SDL_WM_IconifyWindow()
- 1.0.2: Added ALT-ENTER fullscreen toggle for X11 video driver
- 1.0.2: X11 fullscreen mode uses DGA mouse if cursor is hidden
- 1.0.2: New X11 fullscreen code doesn't require root
- 1.0.2: Mouse focus and position is now updated at video mode set
- 1.0.2: Mouse focus loss is now detected under Win32
- 1.0.2: Menubar hiding is more robust on MacOS (thanks Matt Slott)
- 1.0.2: Added CD-ROM support on MacOS (thanks Matt Slott)
- 1.0.2: Added non-root fullscreen modes under X11 (thanks Stephane)
- 1.0.2: Added docs for time functions (thanks Christian Biesinger)
- 1.0.2: Squeezed a little more speed out of blitters (Duff's device)
- 1.0.2: Added hardware acceleration for 3Dfx to fbcon driver.
- 1.0.2: Added hardware acceleration for Matrox to fbcon driver.
- 1.0.2: Windows mouse driver now recognizes the middle button.
- 1.0.2: X11 driver now recognizes the "unix:0" display as local.
- 1.0.2: Fixed a bug in DGA support which crashed some X servers.
- 1.0.2: Added GPM repeater support (gpm -R) to fbcon driver
- 1.0.2: Added support for hardware surfaces to fbcon driver
- 1.0.2: Implemented console switching in fbcon driver
- 1.0.2: Implemented graphics mode detection in fbcon driver
- 1.0.2: Added SDL_EnableKeyRepeat() (thanks Jim Kutter)
- 1.0.2: Enabled DirectSound on Windows 2000
- 1.0.1: Fixed the frame buffer video driver on LinuxPPC
- 1.0.1: Stopped using DirectSound on Windows NT.
- 1.0.1: Stopped using DirectX when DINPUT.DLL is not installed.
- 1.0.1: Added pthread detection to configure.in for FreeBSD.
- 1.0.1: Updated the Solaris audio code for the 1.0 API
- 1.0.1: Updated the MacOS code for the 1.0 internal API

## Major changes since SDL 0.10.0:

- 0.11.5: Fixed mouse warping in fullscreen mode
- 0.11.5: Added a new function SDL_GetVideoSurface()
- 0.11.5: Renamed SDL_AllocSurface() SDL_CreateRGBSurface()
- 0.11.5: Added a new function SDL_CreateRGBSurfaceFrom()
- 0.11.4: Added support for multiple compiled-in video drivers
- 0.11.3: Fixed 16 --> 32 bpp blitting - using C instead of Hermes.
- 0.11.3: Fixed double-buffering bug in the DirectX driver
- 0.11.3: Added GGI video driver (thanks Jon Taylor)
- 0.11.2: Added automake/aclocal/autoconf support
- 0.11.1: Added an initial (buggy) MacOS CD-ROM driver
- 0.11.1: Improved Linux CD-ROM detection
- 0.11.1: Added a workaround for DGA mouse bug on Voodoo 3
- 0.11.1: Fixed 24bpp --> 8bpp blit crash
- 0.11.1: Fixed a bug in blit mapping when palette changed
- 0.11.1: Added a Linux SBLive beta driver workaround
- 0.11.1: Fixed Win32 cross-compile problem with mingw32
- 0.11.1: Loss of keyboard focus now causes keys to be reset
- 0.11.1: DGA DirectMouse is conditionally compiled (default off)

## Major changes since SDL 0.8.0:

- 0.9.16: Made SDL error messages thread-safe
- 0.9.15: If you have r/w access to /dev/mem, DGA works on Linux
- 0.9.15: Added support for Linux on the ARM (Netwinder)
- 0.9.14: Removed color cursor support, fixed b/w cursors
- 0.9.14: Fixed long-standing X11 DGA colormap problem
- 0.9.13: Added dynamic load function: SDL_SetLibraryPath()
- 0.9.13: Added unofficial support for MacOS
- 0.9.13: Added unofficial support for FreeBSD
- 0.9.13: Added unofficial support for IRIX
- 0.9.13: Updated support for BeOS from R3 to R4.5
- 0.9.13: Added SDL_SetLibraryPath() function (thanks Karsten Laux)
- 0.9.13: Fixed 8-bit audio conversion when using SDL_MixAudio()
- 0.9.13: Fixed audio thread lingering when app dies on Linux
- 0.9.13: Fixed color problem in X display to other-endian systems
- 0.9.13: Finally able to detect X11 key repeat (thanks GII team!)
- 0.9.13: Added support for Visual C++ 5.0 development environment
- 0.9.13: Added support for Linux on the Alpha
- 0.9.13: Added support for international keyboards (see WhatsNew)
- 0.9.12: Added support for loading IMA ADPCM compressed WAV files
- 0.9.12: Fixed bug when mixing 8-bit audio in SDL_MixAudio()
- 0.9.12: Added Enlightenment Sound Daemon audio support on Linux
- 0.9.12: Added MTRR support for Linux/X11 (thanks David Barth)
- 0.9.12: Added support for LinuxPPC 5.0
- 0.9.12: Fixed place where some audio conversions aren't detected
- 0.9.12: Fixed serious bug in installation script
- 0.9.12: Added SDL_FreeWAV() function for freeing DLL memory
- 0.9.12: Fixed potential memory leak in SDL_LoadWAV_RW()
- 0.9.11: Freeing video surface has no longer crashes SDL_Quit()
- 0.9.11: Included new asm blitters from Hermes library 1.2.4
- 0.9.11: SDL_WaitThread() now gets the thread's return status
- 0.9.11: SDL_MixAudio() takes a larger volume range (0-128)
- 0.9.11: SDL no longer changes the X11 keyboard repeat
- 0.9.11: Added a data source abstraction for loading/saving data
- 0.9.11: Added three built in data abstractions:
  SDL_RWFromFile(), SDL_RWFromFP(), SDL_RWFromMem()
- 0.9.11: Added stdio-like functions for using data sources:
  SDL_RWseek(), SDL_RWread(), SDL_RWwrite(), SDL_RWclose()
- 0.9.11: Replaced SDL_CalculateEndian() with SDL_BYTEORDER macro
- 0.9.11: Endian swapping functions are now macros, for speed.
- 0.9.11: Endian read/write functions now use data sources
- 0.9.11: Added function SDL_LoadWAV_RW() for data sources
- 0.9.11: Added function SDL_LoadBMP_RW() for data sources
- 0.9.11: Added function SDL_SaveBMP_RW() for data sources
- 0.9.10: Mixer no longer fails if timidity isn't installed
- 0.9.10: Mixer restarts MOD files on play (thanks Bill Kendrick)
- 0.9.10: Fixed occasional crashing of the mixer library
- 0.9.10: Fixed icon display on Afterstep under Linux
- 0.9.10: Fixed occasional crash in mixer example
- 0.9.10: Linux cdrom list now comes from /etc/fstab
- 0.9.10: Fixed support for UK keyboard (thanks John Elliott)
- 0.9.10: The event queue is now thread-safe
- 0.9.10: Added event queue pump function: SDL_PumpEvents()
- 0.9.10: Added low level event function: SDL_PeepEvents()
- 0.9.10: Added a new thread function: SDL_ThreadID()
- 0.9.10: Fixed an audio rate conversion memory overrun
- 0.9.10: Fixed crash with RLE acceleration on big surfaces
- 0.9.10: Improved MacOS display driver - added fullscreen
- 0.9.10: Removed spurious warnings from Linux X11 driver
- 0.9.10: Fixed memory leak in SDL_InvalidateMap()
- 0.9.10: Fixed right button of 2-button mice on Win32
- 0.9.10: Enabled XFree86 mode changes on older servers
- 0.9.9: SDL_LoadBMP() handles BMP files created with GIMP
- 0.9.9: SDL_LoadWAV() handles WAV files with "LIST" chunks
- 0.9.9: Fixed problem with audio underflow on Solaris
- 0.9.9: Initial support for 4-speaker audio output devices
- 0.9.8: Fixed corrupt VC++ 5.0 desktop file
- 0.9.8: Now detects fixed version of Metro-X X11 server
- 0.9.8: Fixed XFree86 DGA banked mode update
- 0.9.8: Fixed mouse press viewport shift on XFree86 DGA
- 0.9.7: Fixed problem with displaying remotely via X11
- 0.9.7: Win32 uses software cursor when fullscreen
- 0.9.7: Win32 mouse uses DirectInput when fullscreen
- 0.9.7: Added OpenGL software rendering via Mesa (demos archive)
- 0.9.7: Fixed memory leak in ADPCM WAV decoding
- 0.9.6: Added CD-ROM audio API documentation
- 0.9.6: Fixed potential BeOS audio-related crash
- 0.9.6: Fixed crash when resetting the video mode in DirectX
- 0.9.6: Fixed errors compiling with the SparcWorks compiler
- 0.9.6: Replaced SDL_GetDisplayFormat() with SDL_GetVideoInfo()
- 0.9.6: Added a new fast fill function: SDL_FillRect()
- 0.9.6: Added blit acceleration flags to SDL_AllocSurface()
- 0.9.6: Added new double-buffering function: SDL_Flip()
- 0.9.6: Fixed problem with buggy Metro-X X11 server
- 0.9.6: Fixed 8-bit audio on Solaris with dbri hardware
- 0.9.6: Fixed alarm clock problem with Solaris pthreads
- 0.9.6: Fixed BeOS compilation problem
- 0.9.5: Added tools to create Win32 icons in directx/icon/
- 0.9.5: You can now pass a NULL mask to SDL_WM_SetIcon()
- 0.9.5: Added support files for compiling with VC++ 5.0
- 0.9.5: Fixed icon color bug under Win32
- 0.9.5: Re-added SDL_LowerBlit() - not safe for use on display
- 0.9.5: Fixed 0.9.x cursor blit deadlock
- 0.9.5: Added SDL_FPLoadWAV(), SDL_FPLoadBMP(), SDL_FPSaveBMP()
- 0.9.5: Added Linux, Win32, and BeOS CD audio support
- 0.9.5: MMX accelerated blit disabled -- temporarily broken
- 0.9.4: Fixed endianness issue with BeOS x86 blitting
- 0.9.4: Fixed quit interrupt delivery on BeOS
- 0.9.4: Fixed dynamic loading on BeOS
- 0.9.4: Fixed DirectX audio on Win98
- 0.9.4: Fixed possible sound-related crash on Linux PPC
- 0.9.3: Mouse motion arrives as absolute and relative coordinates
- 0.9.3: Fixed Visual C++ structure packing
- 0.9.3: Fixed UNIX dynamic link library installation
- 0.9.2: DirectX audio no longer hangs when app loses focus
- 0.9.2: Fixed DirectX HiColor crash (palette bug)
- 0.9.1: Fixed DirectX <ALT> key handling
- 0.9.1: Fixed DirectX windowed palette problems
- 0.9.1: Removed SDL_MapSurface() and SDL_UnmapSurface()
- 0.9.0: Initial port to IRIX 6.x
- 0.9.0: Initial port to OSF/1 3.2 (no sound yet)
- 0.9.0: MacOS port in progress

## Major changes since SDL 0.7:

- Separated the demos and examples into a separate archive
- Added support for loading Microsoft compressed WAV files
- Added "soft" application crash recovery (signal handlers)
- Fixed POSIX signal handling interaction with threads
- Fixed audio output on MKLinux
- Added dynamic library version checking
- Updated for DirectX 6.0
- Cleaned up dynamic linking and added static linking
- Added automatic audio format and rate conversion
- Optimized some blitter cases (8 --> 16/32 and 32 --> 16/8)
- Removed precalculated alpha blending acceleration
- Key and mouse button events are split into up/down events
- It is now much easier to set an optimal video mode

## Major changes since SDL 0.5:

- Ported to Solaris 2.6
- Added XFree86 Direct Graphic Access support
- Supports LinuxPPC without threads
- Completely rewritten video/surface API -- see SDL_video.h
- Completely rewritten event API
- Optimized black-white cursor creation
- Added support for run-length-encoded colorkeying
- Added support for hardware accelerated blits
- Added support for blitting from 1-bit surfaces (bitmaps)
- Added a function to simplify setting video modes
- Added support for loading WAV files
- Added endian swapping functions for memory values
- Added alpha blending using alpha value or channel
- Added precalculated alpha blending acceleration
- Added function to return current time in milliseconds
- New event type SDL_ACTIVEEVENT, to detect iconification
- New event type SDL_SYSWMEVENT, for custom window hooks
- Added a platform dependent function to get window handle
- Added a function to check the run-time version of SDL
- Added periodic timer support at 10 ms resolution
- Added support for the SDL_DEBUG environment variable
- Miscellaneous internal cleanups

## Major changes since SDL 0.4:

- SDL library code is now dynamically loaded
- Added support for pthreads (Linux glibc2)
- Removed SDL_mutexN() and SDL_mutexIncr()

## Major changes since SDL 0.3:

- Added support for DirectX 5.0
- Added support for surfaces in video memory
- Added support for source color-key blitting
- Added support for single-rectangle clipping
- Added support for warping (moving) the cursor
- Added support for color cursors
- Greatly simplified internal event queue
- Minor bug-fixes