% Allegro changelog for 5.1.x series

See `changes-5.0.txt` for changes in Allegro 5.0.x.  These lists
serve as summaries; the full histories are in the Subversion repository.


Changes from 5.1.7 to 5.1.8 (January 2014)
==========================================

The main developers this time were: Beoran, SiegeLord, Trent Gamblin,
Markus Henschel, Peter Wang.

Core:

  - Allow MSVC to use DLL TLS but disable DLL TLS by default.

  - Do not include windows.h via allegro.h.

  - Fix some memory leaks on X11.

Graphics:

  - Spell ALLEGRO_DST_COLOR, ALLEGRO_INVERSE_DST_COLOR with "DEST"
    (with compatibility defines).

  - Fix bug which meant ALLEGRO_INVERSE_SRC_COLOR and
    ALLEGRO_INVERSE_DEST_COLOR never actually worked on D3D.

  - Fix horizontal and vertical shears which were not composing with
    translations correctly.

  - Optimise al_restore_state if saved target display/bitmap are unchanged.

  - Fix _al_display_settings_sorter ordering of indexes when scores are equal.

  - Use a minimum 16x16 texture workaround even on desktop OpenGL.

  - Propagate errors up OpenGL lock bitmap implementations.

  - Use proxy bitmap when locking writable backbuffer regions on GLES.

  - Clean up FBO creation during bitmap locking.

  - Move the half-pixel shift in D3D into the projection matrix.
    Use the texture dimensions to compute the half-pixel shift.

  - Fix al_get_d3d_texture_size returning zeros.

  - Remove ALLEGRO_FORCE_LOCKING flag.

  - Setup GL viewport and projection in al_acknowledge_resize on Android.

  - Improve implementation of display options on Android: use the same display
    setting scoring code as other ports; handle SUGGEST display options
    properly; map ALLEGRO_COLOR_SIZE to EGL_BUFFER_SIZE attributes.

Filesystem:

  - Add al_ferror and al_ferror.  Initial patch by Tobias Scheuer.

  - Make al_fclose have a return value.

  - Check al_fclose return value in saving routines.

  - Make al_fopen_fd not leak a FILE handle in a failure path.

  - Make al_make_temp_file allocate temporary buffer to match the template.

  - android: Interpret the path to APK asset as AssetManager doesn't.

  - android: Correctly return -1 for APK asset file size if it can't be
    determined.  A side-effect is that FreeType (via the TTF addon) can now
    load TTFs stored compressed in APK assets.

  - android: Support ungetc on APK file streams.

  - android: Fix EOF handling in AllegroInputStream.

Input:

  - Initial haptics API, only implemented on Linux to begin with.

  - Use Linux input API for joystick driver instead of deprecated joystick API.

  - Use Linux joystick driver on Android if OUYA model detected
    (Jonathan Lilliemarck).

  - Use thread for hotplugging joysticks on Linux instead of timerfd
    (due to Android).

  - Report unichar in KEY_CHAR events on Android. (Todd Cope)

  - Added some Android gaming key codes.

  - iOS touch coordinates need to be multiplied by contentScaleFactor.

  - Android touch input id 0 was incorrectly treated as invalid.
    (Max Savenkov)

Shaders:

  - Automatically call OnLostDevice and OnResetDevice on HLSL shaders.

  - Remove #version specifier from all shaders.

Audio addon:

  - Remove generic audio event source and AudioQueue events.

  - Don't queue silent fragments at start of new audio streams.

  - Make stream_read return correct number of filled samples when no data is
    available (zero).

  - A DirectSound voice could not be restarted once it has been stopped.

  - Fix crash when attaching empty stream to dsound voice.

  - Reset buffer position in stop instead of play in dsound voice.

  - Fix calculation of current sample position in dsound voice.

 -  Reset audio stream when al_set_audio_stream_playing to false for voice and
    mixer cases, and make all fragments available for refill.

  - Emit stream fragment events when a stream is started.

  - Remove unnecessary reallocation of the channel matrix.

  - Add al_fill_silence.

  - Add al_get_audio_stream_played_samples.

  - Fix deadlock in Pulseaudio driver.  Reported by Bluebird.

  - Let al_set_sample_instance_playing work for unattached instances
    and sample instances with no data set.  Reported by Bluebird.

  - Enable the use of the unpatched DirectX SDK to build.

Audio codec addon:

  - Fix looping in Ogg Vorbis stream. (Todd Cope)

  - Seeking in wavs would always have returned success.

Image addon:

  - Fix many problems in Android native image loader, including:
    supporting ALLEGRO_NO_PREMULTIPLIED_ALPHA, respecting the new bitmap
    format, working for non-APK assets, not crashing on failure.

Native dialogs addon:

  - Change native menu ids from int to uint16_t due to limitation with
    Windows. (Matthew Leverton)

