This source is in development. It may contain API changes, and may not be fully tested on all supported platforms. The current stable release may be found at the main SDL page.

## API Documentation

## Major changes since SDL 1.0.0:

- 1.2.3: Added initial support for EPOC/Symbian OS (thanks Hannu!)
- 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