% 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



<!-- vi: set sts=3 sw=3 et: -->