Primitives addon:

  - Rename the primitives buffer flags.

  - Simplify the prim buffer hints.

  - Simplify the al_create_vertex_buffer API.

  - Actually implement uninitialized vertex buffers.

  - Add indexed buffer API.

  - Polylines with ALLEGRO_LINE_CAP_CLOSED cap style did not draw correctly
    with thickness == 0.

  - Take into account the projection matrix when computing the scale of the
    high level primitives.

  - Replace enum arguments for al_draw_polyline and al_draw_polygon with
    integers to reduce chance of ABI issues.

TTF addon:

  - Fix a bug where some glyphs would be blank.

  - Allow glyph allocation to fail without crashing.

Android port:

  - Separate Allegro library Java code from the original example project for
    Android (Jonathan Lilliemarck).

  - Build Allegro library as a JAR.

  - Rename Java package to org.liballeg.android.

  - Change how the application shared library is specified.  Override the
    AllegroActivity constructor instead of specifying in AndroidManifest.xml.

  - Add a method to tell if the user exited main in the Android Java code.

  - Add a fix for the case of launching another activity from your game on
    Android and then returning to the game after it finishes.

  - Refactoring and clean up.

iOS port:

  - Remove al_iphone_get/set_screen_scale as not really needed and confusing.

Build system:

  - Integrate Android port into build system, including building and launching
    examples for debugging.

  - Detect OpenGLES/2 libraries on Android.

  - Let clang use same options as gcc in build system.

Python:

  - Made the C-parser used in the Python API generator understand more type
    constructs. (Elias Pschernig)

Examples:

  - Make demos and most examples run (somewhat) on Android.

  - Add touch input support to various examples.

  - New examples: ex_file, ex_haptic, ex_haptic2, ex_touch_input.

  - ex_prim: Demonstrate indexed buffers.

Other:

  - More more minor bug fixes and changes.

  - Documentation updates.

  - Syntax highlight the C source examples and prototypes in the documentation.



Changes from 5.1.6 to 5.1.7 (May 2013)
======================================

The main developers this time were: Peter Wang, Trent Gamblin.

Graphics:

  - Added al_horizontal_shear_transform, al_vertical_shear_transform
    (Jeff Bernard).

  - Make al_destroy_bitmap maintain the current display when untargeting
    the bitmap to be destroyed.

  - Delete al_create_custom_bitmap.

  - Delete al_ortho_transform compatibility macro.

  - Make al_get_d3d_texture_size fail instead of crash if passed a non-D3D
    bitmap.

  - Make al_get_opengl_texture_size return success code to match D3D.

  - Rename al_d3d_set_release/restore_callback to be consistent with existing
    naming, and pass the display as an argument.

  - Check availability of fullscreen button on window frame at run-time (OS X).

Input:

  - Fix mouse warping on OS X.

  - Fix mouse warping in Linux evdev mouse driver.

Audio addon:

  - pulseaudio: Use smaller buffer size by default, and make it configurable.

  - pulseaudio: Clean up state transitions.

Color addon:

  - Fix al_color_rgb_to_html blue component (Jeff Bernard).

  - Implement al_color_html_to_rgb and al_color_html more strictly.

Primitives addon:

  - Delete al_draw_polygon_with_holes.

  - Delete stride-less version of al_draw_polyline*.

  - Simplify interface of al_triangulate_polygon and
    al_draw_filled_polygon_with_holes.

Video addon:

  - Make al_seek_video return a result.

  - Fix crash when unable to open a Ogg video.

  - Don't scan to end of headers of unknown stream for Ogg video.

  - Stop reading at end of Ogg video.

  - Try to account for audio buffers in positioning of Ogg video.

  - Implement seek to beginning of file (only) in Ogg backend.

  - Replace deprecated av_find_stream_info() call (Nick Black).

Android port:

  - Fix some Android switch in/out and exit issues.

Build system:

  - Do not install most internal header files.

  - Do not search for and link with unneeded X libraries.

Examples:

  - ex_audio_timer: New example.

  - Revise and comment the ex_prim_shader example and shaders (Paul Suntsov).

Other:

  - Various documentation updates.

  - Minor fixes and much code refactoring.



Changes from 5.1.5 to 5.1.6 (March 2013)
========================================

The main developers this time were: Trent Gamblin, Paul Suntsov, Peter Wang.

Core:

  - Fix use of clobbered return value from setlocale() on X11.

  - Register system interface even if no display driver available on Windows.

  - Fix use of double math functions for float arguments (Nick Trout).

Shaders:

  - Revamped shader API.  The shader API is now part of the core library,
    and the shader addon removed.

  - Shaders are now a per-bitmap property, set with al_use_shader.
    A bitmap without a set shader uses a default shader internally,
    that allows Allegro drawing functions to work as in non-programmable
    pipeline mode.

  - Shader variable setters operate on the shader of the target bitmap.

  - Rename ALLEGRO_USE_PROGRAMMABLE_PIPELINE to ALLEGRO_PROGRAMMABLE_PIPELINE.

  - Rename al_link_shader to al_build_shader.

  - Remove al_set_shader.

  - Remove the al_set_shader_*_array functions.  These functions cannot
    be easily (or at all) implemented with the D3D backend.

  - Add al_get_shader_platform and al_get_default_shader_source.

  - Remove al_get_opengl_program_object, al_set_opengl_program_object,
    al_get_direct3d_effect, al_set_direct3d_effect.

  - Remove Cg shader backend.

  - Add macros for shader variable names (Jon Rafkind).

