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.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 Matthias)
- 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