Allegro changelog for 4.9.x series
**********************************

See `changes._tx' for changes in earlier versions of Allegro. These
lists serve as summaries; the full histories are in the Subversion
repository.

Changes from 4.9.10 to 4.9.10.1 (May 2009)
******************************************

   * Fixed uses of snprintf on MSVC.

   * Disabled ex_curl on Windows as it requires Winsock.


Changes from 4.9.9.1 to 4.9.10 (May 2009)
*****************************************

The main developers this time were: Trent Gamblin, Evert Glebbeek,
Milan Mimica, Elias Pschernig, Peter Wang. Other contributions from:
Peter Hull, Paul Suntsov.

Graphics:

   * Renamed al_clear() to al_clear_to_color().

   * Renamed al_opengl_version() to al_get_opengl_version().

   * Changed the direction of rotation for al_draw_rotated* from
     counter-clockwise to clockwise.

   * Added new pixel format ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE which
     guanrantees component ordering.

   * Added ALLEGRO_NO_PRESERVE_TEXTURE flag.

   * Fixed horizontal flipping in plain software blitting routines.

   * Fixed some blending bugs in the OpenGL driver.

   * Made OpenGL driver fall back to software rendering if separate
     alpha blending is requested but not supported.

   * Added a config option which allows pretending a lower OpenGL
     version.

   * Implemented al_get_num_display_formats(),
     al_get_display_format_option() and al_set_new_display_format() for
     WGL.

   * Fixed bug in al_get_display_format_option() with the GLX driver.

   * Fixed a bug in the D3D driver that made display creation crash if
     the first scored mode failed.

   * Made the OpenGL driver prefer the backbuffer format for new
     bitmaps.

   * Defer FBO creation to when first setting a bitmap as target bitmap.


Input:

   * Renamed some joystick functions.

   * Account for caps lock state in OS X keyboard driver.

   * Made UTF-8 input work on X11.


File I/O:

   * Separated part of fshook API into a distinct file I/O API
     (actually generic streams).

   * Make the file I/O API match stdio more closely and account for
     corner cases. (incomplete)

   * Made it possible to set a stream vtable on a per-thread basis,
     which affects al_fopen() for that thread.

   * Added al_fget_ustr() to read a line conveniently.

   * Change al_fputs() not to do its own CR insertion.

   * Add al_fopen_fd() to create an ALLEGRO_FILE from an existing file
     descriptor.


Filesystem:

   * Changed al_getcwd, al_get_entry_name to return ALLEGRO_PATHs.

   * Renamed al_get_path to al_get_standard_path, and to return an
     ALLEGRO_PATH.

   * Changed al_readdir to return an ALLEGRO_FS_ENTRY.

   * Added al_path_create_dir.

   * Removed some filesystem querying functions which take string paths
     (ALLEGRO_FS_ENTRY versions will do).


Config routines:

   * Added functions to traverse configurations structures.

   * Change al_save_config_file() return type to bool.

   * Removed an arbitrary limit on the length of config values.

   * Renamed configuration files to allegro5.cfg and allegro5rc.


String routines:

   * Allegro 4-era string routines removed.

   * Added al_ustr_to_buffer().


Other core:

   * Renamed al_thread_should_stop to al_get_thread_should_stop.

   * Added a new internal logging mechanism with configurable debug
     "channels", verbosity levels and output formatting.

   * Cleaned up ASSERT namespace pollution.


Font addons:

   * Renamed font and TTF addon functions to conform to conventions.

   * Added al_init_ttf_addon.

   * Implemented slightly nicer text drawing API:

   * functions are called "draw_text" instead of "textout"

   * centre/right alignment handled by a flag instead of functions

   * functions accepting ALLEGRO_USTR arguments provided

   * substring support is removed so 'count' arguments not needed in
     usual case, however ALLEGRO_USTR functions provide similar thing.

   * Removed al_font_is_compatible_font.

   * Sped up al_grab_font_from_bitmap() by five times.

   * ttf: Fixed a possible bug with kerning of unicode code points >
     127.


Image I/O addon:

   * Renamed everything in the IIO addon.

   * Exposed al_load_bmp/al_save_bmp etc.


Audio addon:

   * Renamed al_mixer_set_postprocess_callback.

   * Added two config options to OSS driver.

   * Made ALSA read config settings from [alsa] section.


Native dialogs:

   * Added al_show_native_message_box() which works like
     allegro_message() in A4. Implemented for GTK and OS X.

PhysicsFS addon:

   * Added PhysicsFS addon.

Primitives addon:

   * Removed global state flags.

   * Removed normals from ALLEGRO_VERTEX.

   * Removed read/write flags from vertex buffers.


Examples:

   * Added an example that tests al_get_display_format_option().

   * Added an example which shows playing a sample directly to a voice.

   * Added an example for PhysicsFS addon.

   * Added a (silly) example that loads an image off the network using
     libcurl.

   * Added ex_dir which demonstrates the use of al_readdir and
     al_get_entry_name.


Other:

   * Many bug and documentation fixes.

Changes from 4.9.9 to 4.9.9.1 (March 2009)
******************************************

   * Made it compile and work with MSVC and MinGW 3.4.5.

   * Enabled SSE instruction set in MSVC.

   * Fixed X11 XIM keyboard input (partially?).

   * Fall back on the reference (software) rasterizer in D3D.


Changes from 4.9.8 to 4.9.9 (March 2009)
****************************************

The main developers this time were: Trent Gamblin, Evert Glebbeek,
Milan Mimica, Elias Pschernig, Paul Suntsov, Peter Wang. Other
contributions from: Todd Cope, Angelo Mottola, Trezker.

Graphics:

   * Added display options API and scoring, based on AllegroGL, for
     finer control over display creation.

   * Added API to query possible display formats (implemented on X, Mac
     OS X).

   * Changed the bitmap locking mechanism. The caller can choose a
     pixel format.

   * Added support for multisampling.

   * Simplified the semantics of al_update_display_region().

   * Optimised software blitting routines.

   * Optimised al_map_rgb/al_map_rgba.

   * Replaced al_draw_rectangle() and al_draw_line() from core library
     with al_draw_rectangle_ex() and al_draw_line_ex() from the
     primitives addon.

   * Implemented al_wait_for_vsync() everywhere except WGL.

   * Fixed problems with sub-bitmaps with the OpenGL driver.

   * Fixed bugs in software scaled/rotated blit routines.

   * Added a new pixel format ALLEGRO_PIXEL_FORMAT_ABGR_F32. Removed
     ALLEGRO_PIXEL_FORMAT_ANY_15_WITH_ALPHA,
     ALLEGRO_PIXEL_FORMAT_ANY_24_WITH_ALPHA.

   * Added support for creating OpenGL 3.0 contexts (untested; only
     WGL/GLX for now). Relevant display flags are ALLEGRO_OPENGL_3_0
     and ALLEGRO_OPENGL_FORWARD_COMPATIBLE.

   * Allow disabling any OpenGL extensions from allegro.cfg to test
     alternative rendering paths.

   * Fixed problem with windows only activating on title bar clicks
     (Windows).

   * Fixed a minimize/restore bug in D3D (with the help of Christopher
     Bludau).


Input:

   * Implemented al_set_mouse_xy under X11.

   * Added ALLEGRO_EVENT_MOUSE_WARPED event for al_set_mouse_xy().


Path routines:

   * Made al_path_get_drive/filename return the empty string instead of
     NULL if the drive or filename is missing.

   * Changed al_path_set_extension/al_path_get_extension to include the
     leading dot.

   * Made al_path_get_extension(), al_path_get_basename(),
     al_path_to_string() return pointers to internal strings.


Unicode:

   * Changed type of ALLEGRO_USTR; now you should use pointers to
     ALLEGRO_USTRs.

   * Added UTF-16 conversion routines.


Other core:

   * Added ALLEGRO_GET_EVENT_TYPE for constructing integers for event
     type IDs.

   * Renamed configuration function names to conform to conventions.

   * Removed public MIN/MAX/ABS/MID/SGN/CLAMP/TRUE/FALSE macros.

   * Replaced AL_PI by ALLEGRO_PI and documented it as part of public
     API.


Audio addons:

   * Added stream seeking and stream start/end loop points.

   * Add panning support for kcm_audio (stereo only).


Font addons:

   * Made al_font_grab_font_from_bitmap() accept code point ranges.

   * Made font routines use new UTF-8 routines; lifted some arbitrary
     limits.

   * Fixed artefacts in bitmap font and TTF rendering.


Image I/O addon:

   * Made the capability to load/save images from/to ALLEGRO_FS_ENTRYs
     public.

   * Added missing locking to .png save function.


Other addons:

   * Added native_dialog addon, with file selector dialogs.

   * Fixed many bugs in the primitives addon.

   * Made hsv/hsl color functions accept angles outside the 0..360°
     range.

   * Fixed a bug in al_color_name_to_rgb.


Examples:

   * New programs: ex_audio_props, ex_blend_bench, ex_blend_test,
     ex_blit, ex_clip, ex_draw, ex_font_justify, ex_gl_depth, ex_logo,
     ex_multisample, ex_native_filechooser, ex_path_test, ex_rotate,
     ex_stream_seek, ex_vsync, ex_warp_mouse. (ex_draw demonstrated
     known bugs currently.)

   * Updated programs: ex_joystick_events, ex_monitorinfo
     ex_pixelformat, ex_scale, ex_subbitmap.


Build system:

   * Added pkg-config support. .pc files are generated and installed on
     Unix.

   * Allowed gcc to generate SSE instructions on x86 by default. For
     Pentium 2 (or lower) compatibility you must uncheck a CMake option
     before building Allegro.


Other:

   * Many other bug fixes.

Changes from 4.9.7.1 to 4.9.8 (February 2009)
*********************************************

The main developers this time were: Thomas Fjellstrom, Trent Gamblin,
Evert Glebbeek, Matthew Leverton, Milan Mimica, Elias Pschernig, Paul
Suntsov, Peter Wang.

General:

   * Lots of bug fixes.

File system hooks:

   * Rationalised file system hook functions. Failure reasons can be
     retrieved with al_get_errno().

   * Enable large file support on 32-bit systems.

   * Converted the library and addons to use file system hook functions.


Path functions:

   * Added al_path_clone(), al_path_make_canonical(),
     al_path_make_absolute(), al_path_set_extension(),
     al_{get,set}_orgname, al_{get,set}_appname} functions.

   * Made al_path_get_extension() not include the leading "." of the
     extension,

   * Add AL_EXENAME_PATH, AL_USER_SETTINGS_PATH,
     AL_SYSTEM_SETTINGS_PATH enums for al_get_path().


String routines:

   * Added a new, dynamically allocating UTF-8 string API. This uses
     bstrlib internally, which is distributed under a BSD licence.
     Allegro 5 will expect all strings to be either ASCII compatible,
     or in UTF-8 encoding.

   * Removed many old Unicode string functions. (Eventually they will
     all be removed.)


Config routines:

   * Clarified behaviour of al_config_add_comment, al_config_set_value
     with regards to whitespace and leading comment marks.

Graphics:

   * Bug fixes on Windows and Mac OS X for resizing, switching away,
     setting full screens, multi-monitor, etc.

   * Added an al_get_opengl_texture() convenience function.

   * Added separate alpha blending.

   * Added ALLEGRO_PIXEL_FORMAT_ANY.

   * Honour al_set_new_window_position() in X11 port.

   * Made the X11 port fail to set a full screen mode if the requested
     resolution cannot be set rather than falling back to a windowed
     mode.


Input:

   * Added a field to the mouse state struct to indicate the display
     the mouse is currently on.

   * Made DirectX enumerate all joysticks/gamepads properly by using a
     device type new to DirectInput 8.

   * Fixed a bug in wmouse.c where y was not changed in al_set_mouse_xy.

   * Support ALLEGRO_EVENT_MOUSE_ENTER/LEAVE_DISPLAY events in Windows.


Addons:

   * Added a primitives addon.

   * Revamp interface for kcm_audio addon to make simple cases easier.

   * Added native .wav support and save sample routines to acodec addon.

   * Added a colors addon.

   * Added memory file addon and example.


TTF addon:

   * Added al_ttf_get_text_dimensions() function.

   * Allow specifying the font size more precisely by passing a
     negative font size.

   * Guess the filenames of kerning info for Type1 fonts.


Documentation:

   * Added a new documentation system using Pandoc. Now we can generate
     HTML, man, Info and PDF formats.

   * Added and fixed lots of documentation.


Examples:

   * Added ex_prim, ex_mouse_focus examples.

   * Made ex_blend2 more comprehensive.

   * Updated ex_get_path example.

   * Made ex_ttf accept the TTF file name on the command line.


Build system:

   * Use official CMAKE_BUILD_TYPE method of selecting which build
     configuration. This should work better for non-make builds,
     however, it's no longer possible to build multiple configurations
     with a single configuration step as we could previously.

Removals:

   * Remove outdated A4 tools.

   * Remove icodec addon.

   * SCons build was unmaintained and not working.


Changes from 4.9.7 to 4.9.7.1 (December 2008)
*********************************************

   * Scan aintern_dtor.h for export symbols, needed for MSVC.

Changes from 4.9.6 to 4.9.7 (December 2008)
*******************************************

The main developers this time were: Trent Gamblin, Evert Glebbeek,
Peter Hull, Milan Mimica, Peter Wang.

Graphics:

   * Fixed a bug where the "display" field of a bitmap was not
     correctly reset when it was transfered to another display on OS X.

   * Made al_create_display() respect al_set_new_window_position() on
     OS X.

   * Fixed the bug that caused input focus to be lost in OS X when a
     window was resized.

   * Made resizable Allegro windows respond properly to the green "+"
     button at the top of the screen on OS X.

   * Properly implemented fullscreen resize in WGL.

   * Made the memory blenders work the same as the hardware ones.

   * Made al_get_pixel()/al_draw_pixel() handle sub bitmaps in case the
     bitmap was locked.

   * In the OpenGL driver, if the bitmap is locked by the user, use
     memory drawing on the locked region.

   * Added implementations of al_inhibit_screensaver() for the X and
     Mac OS X ports.

   * Added multi-monitor support to Mac OS X port (untested!).

   * Other fixes.


Input:

   * Made al_get_keyboard_state() return structures with the `display'
     field correctly set.

   * Made keyboard event member 'unichar' uppercase when Shift/CapsLock
     is on, in Windows.

   * Made mouse cursor show/hide work with Mac OS X full screen.