Displays:

  - Made al_get_display_mode return the closest thing to a pixel format
    possible with the WGL driver (tobing).

  - Move WGL context destruction out of the message pump thread and into
    the user/main thread.

  - Allow command-tab to work in fullscreen window mode on OS X.

  - Remove "user_reload" parameter from al_acknowledge_drawing_resume.

  - Don't crash in al_create_display if there is no display driver.

  - Don't crash at shutdown if there is no display driver (Windows).

  - Don't fail init if both D3D, GL drivers unavailable (Windows).

  - Sync bitmaps before resizing display to prevent changes being lost
    after the resize (D3D).

  - Load the D3D9X module during display creation and unload it when the
    D3D system shuts down.

  - Run fullscreen toggle on main thread (OS X).

  - Destroy the backbuffer bitmap when destroying the display (OS X).

  - Switch to new NSTrackingArea API (OS X).

  - Set ALLEGRO_NO_PRESERVE_TEXTURE on backbuffer (OpenGL).

Graphics:

  - Let al_destroy_bitmap implicitly untarget the bitmap on the calling
    thread.

  - Fix a bug where bitmap locking may change the target bitmap but
    not restore it back to NULL (OpenGL).

  - Use memory bitmap drawing when either bitmap is locked (OpenGL).

  - Fix a crash in D3D destroying sub-bitmaps.

  - Add const qualifiers to glUniform*v() functions (Aaron Bolyard).

Input:

  - Partially fix mouse buttons "sticking" on Mac, e.g. holding the
    mouse and toggling fullscreen window.

  - al_set_mouse_xy on Windows resulted in the mouse getting set to the wrong
    position in windowed modes

  - Scale the user supplied mouse cursor if it's too big (Windows).

  - Add key constants for some Android keys, those that are used in Xperia
    Play controls.

Audio addons:

  - Fix PulseAudio driver trying to connect to a non-existent server forever.

  - Avoid memory leaks with audio event source.

  - Use smaller buffer size for OpenSL.

Image addon:

  - Use Allegro built-in loaders in preference to OS X loaders for BMP/TGA/PCX.
    The OS X TGA loader doesn't support alpha and this is also more consistent.

Font addons:

  - Make al_init_font_addon return success value.

  - Make al_init_ttf_addon return true for subsequent calls.

Native dialogs addon:

  - Fix a crash on iOS due to threading/TLS issues geting the display
    (Nick Trout).

Primitives addon:

  - Speed up al_triangulate_polygon_with_holes.

  - Speed up drawing of the rounds for polylines.

  - Add custom vertex attributes to the primitives addon.

  - Replace vertex shader binary generated by vsa.exe (removed from DirectX
    SDKs for a while now) by that generated by fxc.exe.

  - A minor revamp of the HLSL default shader system in the primitives addon.

  - Fix a few incorrect usages of al_lock_vertex_buffer

  - Disallow 3 component vectors for ALLEGRO_PRIM_TEX_COORD.

  - Add a whole bunch of new ALLEGRO_PRIM_STORAGE values.

  - Primitives addon was ignoring the filter settings of textures in the D3D
    backend.

Android port:

  - Generate KEY_CHAR on Android.

  - Add key constants for Android.

  - Set target bitmap to display backuffer after program is resumed.

  - Use different functions for OpenGL ES 1 and OpenGL ES 2 on Android.

iOS port:

  - Support stencil buffer on iOS.

  - Remove unnecessary autorelease pools. There was a crash when using
    Airplay that goes away without the pools.

  - Make Airplay work the standard way most apps do unless the
    Allegro user explicitly creates a display on the second screen.

  - Don't autorotate displays other than device.

  - Fix some threading and memory issues.

Raspberry Pi port:

  - Allow for color size, depth and stencil sizes.

  - Support al_show_mouse_cursor and al_hide_mouse_cursor.
    Disabled as it sometimes ends up stuck on the screen until reboot.

Examples:

  - New examples: ex_prim_shader, ex_shader_target.

Other:

  - Various documentation updates.

  - Minor fixes and code refactoring.



Changes from 5.1.4 to 5.1.5 (January 2013)
==========================================

The main developers this time were: Trent Gamblin, Elias Pschernig,
Jon Rafkind, Peter Wang.

Ports:

-  Initial port to Raspberry Pi by Trent Gamblin.

Core:

-  Added an al_register_trace_handler function.

-  Clean up logging subsystem at shutdown (muhkuh).

-  Fix a problem with creating a display after Allegro is shut down
   then re-initialised on X11.

Displays:

-  Fix crashes when resizing a WGL fullscreen window.

-  Fix use of invalidated pointers in D3D driver when the first format fails.

-  Fix bug where setting the mouse cursor had no effect when
   the mouse was captured (mouse button held down).

-  Fix windows not having a minimise button when set to
   windowed state from fullscreen window state.

-  Respect ALLEGRO_FRAMELESS flag properly when toggling from
   fullscreen window state to windowed state (Windows).

-  Don't generate DISPLAY_LOST events when resizing a fullscreen display.

-  Fix al_set/get_window position on Windows so getting/setting
   to the same position continuosly doesn't move the window.
   (Michael Swiger)

-  Rename al_change_display_option to al_set_display_option.

-  Add al_set_display_icons (plural), implemented for X11 and Windows.

-  Add ALLEGRO_GTK_TOPLEVEL display flag for X11.

-  Fix window resizing when using shaders (X11).

Graphics:

-  Avoid null pointer dereference when setting a target bitmap after
   its video_texture has already been released (D3D).

-  Make d3d_lock_region fail immediately if _al_d3d_sync_bitmap
   failed, likely because the device was lost.

-  Set device_lost flag immediately when d3d_display_thread_proc
   finds the device is lost.

-  Fix OpenGL extensions being completely ignored on OS X.

-  Added a quick hack to fix bitmap locking on desktop OpenGL when using
   shaders.

Config:

-  Added al_remove_config_key and al_remove_config_section functions.

File I/O:

-  Fix al_read_directory crash on 64-bit Windows (simast).

Filesystem:

-  Keep absolute path in ALLEGRO_FS_ENTRYs so that later changes to the
   current working directory do not affect the interpretation of the path.

-  Set ALLEGRO_FILEMODE_HIDDEN properly on Unix.

-  Make sure stat mode bits are cleared in default implementation of
   al_update_fs_entry.

-  Support Unicode paths on Windows.

-  Change description of al_get_fs_entry_name about not returning absolute
   path if created from relative path; no longer true for either the default
   or Physfs implementations.

Audio addons:

-  Fix setting the speed of an audio stream after it was attached to the mixer
   (Paul Suntsov).

-  Shut down threads properly when when destroying FLAC and modaudio streams.

Font addon:

-  Avoid making x offset non-integral for ALLEGRO_ALIGN_CENTRE.

-  Make al_draw_justified_* respect ALLEGRO_ALIGN_INTEGER.

TTF addon:

-  Don't save the projection transform if no display is set.

Image addon:

-  Added a missing autorelease-pool to the OSX bitmap saving function
   (sleepywind).

-  Fix OSX native image loader for loading not-premultiplied RGB data.
   Previously the data was "de-multiplied", with possibly all information lost.

-  Fix OSX native image loader for loading bitmaps without an alpha channel.
   They appeared completely black previously.

-  Fixed loading interlaced .png files with libpng.

Native dialogs addon:

-  Do not unload of rich edit module when closing one text log window while
   another exists.  Reported by URB753.

-  Use default colours for Windows text log implementation, avoiding problems
   when the previous custom colours failed, leading to black text on a
   nearly black background.

-  Add al_shutdown_native_dialog_addon.

-  Add native menu support on X11 (requires ALLEGRO_GTK_TOPLEVEL).

-  Add native menu support on OS X.

PhysicsFS addon:

-  Implement al_change_directory semantics (Todd Cope).

Primitives addon:

-  Fixed textured primitives when using shaders (OpenGL).

Shader addon:

-  Add dynamic loading of d3dx9_xx.dll (Michał Cichoń).

-  Add dynamic loading of Cg DLLs (Michał Cichoń).

-  Started implementing default shaders. Only GLSL so far.

-  Fix null pointer dereference in al_create_shader if backend init fails.

Android port:

-  Fix setting the current display on Android.

-  Don't set the backbuffer when setting up the OpenGL view.

Build system:

-  Rename allegro\*-5.1.pc files to allegro\*-5.pc.
   The new names will be available in future 5.0.x releases.

-  Generate and install allegro_shader pkg-config file.

-  Only generate and install pkg-config files for libraries that we build.

Examples:

-  ex_icon2: New example.

-  ex_shader_multitex: New example.

-  ex_shader: Choose shader platform on command-line; external shader sources.

-  ex_menu: Various changes.

-  speed: Avoid poor performance due to needless redraws.

Other:

-  Documentation updates, many thanks to beoran.

-  A lot of code refactoring.



Changes from 5.1.3 to 5.1.4 (October 2012)
==========================================

The main developers this time were: Trent Gamblin, Elias Pschernig, Peter Wang.

Graphics:

-  Fixed al_convert_bitmap using the target instead of the source format when
   converting its data.

-  Fix a crash in Direct3D in al_set_target_bitmap when switching from a memory
   target.

-  Fix a potential crash when drawing the screen to a bitmap with D3D.