Config routines:

   * Preserve comment and empty lines in config files when writing.

Addons:

   * Add a simple interface layer for kcm_audio.

   * Made kcm_audio objects automatically be destroyed when it is shut
     down.

   * Renamed functions in kcm_audio to conform better with the rest of
     the library.

   * Made the TTF addon aggregate glyph cache bitmaps into larger
     bitmaps for faster glyph rendering (less source bitmap switching).


Examples:

   * Add an example to test the ALLEGRO_KEYBOARD_STATE `display' field.

   * Add an example for testing config routines.

   * Add an example for checking software blending routines against
     hardware blending.

   * Add an example for the simple interface for kcm_audio.


Changes from 4.9.5 to 4.9.6 (November 2008)
*******************************************

The core developers this time were: Thomas Fjellstrom, Trent Gamblin,
Evert Glebbeek, Peter Hull, Milan Mimica, Jon Rafkind, Peter Wang.

Allegro 4.9.6 and onwards are licensed under the zlib licence (see
LICENSE.txt). This is a simple permissive free software licence, close
in spirit to the 'giftware' licence, but is clearer and more well-known.

General:

   * Added filesystem hook (fshook) and path API functions.

   * Many minor bug fixes.


Graphics:

   * Added allegro5/a5_opengl.h, which has to be included by programs
     to use OpenGL specifics. ALLEGRO_EXCLUDE_GLX and
     ALLEGRO_EXCLUDE_WGL can be #defined to exclude GLX and WGL OpenGL
     extensions respectively.

   * Added allegro/a5_direct3d.h, which has to be included by programs
     to use D3D specifics.

   * Fixed some drawing from and onto sub-bitmaps.

   * Fixed blending with the wrong color in case of sub-bitmaps.

   * Fixed a bug in the D3D driver where the transformation matrix was
     not reset after drawing a bitmap.

   * Added draw pixel to OpenGL driver.

   * Added more OpenGL extensions.

   * Added function to inhibit screen saver (currently Windows only).


Config routines:

   * Added al_config_create().

   * Deleted al_config_set_global(). Made empty section name equivalent
     to the global section.

   * Read system wide and home directory config files on Unix (Ryan
     Patterson).


Events:

   * Added support for injecting user-defined events into event queues.

Audio addon:

   * Made the ALSA driver read the device name from the config file
     (Ryan Patterson).

Examples:

   * Added ex_subbitmap example.

   * Added ex_disable_screensaver example.


Build system:

   * Rationalised library names and made CMake and SCons build systems
     agree on the names.

Changes from 4.9.4 to 4.9.5 (October 2008)
******************************************

The core developers this time were: Trent Gamblin, Evert Glebbeek,
Peter Hull, Milan Mimica, Elias Pschernig, Jon Rafkind, Peter Wang.

Graphics:

   * Added fullscreen support on Mac OS X.

   * Added support for resizable windows on Mac OS X.

   * Made frameless windows respond to events on Mac OS X.

   * Fixed a problem with D3D blending.

   * Made D3D driver work on systems without hardware vertex processing.

   * Made WGL driver fail more gracefully.

   * Implemented sprite flipping for OpenGL drivers (Steven Wallace).

   * Added al_is_sub_bitmap() function.


Input:

   * Fixed input with multiple windows on Windows.

   * Fixed keyboard autorepeat events in X11.

   * Added al_is_keyboard_installed().

   * Fixed key shifts on Windows (ported from 4.2).

   * Fixed mouse button reporting on Mac OS X.

   * Implemented system mouse cursors on MacOS X.

   * Fixed mouse cursors with alpha channels on X11.

   * Some work on Mac OS X joystick support (incomplete).


Events:

   * Simplified internals of events system further. At the same time,
     this change happens to also allow event queues to grow
     unboundedly. (You should still avoid letting them get too big, of
     course.)

Audio addons:

   * Made ALLEGRO_STREAM objects emit events for empty fragments that
     need to be refilled.

   * Added a possiblity to drain a stream created by
     al_stream_from_file().

   * Added a function to rewind a stream.

   * Added gain support to ALLEGRO_STREAM and ALLEGRO_SAMPLE objects.

   * Made it possible to attach a sample to a mixer that isn't already
     attached to something.

   * Fixed Ogg Vorbis loader on big-endian systems.

   * Made the OpenAL driver the least preferred driver, as it doesn't
     play stereo samples properly.


Image addons:

   * Added JPEG support to iio addon, using libjpeg.

   * Fixed TGA loader on big-endian systems.

   * Fixed image loading in icodec addon.


Font addon:

   * Fixed count-restricted text output functions calculations on
     non-ASCII strings.

   * Made al_textout* functions always a 'count' parameter.

   * Renamed al_font_text_length* to al_font_text_width*.

   * Harmonised the order of al_font_textout* and al_font_textprintf*
     arguments.


Examples:

   * Added ex_bitmap_flip example (Steven Wallace).

   * Added ex_mixer_chain example.

   * Split ex_events into smaller examples.

   * Made the demo use ALLEGRO_STREAM to play music.

   * Build an app bundle from the demo, on Mac OS X.


Build system:

   * Improved detection of external dependencies in CMake build.

   * Guess compiler locations for MinGW and MSVC (CMake).

   * Many improvements to scons build, including install support.


General:

   * Many other bug fixes.

Changes from 4.9.3 to 4.9.4 (September 2008)
********************************************

The core developers this time were: Trent Gamblin, Peter Hull, Milan
Mimica, Elias Pschernig and Peter Wang. Ryan Dickie and Jon Rafkind
also contributed.

General:

   * Many bug fixes all around.

   * Added a public threads API.

   * Added a basic configuration API.

   * Added al_store_state/al_restore_state functions.

   * Added al_get_errno/al_set_errno (not used much yet).

   * Renamed some functions/structures to be more consistent.

   * Code formatting improvements.

   * Added more debugging messages.

   * Removed a lot of A4 code that is no longer used.


Graphics:

   * Added support for some new OpenGL extensions.

   * Multihead support on Windows (preliminary support on OSX and
     Linux).

   * Many enhancements to all drivers.

   * Merged common parts of WGL and D3D drivers.

   * Borderless windows, setting window positions and titles.

   * Fullscreen support on OSX and Linux.

   * Do not clear bitmaps when they are created.

   * Improved compile times and DLL sizes by simplifying "memblit"
     functions.

   * Added EXPOSE, SWITCH_IN and SWITCH_OUT display events.


Build system:

   * Many bug fixes and enhancements to SCons and CMake build systems.

   * Support for Turbo C++ 2006.

   * Support for cross-compiling on Linux to MinGW (CMake).


Events:

   * Filled in a display field for all relevant events.

   * Added al_wait_for_event_until.


Addons:

   * Added an ImageMagick addon

   * Added iio (Image IO) addon

        * Supports BMP, PCX, TGA.

        * Supports PNG support with libpng.


   * Added new audio addon, kcm_audio. (The 'audio' addon was taken in
     a new direction between the 4.9.3 and 4.9.4 releases, but we
     decided against that, so actually it's actually a continuation of
     the old audio addon.)

        * Added audio streaming functionality.

        * Added OSS, ALSA, DirectSound drivers.

        * A lot of reorganisation, internally and externally.


   * Added TTF font addon, using FreeType.

   * Made all addons use "al_" prefix.


Examples:

   * Lots of new examples.

   * Wait for keypress in some examples instead of arbitrary delay.

   * Clean up files when done in some examples.


Changes from 4.9.2 to 4.9.3 (April 2008)
****************************************

Graphics:

   * Milan Mimica did lots of work on the OpenGL drivers, such as
     adding an OpenGL driver for Windows and making the OpenGL code
     shared between platforms.

   * Peter Hull added an OpenGL graphics driver for Mac OS X.

   * Milan Mimica made the OpenGL driver share contexts between
     displays.

   * Peter Wang and Milan Mimica made the OpenGL driver work with cards
     that don't support non-power-of-two (NPOT) textures.

   * Trent Gamblin added support for NPOT textures in the Direct3D
     driver.

   * Trent Gamblin fixed blending in memory drawing functions.

   * Trent Gamblin added al_draw_pixel() which obeys blending.

   * Trent Gamblin made al_clear() not affected by blending in D3D.

   * Milan Mimica added the following functions to the public API:
     al_opengl_version(), al_is_opengl_extension_supported(),
     al_get_opengl_proc_address(), al_get_opengl_extension_list().

   * Milan Mimica added sub-bitmaps support for memory bitmaps and in
     the OpenGL display driver.

   * Milan Mimica made displays keep a list of bitmaps. When destroying
     a display its bitmaps will be managed properly, e.g. converted to
     memory bitmaps if necessary. All display bitmaps will be
     automatically destroyed on exit.

   * Peter Wang made X window resizing work without GLX 1.3.

   * Trent Gamblin fixed a bug in the Direct3D driver when windows were
     minimized (thanks to David McCallum).

   * Trent Gamblin fixed the coordinates of Direct3D primitives to
     match OpenGL style.

   * Peter Hull fixed some logic in bitmap drawing and al_load_bitmap().


Fonts:

   * Milan Mimica made font drawing faster, by making glyphs
     sub-bitmaps of a larger glyph sheet.

   * Milan Mimica and Peter Wang made font loading faster.

   * Trent Gamblin added versions of text output functions which take
     as an explicit argument the length of the strings.


Audio:

   * A new audio API implementation, originally by Chris Robinson, was
     added (currently as an addon only). It has received additional
     work in the past from Milan Mimica and recently much work from
     Ryan Dickie.

   * Ryan Dickie also added an acodec addon, which has loaders for
     FLAC, Wave and Ogg Vorbis files, using other libraries.


Timers:

   * Ryan Dickie changed the type of timestamps throughout the API from
     int expressed in milliseconds to double expressed in seconds and
     improved timer resolution on Windows.

   * Ryan Dickie added an 'error' field to the timer event, and added
     error and overhead statistics to exnew_timer.

   * Trent Gamblin made the Windows timer use QueryPerformanceCounter.

   * Peter Wang split al_wait_for_event() into two functions, a version
     that takes a timeout and a version that doesn't.

   * Trent Gamblin merged the Windows and Unix timer source files.


Input:

   * Peter Wang renamed some joystick and timer functions to adhere to
     the `al_<verb>_<noun>' convention.

   * Peter Wang made al_num_joysticks() more lenient if there is no
     joystick driver installed.