-  WGL shouldn't need to preserve bitmaps.

-  Update the projection transform when setting up the OpenGL context
   on X11 (SiegeLord).

-  Lock bitmap to prevent slowness when creating a cursor from a non-memory
   bitmap on Windows.

-  Conditionally lock bitmap when creating cursor on X11 (previously it did
   so even if already locked).

Input:

-  Make al_install_touch_input fail under Windows if there is no touch device.

-  Temporary fix for delay after mouse warp on OS X.

File I/O:

-  Fix al_fputc on big-endian.  Reported by Andreas Rönnquist and
   Tobias Hansen.

-  Make al_fputc return value like fputc when out of range.

Image addon:

-  gdiplus: Only preserve indexed images with KEEP_INDEX flag on.

Font addons:

-  Added ALLEGRO_ALIGN_INTEGER text drawing flag (Todd Cope).

-  Added a new al_get_font_ranges function.

-  Made TTF addon include padding on the top and left edges of pages
   (Todd Cope).

Audio addon:

-  Use programmatically generated interpolators.  They cover an additional
   case which was missed and should be slightly more efficient.

-  Support linear interpolation for 16-bit mixers.

-  Add cubic interpolation for mixers (off by default).

-  Fix potential deadlock in stop_voice for OpenAL.

-  Fix potential deadlock in stop_voice for DirectSound.

-  Improve buffer filling behaviour for DirectSound, reducing pops and
   crackles significantly on slower machines.

-  Increase default buffer size for DirectSound to 8192 samples.

Android port:

-  Support ALLEGRO_KEYBOARD_STATE.

-  Fix return type of APK_tell (Todd Cope).

-  Allow use of OpenGL ES 2 under Android.

iOS port:

-  Make orientation changes work on iOS with SDK 6.

Build system:

-  Rename native dialog library back to allegro_dialog to match 5.0.

-  Install pkg-config files when cross-compiling on Unix.

Python:

-  Make the Python wrapper also check for the monolith DLL.

Examples:

-  ex_synth: Add button to save waveform to a file.

-  ex_multisample: Demonstrate using moving bitmaps.

-  Renamed a5teroids to Cosmic Protector

Other:

-  Minor bug fixes and documentation updates.



Changes from 5.1.2 to 5.1.3 (August 2012)
=========================================

The main developers this time were: Dennis Busch, Trent Gamblin,
Elias Pschernig, Jon Rafkind, Paul Suntsov, Peter Wang.

Displays:

-  Rewrite D3D display format listing code, which was broken.  This should
   re-enable multi-sampling and fix ex_depth_mask being slow with D3D.

-  Fixed a case where changing fullscreen mode in D3D via al_resize_display
   caused a crash and loss of loaded bitmaps information.

-  Fixed a case where changing fullscreen mode in OpenGL (on Windows) via
   al_resize_display cause nothing to be rendered after the mode change.

-  Fixed OpenGL (Windows) bitmap preservation between fullscreen mode changes.

-  Fixed missing/incorrect resize events under Windows.

-  Fixed ALLEGRO_FULLSCREEN_WINDOW under OS X.

-  Fix al_set_new_display_adapter on OS X.

-  Enable fullscreen icon on resizable windows on OS X 10.7 and up.

-  Added al_osx_get_window function (Dennis Gooden).

Graphics:

-  Rename al_ortho_transform to al_orthographic_transform
   and give it a more consistent parameter order.

-  Add al_perspective_transform and al_translate|scale|rotate_transform_3d.

-  al_draw_pixel was crashing when drawn on sub-bitmaps on OpenGL.

-  Make ogl_flush_vertex_cache disable GL_TEXTURE_2D state.

-  Don't use NSOpenGLPFAAccelerated unnecessarily (OS X).

Input:

-  Fix incorrect keyboard modifier flags after leaving and re-entering a window
   (Windows).

-  Fixed a bug with mouse enter/leave events for resized windows under OSX
   (Dennis Gooden).

Audio addon:

-  Add OpenSL ES driver for Android.

Font addons:

-  Add builtin font creation function.

-  Preserve projection transformation when caching glyphs in the TTF addon.

Image addon:

-  Don't include native image loader source files when the native image loaders
   are disabled.

Primitives addon:

-  Add vertex buffer API.

Native dialogs addon:

-  Run NSAlert on the main thread (OS X).

Android port:

-  Many bug and compatibility fixes.

-  Support al_inhibit_screensaver on Android.

-  Generate SWITCH_IN/OUT events on Android similar to iOS.

-  Support render state API on Android.

-  Make al_acknowledge_drawing_resume take a user callback parameter for
   interdependant textures.

-  Support building Android port for x86.

-  Add an ANDROID_APP_NAME CMake variable which will replace all
   org/liballeg/app and org_liballeg_app with your own app name

Build system:

-  Make the monolith dll under Windows use proper dll exports with MSVC.

-  Properly include the main addon in the monolith build.

-  Add Physfs and Cg include directories.

Examples:

-  Added new examples: ex_projection, ex_vertex_buffer.

Other:

-  Documented the allegro_main addon.

-  Various minor bug fixes and cleanups.



Changes from 5.1.1 to 5.1.2 (May 2012)
======================================

The main developers this time were: Thomas Fjellstrom, Trent Gamblin,
Elias Pschernig, Peter Wang.

Core:

-  Add userdata to Windows window callbacks and rename the functions
   (Matthew Leverton).

-  Fix ALLEGRO_STATIC_ASSERT collisions from different files included in the
   same translation unit.  Reported by tobing.

-  Make al_ustr_empty_string const correct.

-  Fix many memory leak/warnings on MacOS X (Pär Arvidsson).

Filesystem:

-  Make stdio al_fopen implementation set proper errno on failure.

-  Make al_get_standard_path(ALLEGRO_TEMP_PATH) treat environment values
   as directory names even without a trailing slash on Unix.

-  Fix typo preventing get_executable_name from using System V procfs
   correctly.  Reported by Max Savenkov.

Displays:

-  Fixed bug on Windows where two SWITCH_IN events were fired when window was
   minimized/restored (Michael Swiger).

-  Fixed inverted al_toggle_display_flag(ALLEGRO_NOFRAME) logic under Windows
   as well as a bug where repeatedly setting the flag to on would make the
   window grow bigger and bigger (Michael Swiger).

-  Fixed inverted al_toggle_display_flag(ALLEGRO_NOFRAME) logic in X11.

-  Rename al_toggle_display_flag to al_set_display_flag, retaining
   the older name for compatibility.

-  Add ALLEGRO_FRAMELESS as a preferred synonym for the confusing
   ALLEGRO_NOFRAME flag.

-  Set WM_NAME for some window managers (X11).

-  Disable the idle timer on iOS (screen lock) when entering airplay mode.

-  Make al_destroy_display handle display disconnection properly.
   The user will need to clean up then call al_destroy_display after receiving
   ALLEGRO_EVENT_DISPLAY_DISCONNECTED (iOS).

Graphics:

-  Added al_get_parent_bitmap (Paul Suntsov).

-  Make blitting from backbuffer work when using multisampling on Windows/D3D.

-  Redefine pixel format LUMINANCE_8 as SINGLE_CHANNEL_8.

-  Map SINGLE_CHANNEL_8 to red channel only.  Fix some software pixel format
   conversion bugs previously present with the LUMINANCE_8 format.

-  Added al_create_custom_bitmap.

-  Remove ALLEGRO_PRESERVE_TEXTURE flag. The idea is to always preserve
   textures unless directed otherwise by the user with
   ALLEGRO_NO_PRESERVE_TEXTURE.

-  Added al_clear_depth_buffer and al_set_render_state functions.

-  Force al_create_bitmap to not create oversized bitmaps, to mitigate
   integer overflow problems.

-  Removed initial black frame on all Allegro programs.

OpenGL:

-  Fix null pointer dereference if backbuffer creation fails.
   Reported by Max Savenkov.

-  Made the ALLEGRO_OPENGL_FORWARD_COMPATIBLE flag work with al_draw_bitmap.

-  Texture should be 'complete' (min/mag and wrap set) before glTexImage2D.

-  Restore matrix manipulation code for unlocking backbuffer in GL <1.4 case.

-  Fixed a bug in al_unlock_bitmap where the pixel alignment mistakenly was
   used as row length.

-  Never set the projection when using programmable pipeline mode unless a
   program object is bound.

-  Do not preserve bound texture state.

-  Disable GL_NORMAL_ARRAY in non-programmable pipeline mode.

-  Fixed typo in names of some OpenGL extension functions.

-  Display list of OpenGL extensions in allegro.log also for OpenGL 3.0.

-  Check for OES_texture_npot as well for non-power-of-two support.

-  Fix loading of some textures on iOS.

Direct3D:

-  Fixed a bug in the D3D driver where separate alpha blending was being
   tested for when it shouldn't have been (Max Savenkov).

-  Do not manage depth stencil surface.

-  Arrange code so that sleep and hibernate work using the release and restore
   callbacks.

-  Fix device reset problem in D3D.

-  Make sub-bitmap restore properly on lost device.

Input:

-  Increase max number of joystick "sticks".  Due to analogue buttons being
   mapped to axes, the number of sticks on a single device may be much higher
   than expected.

-  Monitor /dev/input instead of /dev on Linux for hotplugging joysticks
   (Jon Rafkind).

-  Do not permanently change the locale for the X11 keyboard driver.
   Set LC_CTYPE only, not LC_ALL.

-  Update ALLEGRO_MOUSE_STATE even if mouse emulation event source isn't
   attached to an event queue (Android and iOS).

-  Don't report shakes at program start accidentally (iOS).

Android port:

-  Many graphics-related changes (too many to list).

-  Make Android port always choose a double buffered graphics mode.