Other:

   * David Capello added support for various different BMPs.

   * Elias Pschernig fixed compilation of the X port in case the
     XVidMode extension is unavailable (thanks to Thomas Fjellstrom).

   * Elias Pschernig added a exnew_timer example.

   * Trent Gamblin added exnew_multiwin and exnew_drawpixels.

   * Peter Wang added exnew_timedwait and exnew_scale.

   * Jon Rafkind and Elias Pschernig updated the SCons build.

   * Jon Rafkind added a `_s' suffix to static libraries in the SCons
     build.

   * Elias Pschernig did some work on cross-compilation with SCons and
     MinGW.

   * Milan Mimica made the CMake build work with MSVC project solutions
     and made the library build with MSVC 8.

   * Jacod Dawid added a nicer spaceship graphic for a5teroids demo.

   * Many more bug fixes and documentation updates.


Changes from 4.9.1 to 4.9.2 (November 2007)
*******************************************

_This list is still to be summarised._

   * Trent Gamblin made the mouse cursor always hide when the user
     calls al_hide_mouse_cursor in fullscreen (D3D).

   * Trent Gamblin fixed some signedness warnings and implemented
     show/hide_mouse in the display vtable for D3D.

   * Elias Pschernig made show/hide cursor use the display driver
     instead of the 4.2 gfx_driver.

   * Elias Pschernig fixed missing keyboard events in
     exnew_mouse_events example.

   * Elias Pschernig wired the X11 mouse driver to the XGLX system
     driver.

   * Jon Rafkind made various fixes to get the OSX build to compile

   * Trent Gamblin added exnew_mouse_events.

   * Trent Gamblin added exnew_mouse.

   * Jon Rafkind made the scons build get the library name dynamically.

   * Jon Rafkind made the scons build link Allegro using -l instead of
     using the full path.

   * Trent Gamblin added a note about MINGDIR in readme_a5.txt.

   * Trent Gamblin removed -lalleg_unsharable from allegro-config.in,
     since assembly is not used anymore.

   * Jon Rafkind fixed up allegro-config.

   * Trent Gamblin added some documentation on ALLEGRO_MSESTATE.

   * Trent Gamblin listed the examples in readme_a5.txt.

   * Trent Gamblin improved some inline documentation.

   * Jon Rafkind removed /lib from install path in unix.scons.

   * Jon Rafkind added the new demo to the scons build and allowed
     addons to be built statically or shared.

   * Trent Gamblin made the glx line drawing function use blending.

   * Trent Gamblin added cmake instructions to readme_a5.txt.

   * Elias Pschernig added readme_a5.txt.

   * Trent Gamblin fixed warnings in the demo.

   * Trent Gamblin fixed a crash-on-exit bug in tls.c.

   * Trent Gamblin replaced the old demo with a temporary one.

   * Peter Wang fixed gcc string warnings.

   * Peter Wang added some assertions to display_new.c.

   * Peter Wang merged changes from the 4.2 branch.

   * Elias Pschernig removed an unnecessary import from the naturaldocs
     upload script.

   * Elias Pschernig added a script to automatically upload the
     naturaldocs generated documentation to the website.

   * Peter Wang fixed missed renamings from AL_ to ALLEGRO_ in the
     Linux and X code.

   * Elias Pschernig merged 4.9-newgfx back to 4.9.

   * Peter Wang fixed a "ALLEGRO__JOYSTICK" typo.

   * Trent Gamblin renamed AL_ to ALLEGRO_ in input, events, and timer
     code.

   * Elias Pschernig implemented outline flag and blending for
     draw_rectangle in the GLX driver.

   * Elias Pschernig added another mysha.pcx for the font example.

   * Elias Pschernig re-added GLX checked to scons build which went
     missing in the merge.

   * Elias Pschernig added icon.xpm which went missing in the merge.

   * Peter Wang replaced _al_draw_bitmap_region_memory_fast with
     _al_draw_bitmap_region_memory.

   * Trent Gamblin made memblit.c compile a little faster in debug mode.

   * Peter Wang mergedd changes in r7948:10859 on 4.9 branch to
     4.9-newgfx branch.

   * Peter Wang enabled WANT_D3D by default. Only set ALLEGRO_D3D on
     Windows.

   * Trent Gamblin made al_acknowledge_resize take the display as a
     parameter.

   * Trent Gamblin fixed some warnings and made the MinGW build
     compilable statically with gcc 4.2.1.

   * Peter Wang fixed a bug in ALLEGRO_CONVERT_BGR_565_TO_ARGB_4444.

   * Peter Wang renamed al_memory_management_functions() to
     al_set_memory_management_functions() and added some extra
     documenation for it.

   * Peter Wang removed NaturalDocs markup for Allegro 4.x display
     functions.

   * Peter Wang made OpenGL libraries link if building with X11 support.

   * Peter Wang fixed a signedness warning.

   * Peter Wang made al_destroy_bitmap return immediately when passed a
     null pointer instead of segfaulting.

   * Elias Pschernig made some cosmetic improvements to the code.

   * Elias Pschernig removed a bad optimization.

   * Elias Pschernig removed > GLX 1.1 specific code.

   * Trent Gamblin fixed several of the floating point unmapping
     functions that were doing integer division.

   * Elias Pschernig implemented blending in the GLX driver.

   * Elias Pschernig fixed GLX rotation to use radians and allow
     negative angles.

   * Elias Pschernig implemented rotated blitting in the GLX driver.

   * Jon Rafkind made scons install addons/font.

   * Jon Rafkind added a scons file for addons.

   * Jon Rafkind used target_scanner to find makedoc instead of using
     Depends.

   * Jon Rafkind forced makedoc to be a dependancy of the docs.

   * Trent Gamblin made 60hz the default refresh rate of the D3D driver.

   * Trent Gamblin changed al_create_mouse_cursor to accept
     ALLEGRO_BITMAP structures.

   * Trent Gamblin renamed __al_unmap_rgba to al_unmap_rgba_ex in the
     glx driver.

   * Trent Gamblin made al_(map|unmap)_rgb(a)_*_ex public.

   * Trent Gamblin made D3D windows show the resize cursor when
     resizing windows.

   * Jon Rafkind added allegro includes for asmdef.

   * Jon Rafkind erased older build demo target.

   * Jon Rafkind added the demo to the scons build.

   * Jon Rafkind made it so assembly files can be built statically.

   * Jon Rafkind made scons always build asmdef.

   * Trent Gamblin made al_acknowledge_resize and al_resize_display
     adjust clipping in the D3D driver. Mad eal_set_current_display

   * Trent Gamblin used higher compatibility flags to Direct3DCreate9,
     made D3D driver die more gracefully on unsupported configurations,
     removed flags from draw_line, and did more error checking.

   * Trent Gamblin turned al_init macros into an inline function.

   * Trent Gamblin commented out a TRACE line that was causing the
     entire log to be overwritten.

   * Peter Wang fixed an incorrect call to _al_vector_find_and_delete.

   * Peter Wang made various formatting fixes.

   * Peter Wang converted CR/LF line endings to LF.

   * Trent Gamblin added NaturalDocs for the graphics api.

   * Trent Gamblin fixed an instance where a variable could have been
     used uninitialized.

   * Trent Gamblin fixed texture coordinates in the D3D driver.

   * Trent Gamblin fixed formatting and an improper assertion.

   * Trent Gamblin removed a redundant call to al_set_target_bitmap.

   * Trent Gamblin fixed a bug in the DX joystick code that caused it
     to assert when it shouldn't.

   * Trent Gamblin made al_create_display call al_flip_display so the
     window is cleared.

   * Trent Gamblin made the D3D driver work where render-to-texture is
     not supported.

   * Trent Gamblin removed masking support completely.

   * Elias Pschernig got the font example working with the GLX driver.

   * Elias Pschernig renamed the font addon in the scons build.

   * Jon Rafkind made scons build modules in a separate directory.

   * Jon Rafkind bumped the version to match cmake.

   * Jon Rafkind fixed esd to be like the other unix modules.

   * Trent Gamblin changed color map and unmap functions to use the
     target bitmap.

   * Trent Gamblin added the font example to the cmake build process.

   * Elias Pschernig added the font example to the scons build process.

   * Elias Pschernig removed special handling of "src" dir, and made
     various cosmetic changes.

   * Trent Gamblin made cmake install to MINGDIR.

   * Trent Gamblin added a better font and example for the bitmap font
     addon.

   * Trent Gamblin removed unix header from install on other platforms.

   * Trent Gamblin added a bitmap font addon.

   * Trent Gamblin fixed a locking bug in the D3D driver.

   * Elias Pschernig removed masking from the GLX driver.

   * Trent Gamblin implemented blending for memory bitmaps (very slow
     unless the blend mode is ALLEGRO_ONE,ALLEGRO_ZERO with a pure
     white blend color).

   * Trent Gamblin implemented blending for the D3D driver.

   * Trent Gamblin added
     ALLEGRO_PIXEL_FORMAT_ANY_(15|16|24|32)_(WITH_ALPHA|NO_ALPHA)
     formats, used ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA in locking
     examples, and ixed some formatting.

   * Trent Gamblin added al_clone_bitmap which makes an exact copy of
     the color-data of a bitmap.

   * Trent Gamblin added a ALLEGRO_KEEP_BITMAP_FORMAT flag that forces
     Allegro to use the same format as the disk file when loading
     bitmaps.

   * Elias Pschernig implemented video bitmap masking for the GLX
     driver (by converting to alpha textures and drawing with alpha
     blending).

   * Elias Pschernig fixed clipping in the GLX driver.

   * Trent Gamblin removed ALLEGRO_MASK_SOURCE flag in favor of
     ALLEGRO_USE_MASKING. Mask color is now a bitmap property. Removed
     ALLEGRO_NO_ALPHA flag and changed the meaning of ALLEGRO_USE_ALPHA
     to mean do alpha blending or not. Added
     al_set/get_bitmap_mask_color and removed al_set/get_mask_color.
     New masking example added (exnew_masking).

   * Trent Gamblin added proper clipping to al_put_pixel.

   * Trent Gamblin renamed graphics stuff from AL_ to ALLEGRO_ and
     removed patterned drawing.

   * Elias Pschernig implemented clipping for the X11 GLX driver (only
     for screen so far).

   * Trent Gamblin removed unused set_bitmap_clip entry from the bitmap
     vtable.

   * Trent Gamblin made clipping always enabled and made the clipping
     functions operate on the current target bitamp.

   * Trent Gamblin removed src/compat/coblit.c.

   * Trent Gamblin renamed scroll_display to scroll_screen in display.c

   * Trent Gamblin Removed commented code from src/display.c. Removed
     include/allegro/display.h and src/compat/cogfx.c

   * Elias Pschernig renamed XDUMMY driver to XGLX.

   * Elias Pschernig made some cosmetic changes.

   * Elias Pschernig made exblend work over the compatibility screen.

   * Elias Pschernig implemented upload_compat_screen method in the GLX
     driver.

   * Elias Pschernig optimized al_lock_bitmap/al_unlock_bitmap slightly.

   * Elias Pschernig added a flags parameter to the drawing primitives
     methods.

   * Trent Gamblin added flags to primitives in display vtable and
     renamed draw_filled_rectangle vtable entry to draw_rectangle.

   * Elias Pschernig implemented AL_SINGLEBUFFER flag and fixed bug
     with AL_FULLSCREEN in the GLX driver.

   * Trent Gamblin added a mode parameter to al_set_drawing_pattern.

   * Trent Gamblin added AL_OUTLINED flag that is the default for
     primitives.

   * Trent Gamblin added al_set_drawing_pattern and
     al_get_drawing_pattern, added a flags parameters to all the
     primitive drawing functions that can be: AL_FILLED, AL_PATTERNED,
     and added hline and vline functions for memory bitmaps.

   * Trent Gamblin ifdefed d3d stuff in win/wnewsys.c.

   * Trent Gamblin removed d3dx9 library from CMakeLists.txt.

   * Trent Gamblin ifdefed Direct3D stuff in display.c.

   * Jon Rafkind made scons read win32 files from cmake file list.

   * Trent Gamblin added al_wait_for_vsync and made it work with the
     D3D driver.

   * Elias Pschernig implemented immediate-resize for
     al_resize_display, and implemented fullscreen resizing.

   * Trent Gamblin added al_enable_bitmap_clip and
     al_is_bitmap_clip_enabled, added al_create_sub_bitmap, and made it
     work with D3D and memory bitmaps.

   * Elias Pschernig improved fullscreen handling.

   * Elias Pschernig added shutdown_system vtable entry to the system
     driver, and automatically call it on program exit. This allows
     unsetting fullscreen modes in the X11 driver.

   * Trent Gamblin added al_set_bitmap_clip and al_get_bitmap_clip, and
     made them work with D3D and memory bitmaps.

   * Elias Pschernig added XF86Vidmode fullscreen modes.

   * Elias Pschernig added xdummy files to cmake files list.

   * Elias Pschernig made al_resize_display work on non-resizable
     windows.

   * Elias Pschernig fixed opengl setup being issued in wrong thread.

   * Elias Pschernig moved src/misc/colconv.c from windows sources to
     general sources.

   * Elias Pschernig uncommented accidentally commented out line.

   * Elias Pschernig made scons read the list of source files from
     cmake/FileList.cmake, so there's only one place to add new files.

   * Trent Gamblin made _al_get_pixel_value faster.

   * Trent Gamblin made al_unmap_rgba_i use a table instead of relying
     on al_unmap_rgba_f.

   * Peter Wang changed #includes to use file names from the root of
     the include hierarchy, i.e. #include "allegro/internal/foo.h"
     instead of #include "internal/foo.h" and likewise for
     allegro/platform/foo.h.

   * Peter Wang removed some stray CR characters.

   * Trent Gamblin added al_get_bitmap_width, al_get_bitmap_height,
     al_get_bitmap_format, and al_get_bitmap_flags.

   * Trent Gamblin made al_draw_rotated_(scaled_)bitmap only lock the
     region of the destination is needs to for memory bitmaps.

   * Trent Gamblin made al_draw_scaled_bitmap use the AL_FLIP_* flags.

   * Trent Gamblin added an example of resizing a fullscreen display.

   * Elias Pschernig updated xdummy driver and implemented
     al_resize_display for it.

   * Elias Pschernig added another testcase.

   * Trent Gamblin added al_get_display_width and
     al_get_display_height, made al_get_display_* work on the current
     display, and renamed al_notify_resize to al_acknowledge_resize.

   * Trent Gamblin uncommented everything in cogfx.c (removing the
     display parameter).

   * Trent Gamblin made exnew_lockscreen use pitch.

   * Trent Gamblin fixed scaled conversion macros (4444, 555, 565),
     added XRGB_8888 pixel format, made windowed mode default, moved
     get_num_display_modes and get_display_mode into the system vtable.

   * Trent Gamblin made exnew_lockbitmap use pitch.

   * Trent Gamblin fixed D3D unlocking bug, and used desktop format in
     windowed mode if not specified.

   * Elias Pschernig fixed a bug where events reported the wrong source
     display under X11.

   * Elias Pschernig added three simple test cases.

   * Elias Pschernig fixed al_lock_bitmap and al_unlock_bitmap
     implementation in the xdummy driver (for now it works in a slow
     way).

   * Trent Gamblin made al_notify_resize return success/failure and
     added al_resize_display to resize the display from code.

   * Elias Pschernig started implementing lock_region and unlock_region
     for the xdummy driver.

   * Elias Pschernig split xdraw.c out of xdisplay.c, used _AL_THREAD
     instead of pthreads in the xdummy driver, added a lock to the
     xdummy driver, in order to implement al_destroy_display, used the
     correct format.

   * Elias Pschernig fixed a comment typo.

   * Elias Pschernig fixed a typo in AL_CONVERT_PALETTE_8_TO_ABGR_8888.

   * Trent Gamblin improved D3D line drawing, added
     al_get_num_display_modes and al_get_display_mode, and cleaned up &
     organized some code.

   * Trent Gamblin removed _al_win_delete_from_vector.

   * Trent Gamblin added draw_memory_bitmap_region vtable hook to
     AL_DISPLAY.

   * Elias Pschernig implemented enough of the xdummy driver to run
     exnewap (doesn't display correctly yet though).

   * Elias Pschernig updated scons build files.

   * Elias Pschernig Removed windows specific includes from exnewapi.c.

   * Elias Pschernig added missing al_convert_mask_to_alpha prototype.

   * Peter Wang fixed src/tls.c to compile under Linux (not tested).

   * Trent Gamblin put TLS support back in for MSVC and UNIX.

   * Trent Gamblin cleaned up some code, added headers to new source
     files, grouped thread local variables into one structure (UNIX
     support is broken for now), and made mask color thread local.

   * Trent Gamblin added clear, filled rectangle, and line for memory
     bitmaps.

   * Trent Gamblin made it so the system driver is no longer hard
     coded, added switch_out method to display vtable, made the D3D
     window and system driver code generic.

   * Trent Gamblin merged 4.9-elias and 4.9-trentg into 4.9-newgfx.

   * Elias Pschernig adjusted prototype of _al_init to implementation.

   * Elias Pschernig fixed a bogus cast.

   * Elias Pschernig fixed typo in al_get_new_diplay_format for
     non-mingw.

   * Trent Gamblin made display and bitmap parameters local to the
     calling thread.

   * Trent Gamblin added al_draw_rotated_bitmap and
     al_draw_rotated_scaled_bitmap for memory bitmaps using Allegro's
     software rotation code as a base.

   * Trent Gamblin ported a stretch blit fix from 4.2, made al_init
     call allegro_init, made al_draw_bitmap(_region) much faster on
     memory bitmaps, and added al_draw_scaled_bitmap for memory bitmaps.

   * Trent Gamblin renamed AL_LOCKED_RECTANGLE to AL_LOCKED_REGION, and
     started on memory bitmaps (al_draw_bitmap and al_draw_bitmap
     region work).

   * Trent Gamblin made seperate functions for getting/setting
     display/bitmap parameters, made backbuffer-as-source bitmap work
     in D3D, and changed parameter ordering of some functions.

   * Trent Gamblin added al_is_compatible_bitmap removed dependancy on
     Allegro's 3D math functions from the D3D driver.

   * Trent Gamblin added al_convert_mask_to_alpha, made put/get_pixel
     faster if the bitmap is locked ahead of time, and brought back
     AL_MASK_SOURCE.

   * Trent Gamblin committed various bugfixes, implemented the RGB
     mapping/unmapping functions from Bob's API.

   * Trent Gamblin removed the D3DX library dependancy.

   * Trent Gamblin committed various bugfixes and got all of the
     examples working with the D3D driver.

   * Trent Gamblin fixed some of the compatibility conversions.

   * Trent Gamblin changed the examples back to autodetecting the
     graphics driver.

   * Trent Gamblin made fullscreen mode work with the D3D driver, and
     non-resizable windows.

   * Trent Gamblin finished bitmap conversion functions, improved
     locking, implemented get/put pixel, and made some speed
     improvements.

   * Trent Gamblin added a bitmap conversion function.

   * Trent Gamblin got the demo game running in D3D.

   * Trent Gamblin removed an unnecessary bitmap copy.

   * Trent Gamblin added a skeleton D3D driver.

   * Peter Wang fixed the generation of allegro-config under Mac OS.

   * Michael Jensen fixed a mistake in the documenation for
     is_compatible_font.

   * Peter Wang fixed wrong variable in example code for load_font();

   * Trent Gamblin fixed some problems with the cmake build on Windows.

   * Peter Wang removed the second parameter in a call to
     _al_event_source_needs_to_generate_event() which was missed
     earlier.

   * Peter Wang exposed some internal documentation on destructors,
     events and event sources to NaturalDocs.

   * Peter Wang changed al_wait_for_event() so that a timeout value of
     "0" means to not wait at all. To wait an indefinite amount of time
     the caller should pass the AL_WAIT_FOREVER constant.

   * Peter Wang removed the declarations of al_event_source_set_mask
     and al_event_source_mask which were missed in the previous change.

   * Peter Wang removed event masking abilities, that is, for the user
     to prevent an event source from generating particular event types.
     This was implemented using bitfields which limited the number of
     event types to 32. Although the limit could be raised event
     masking was probably not very useful anyway. In all, the functions
     removed are: al_event_source_mask, al_event_source_set_mask,
     al_wait_for_specific_event. The al_wait_for_specific_event() API
     also required event types to be bitfields.

   * Peter Wang fixed some spelling mistakes in the examples.

   * Peter Wang bumped the version to 4.9.2.

   * Peter Wang moved allegro/branches/4.3 to allegro/branches/4.9.

   * Ryan Patterson clarified the documentation of stop_sample().

   * Peter Wang and Trent Gamblin fixed some issues with the CMake
     build. The allegro-config script was not generated properly and
     liballeg_unsharable wasn't being installed.

   * Matthew Leverton changed an instance of long long to LONG_LONG and
     an LL suffix into a (LONG_LONG) cast, both for MSVC 6.

   * Matthew Leverton submitted a fix for MSVC 6 regarding MSVC's lack
     of a __FUNCTION__ macro.

   * orz, Matthew Leverton, and Peter Wang made the ALLEGRO_USE_C=1
     option to work under MinGW and MSVC.

   * Anthony Cassidy fixed a typo.

   * Peter Wang removed the 'msvc' target from the fix.sh help message
     as it should not be used by users any more. Added a comment that
     it is used by zipup.sh.

   * Anthony 'Timorg' Cassidy made d_menu_proc fill up its assigned
     area with the gui_bg_color.


Changes from 4.9.0 to 4.9.1 (March 2007)
****************************************

_Note that 4.9.1 was called 4.3.1 when it was originally released._

   * Added a new mouse and cursor API. The new functions are:

     al_install_mouse, al_uninstall_mouse, al_get_mouse,
     al_get_mouse_num_buttons, al_get_mouse_num_axes, al_set_mouse_xy,
     al_set_mouse_z, al_set_mouse_w, al_set_mouse_axis,
     al_set_mouse_range, al_get_mouse_state, al_mouse_button_down,
     al_mouse_state_axis

     al_create_mouse_cursor, al_destroy_mouse_cursor,
     al_set_mouse_cursor, al_set_system_mouse_cursor,
     al_show_mouse_cursor, al_hide_mouse_cursor

   * Added documentation for some parts of the 4.9 API using the
     NaturalDocs generation system. The documentation is nowhere near
     as good as a proper manual, but it's still better than nothing.

   * Added a commented example demonstating the new API
     (exnew_events.c).

   * Added CMake and SCons build systems. These are mainly for use by
     Allegro developers at present.

   * Various bug fixes and minor changes.


Changes from 4.2 series to 4.9.0 (July 2006)
********************************************

_Note that 4.9.0 was called 4.3.0 when it was originally released._

Basically we're just wrapping up what we have in version control up to
now. See the commit logs if you want details.

This release introduces a few new subsystems. We have an event system,
a new keyboard API, a new joystick API, a new timer API, and the start
of a new graphics API. All of these are subject to change, as is usual
for a WIP.

We are maintaining a certain level of source compatibility with the 4.2
API. If it's easy to maintain compatibility then we do it, otherwise
compatibility is dropped. Obscure features are more likely to be
dropped.

This release has had minimal testing on Linux/x86, Windows/x86 (MinGW)
and Windows/x86 (MSVC). It seems to work on some Linux/x86-64 machines
also. Other ports are broken or untested.

The new functions are as follows (in no particular order). No real
documentation exists at the moment but interesting header files are:
altime.h, display.h, draw.h, events.h, joystick.h, keyboard.h, timer.h.

   * al_current_time al_rest

   * al_create_video_bitmap al_create_system_bitmap al_scroll_display
     al_request_scroll al_poll_scroll al_show_video_bitmap
     al_request_video_bitmap al_enable_triple_buffer al_create_display
     al_set_update_method al_destroy_display al_flip_display
     al_get_buffer al_get_update_method al_enable_vsync
     al_disable_vsync al_toggle_vsync al_vsync_is_enabled al_blit
     al_blit_region al_blit_scaled

   * al_event_source_set_mask al_event_source_mask

   * al_create_event_queue al_destroy_event_queue
     al_register_event_source al_unregister_event_source
     al_event_queue_is_empty al_get_next_event al_peek_next_event
     al_drop_next_event al_flush_event_queue al_wait_for_event
     al_wait_for_specific_event

   * al_install_joystick al_uninstall_joystick al_num_joysticks
     al_get_joystick al_release_joystick al_joystick_name
     al_joystick_num_sticks al_joystick_stick_flags
     al_joystick_stick_name al_joystick_num_axes al_joystick_axis_name
     al_joystick_button_name al_get_joystick_state

   * al_install_keyboard al_uninstall_keyboard al_get_keyboard
     al_set_keyboard_leds al_keycode_to_name al_get_keyboard_state
     al_key_down

   * al_install_timer al_uninstall_timer al_start_timer al_stop_timer
     al_timer_is_started al_timer_get_speed al_timer_set_speed
     al_timer_get_count al_timer_set_count