-  Don't force 16-bit mode if no COLOR_SIZE specified.

-  Go fullscreen (no title/status bar).

-  Generate ALLEGRO_EVENT_DISPLAY_HALT_DRAWING, RESUME_DRAWING events instead
   of SWITCH_IN/OUT.

-  Add an APK file driver for reading assets directly from Android app bundles.

-  Additions and fixes to accelerometer and orientation code.

-  Support for volume keys.

-  Added a dummy mouse driver, enough to get al_get_mouse_state working.

-  Improve compatibility of touch input emulation driver with iOS touch input
   emulation.

-  Add al_android_get_os_version().

-  Fix linking problem on Android 2.2 and below.

-  Update and clean up sample project.

Audio addon:

-  Fix desychronization due to inaccurate sample positions when resampling.
   Thanks to _Bnu for discovering the issue and Paul Suntsov for devising the
   correct solution.

-  Fix linear interpolation across audio stream buffer fragments.

-  Add stub OpenSL driver (Jon Rafkind).

Image addon:

-  Improved accuracy of un-alpha-premultiplying in the native OSX bitmap loader.

-  Improve compatibility of BMP loader.  In particular, support bitmaps with
   V2-V5 headers and certain alpha bit masks.

-  Improve robustness of BMP loader against some corrupt files.

-  Fix TGA loader using more memory than necessary.  Reported by Max Savenkov.

-  Image loading in Android now works.

Font addon:

-  Use user set pixel format for fonts.

TTF addon:

-  Added ALLEGRO_TTF_NO_AUTOHINT font loading flag to disable the Auto Hinter
   which is enabled by default in newer version of FreeType (Michał Cichoń).

-  Unlock glyph cache page at end of text_length and get_text_dimensions
   (jmasterx).

Primitives addon:

-  Use GL_REPEAT so textures can be tiled again.

-  Always set the texture due to missing glGetInteger on some GLES 1.0/1.1
   devices.

Native dialogs addon:

-  Only call SetMenu from within the window thread (Matthew Leverton).

-  Clear mouse state after dialogs or else it gets messed up (OSX).

-  Fix some warnings in gtk_dialog.c.

Build system:

-  Added OSX Framework support for the monolith library.

-  Make examples build with monolith build.

-  Add WANT_ANDROID_LEGACY to allow compiling for older Android platforms.

Examples:

-  a5teroids: Added high scores and other improvements.
   New graphics by Tony Huisman.

-  Add ex_file_slice.

-  Add ex_resample_test.

-  Add ex_depth_mask.

-  ex_audio_props: Add bidir button.

-  ex_joystick_events: Support hotplugging and fix display of 3-axis sticks.

-  ex_polygon: Test al_draw_filled_polygon_with_holes.

-  ex_get_path: Test al_set_exe_name.

-  Made the skater demo run from within xcode.

-  Add test_driver --no-display flag. (Tobias Hansen)

-  Add test_driver --force-opengl-2.0 option.

-  Make .png and .tga loading tests to not require a backbuffer with an alpha
   channel.

Other:

-  Many minor bug fixes.

-  Many documentation updates.

-  Fix whatis entries of man pages. (Tobias Hansen)



Changes from 5.1.0 to 5.1.1 (February 2012)
===========================================

The main developers were: Thomas Fjellstrom, Trent Gamblin, Matthew Leverton,
Elias Pschernig, Jon Rafkind, Peter Wang.

Ports:

-  Thomas Fjellstrom started an Android port.  Displays, keys and touch events
   work.

Core:

-  Make al_ref_cstr, al_ref_ustr and al_ref_buffer return const ALLEGRO_USTR*
   instead of just an ALLEGRO_USTR* (Paul Suntsov).

Graphics:

-  Fixed a bug in the OpenGL driver when drawing the backbuffer outside the
   clipping rectangle of the target bitmap.

Displays:

-  Fixed a problem with wrong window size when restoring a minimised window, in
   code that was added to support window constraints (jmasterx).

-  Set ALLEGRO_MINIMIZED display flag on Windows (Zac Evans).

-  Prevent a deadlock during display creation on X.

-  Fallback to the 'old' visual selection method on X instead of crashing
   if the 'new' visual selection doesn't work.

-  Implement XEmbed protocol.

-  Add hot plug display support on iOS (Airplay and wired.)

Input:

-  Use the same logic in set_mouse_xy for FULLSCREEN_WINDOW as was used for
   FULLSCREEN. (Max OS X)

Audio addons:

-  Add audio recording API with implementations for ALSA, AudioQueue,
   DirectSound8 and PulseAudio.

-  Improve code to check that DLL symbols are loaded in the acodec addon.
   The old method was hacky and broke under -O2 using GCC 4.6.1. (Paul Suntsov)

Image addon:

-  Some initial Android support.

-  Write libjpeg errors to Allegro log.

TTF addon:

-  Clear locked region so pixel borders aren't random garbage that can be seen
   sometimes with linear filtering on.

Video addon:

-  Added Ogg Theora/Vorbis backend.

-  Fixed a few warnings with ffmpeg version 0.7/0.8.

Build system:

-  Add monolith library option.

-  Detect the new MinGW cross-compiler in Ubuntu.

Examples:

-  Added new examples: ex_record, ex_record_name, ex_display_events.

-  ex_ogre3d: Make it work under Windows (AMCerasoli).

-  skater: small bug fixes, mouse support, add missing files for scrollers.

-  a5teroids: Support gamepads that report small non-zero values for sticks
   that are at rest.

-  Added pong example in Python.

Other:

-  Added index to HTML version of the reference manual.

-  Various documentation updates.

-  Other minor bug fixes.



Changes from 5.0.x to 5.1.0 (November 2011)
===========================================

The main developers were: Michał Cichoń, Trent Gamblin, Matthew Leverton,
Elias Pschernig, Paul Suntsov, Peter Wang.

Core:

-  Added al_register_assert_handler.

-  Added API for registering callbacks to intercept window messages on Windows.

Graphics:

-  Added bitmap conversion API: al_convert_bitmap, al_convert_bitmaps, with
   bitmap flag ALLEGRO_CONVERT_BITMAP and display option
   ALLEGRO_AUTO_CONVERT_BITMAPS.  Automatic bitmap conversion is enabled by
   default.

-  Added al_draw_tinted_scaled_rotated_bitmap_region.

-  Added new ALLEGRO_PIXEL_FORMAT_LUMINANCE_8 format.

-  Added a new bitmap flag ALLEGRO_KEEP_INDEX.

-  Separate bitmap loader flags from bitmap flags.  This adds three functions:
   al_load_bitmap_flags, al_load_bitmap_flags_f and al_load_bitmap_font_flags.

-  Add ALLEGRO_SRC_COLOR, ALLEGRO_DST_COLOR blending modes (Jon Rafkind).

-  Add ALLEGRO_INVERSE_SRC_COLOR and ALLEGRO_INVERSE_DST_COLOR blending modes.

-  Made al_compose_transform do a full 3d multiply.

-  Added al_get_current_inverse_transform, al_ortho_transform,
   al_get_projection_transform, al_set_projection_transform.

-  Added al_reset_clipping_rectangle convenience function.

-  Added al_get_d3d_texture_size.

-  Added al_d3d_set_release_callback and al_d3d_set_restore_callback for
   release/restoring user d3d objects.

Displays:

-  Added al_get_display_orientation.

-  Added a new display option ALLEGRO_SUPPORTED_ORIENTATIONS to specify the
   supported orientations (default is just portrait as before).

-  Added al_change_display_option function, initially only for
   ALLEGRO_SUPPORTED_ORIENTATIONS.

-  Add two new display events (only implemented on iOS right now).
   ALLEGRO_EVENT_DISPLAY_HALT_DRAWING tells the app to stop all drawing and
   ALLEGRO_EVENT_DISPLAY_RESUME_DRAWING tells it it can start drawing again.
   SWITCH_OUT/IN on iOS were redefined from "going into/out of background" to
   "going active/inactive".

-  Added the function al_acknowledge_drawing_halt.

-  Added window size constraint functions (jmasterx).

Input:

-  Add API related to touch input.  The implementation covers iDevices and
   Windows 7 drivers for touch input.  A number of mouse emulation modes
   are provided.

Events:

-  Add al_pause_event_queue, al_is_event_queue_paused.

Filesystem:

-  Added al_fopen_slice.

-  Added al_set_exe_name which allows overriding Allegro's idea of the path
   to the current executable.

Audio addon:

-  Add mixer gain property and functions.

-  Add a 'global' audio event source, generating some audio events from the
   Audio Queues driver: AUDIO_ROUTE_CHANGE, AUDIO_INTERRUPTION,
   AUDIO_END_INTERRUPTION.

Native dialogs addon:

-  Add menus to native dialogs (Windows and GTK).

Primitives addon:

-  Add simple polygon triangulator and polygon drawing routines.

-  Added al_draw_polyline and al_draw_polyline_ex.

-  Added al_draw_filled_pieslice and al_draw_pieslice.

-  Added al_draw_elliptical_arc.

TTF addon:

-  Added al_load_ttf_font_stretch functions (tobing).

Shader addon:

-  Added a shader addon and programmable pipeline support.

Video addon:

-  Added a video player addon, currently using ffmpeg.

iOS port:

-  Added al_iphone_override_screen_scale, al_iphone_get_screen_scale,
   al_iphone_set_statusbar_orientation, al_iphone_get_last_shake_time,
   al_iphone_get_battery_level, al_iphone_get_window, al_iphone_get_view.

Examples:

-  Added new example programs: ex_audio_chain, ex_loading_thread, ex_menu,
   ex_palette, ex_polygon, ex_shader, ex_window_constraints, ex_video.

-  Added skater demo ported from Allegro 4.4.



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