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

# Changes from 5.1.13 to 5.1.13.1 (February 2016)

The main developers this time were: SiegeLord.

Image addon:

- Fix regression in bitmap loading when compiled under MSVC.

# Changes from 5.1.12 to 5.1.13 (January 2016)

The main developers this time were: Julian Smythe, Elias Pschernig and Peter Hull.

Graphics:

- Add `al_get_opengl_program_object` (SiegeLord).

Input:

- Fix spurious triggering of the mouse grab key when it wasn’t otherwise set (SiegeLord).

Android port:

- Avoid multiple HALT/RESUME events on Android (Max Savenkov).

- Implement `al_get_monitor_info` for Android (Reuben Bell).

- Fix Android crash on file access.

- Implement ALLEGRO_FULLSCREEN_WINDOW on Android.

- Fix crash if display is destroyed while the app is switched out.

- Add support for x86_64 Android.

- Add `al_android_set_apk_fs_interface`.

Linux port:

- Allow using OpenGL ES in X11.

- Fix the initial display size not being correct sometimes (SiegeLord).

- Fix a race condition in the XInput joystick driver (Trent Gamblin).

OSX port:

- Fix various memory leaks.

- Fix `al_set_window_title`.

- Fix a lot of decrepid and deprecated code.

- Fix single buffer flip display (SiegeLord).

Windows port:

- Fix Windows UNC path handling.

- Fix clipboard nul-termination issues (Trent Gamblin).

- Set the window title immediately upon window creation (SiegeLord).

Build system:

- Define CMAKE_FIND_ROOT_PATH for i686-w64-mingw32 cross compiler (Martijn van Iersel).

- Allow building with older CMakes again (SiegeLord).

- Do not catche compile tests’ failure (Bruce Pascoe).

- Add a way to statically link the runtime with MinGW (SiegeLord).

- Don’t link the MSVC C runtime at all when requesting a static runtime and building a static library (SiegeLord).

Documentation:

- Add links to the source code of the definitions of the most API entries.

- Fix sidebar generation with modern Pandoc (Boris Carvajal).

Python:

- Fix ordering issue for HAPTIC* structs.

- Fix missing ALLEGRO_PRIM_ATTR_NUM.

Other:

- Add a ‘none’ debug level to turn off logging entirely in debug builds (SiegeLord).

- Reconfigure logging after the configuration files are loaded (SiegeLord).

- Fix al_set_new_window_title() off-by-1 (Bruce Pascoe).

- Don’t call al_get_time() before system is installed (SiegeLord).

Audio addon:

- Add `al_get_default_voice` and `al_set_default_voice`.

- Flush the pulse audio stream rather than draining it, fixing some audio breaks (SiegeLord).

- Fill audio stream fragments with silence in the audio addon rather than in the acodec addon, fixing some garbage output (SiegeLord).

- Fix possible deadlock when destroying audio streams (SiegeLord).

Acodec addon:

- Don’t read past the audio chunk’s end when streaming wav files (SiegeLord).

- Turn off allegro_acodec dynamic loading by default, fixing a common footgun (Bruce Pascoe).

Image addon:

- An enormous amount of work supporting reading of esoteric (and not) BMP format variants (palletted, GIMP-style, etc). New tests were added using the manual bmp suites.

Native dialog addon:

- Update code to work with modern OSX versions.

- Clean up menu handling on OSX.

# Changes from 5.1.11 to 5.1.12 (September 2015)

The main developers this time were: Bruce Pascoe, Beoran, Elias Pschernig, SiegeLord, Trent Gamblin.

Graphics:

- Add `al_set_blend_color` and `al_set_blender`, for additional blending modes.

- Add `ALLEGRO_MAXIMIZED` display flag.

- Add `al_reparent_bitmap`, `al_get_bitmap_x/y`. This allows changing the offset of a sub-bitmap.

- Make `ALLEGRO_PIXEL_FORMAT_ANY_NO_ALPHA` actually pick a format without an alpha channel.

- Add `al_premul_rgba` and `al_premul_rgba_f` convenience functions for dealing with pre-multiplied alpha blending mode.

Input:

- Fix key auto-repeat on modern X11 versions.

- Fix mis-detection of some joysticks on Android.

Android port:

- Fix a crash when minimizing the app before Allegro has been initialized.

iOS port:

Linux port:

- Add `al_get_x_window_id` (Robert MacGregor)

OSX port:

- Fix some deprecated API usage.

Windows port:

- Fix a dangling pointer issue resulting in crashes when resizing on Windows

Build system:

- Build with multiple processors when using MSVC.

- Make XInput2/touch input optional on Linux.

Documentation:

- Various documentation improvements.

- Fix some badly formatted flags (Rodolfo Lam).

Other:

- Allow injecting Allegro events into event queses using `al_emit_user_event` (Ryan Roden-Corrent)

- Add `al_set_new_window_title` and `al_get_new_window_title`.

- Add `al_get_clipboard_text`, `al_set_clipboard_text` and `al_clipboard_has_text`.

- Add `al_resume_timer` (Ryan Roden-Corrent).

- Add `al_get_cpu_count` and `al_get_ram_size`.

Audio addon:

- Add multiple voice support for the AQueue driver.

- Fix a bug when `al_restore_default_mixer` was called multiple times.

Color addon:

Font addon:

- Add `al_draw_glyph`, `al_get_glyph_width`, `al_get_glyph_dimensions` and `al_get_glyph_advance`. These functions are useful when additional control is needed when drawing text.

- Add `al_set_fallback_font`.

Image addon:

- Add `al_register_bitmap_identifier`, `al_identify_bitmap` and `al_identify_bitmap_f`. This allows detecting the bitmap type by looking at the initial few bytes in the file rather than relying solely on the extension.

- Allow saving bitmaps with uppercase extensions (Daniel).

Native dialog addon:

- Fix crashes when creating menus with sub-menus (Todd Cope).

Video addon:

- Allow using both Ffmpeg and Theora backends simultaneously.

- Reduce latency of `al_get_video_frame` for the Theora backend.

- Make the Theora backend send the `ALLEGRO_VIDEO_FRAME_SHOW` events.

- Rename `al_get_video_width/height` to `al_get_video_scaled_width/height` which now return the aspect corrected size of the video frame.

- Rename `al_pause_video/al_is_video_paused` to `al_get/set_video_playing`.

- Add `ALLEGRO_EVENT_VIDEO_FINISHED` event.

- Remove `ALLEGRO_EVENT_VIDEO_FRAME_ALLOC` event.

- Remove `al_get_video_aspect_ratio`.

Examples:

- New examples: ex_reparent, ex_inject_events, ex_clipboard, ex_cpu, ex_timer_pause.

# Changes from 5.1.10 to 5.1.11 (June 2015)

The main developers this time were: SiegeLord, Trent Gamblin.

Input:

- Rename `al_get_haptic_active` to `al_is_haptic_active` for consistency.

- Rename `al_get_num_haptic_effects` to `al_get_max_haptic_effects`.

- Implement the missing `al_is_touch_input_haptic` function.

- Move the loops parameter of `al_upload_and_play_haptic_effect` after the id to be consistent with `al_play_haptic_effect`.

OSX port:

- Fix mouse warping in OSX.

- Add retina display support to OSX.

Windows port:

- Fix querying display modes before creating a display.

- Make the Windows joystick implementation more fault tolerant.

- Initialize display callbacks when creating faux fullscreen (Edgar Reynaldo).

Build system:

- Fix the conditional compilation of sal.h (Edgar Reynaldo).

- Don’t look at WinSDK when we’re not on MSVC, fixing MinGW builds when MSVC is installed as well.

- Fix the static FLAC compile tests on Android and Windows.

- Make the OSX frameworks install in the proper location again.

- Add `WANT_STATIC_RUNTIME` CMake build option (currently MSVC-only).

Documentation:

- Various documentation improvements.

Other:

- Return a valid configuration from `al_get_system_config` before Allegro is installed. This allows you to override the various configuration options without using an on-disk `allegro5.cfg`.

- Compile in the logging support in release modes by default. Now logging can be turned on in release builds without recompiling the program by editing the system configuration.

- Detect file-overruns when saving configuration files (Bruce Pascoe).

Color addon:

- When converting from YUV to RGB, clamp the returned values between 0 and 1.

Video addon:

- Use an enum in place of magic numbers for `al_get_video_position` constants.

# Changes from 5.1.9 to 5.1.10 (May 2015)

The main developers this time were: SiegeLord, Elias Pschernig, Trent Gamblin, Polybios.

Input:

- Add `al_set_mouse_wheel_precision` and `al_get_mouse_wheel_precision`.

Graphics:

- Added `al_transform_coordinates_3d`.

- Added `al_build_camera_transform`.

- Make the projection transform a bitmap local state. This removes `al_set_projection_transform` and `al_get_projection_transform`, and replaces them with `al_use_projection_transform` and `al_get_current_projection_transform` with similar semantics to the regular transforms.

OSX port:

- Improved joystick axis layouts on Mac OS X, and added support for some dpards (Max Savenkov).

X11 port:

- Fix some memory leaks (ElectricSolstice).

- Make the XInput2 check more accurate (we require a specific version).

Windows port:

- Remove taskbar hiding on Windows.

- Fix high precision mice on Windows.

- Fix some D3D conflicts with the OpenGL backend.

- Remove the prohibition of building OpenGL-only DLLs.

- Added LRESULT argument to WindowProc callback, fixing `al_win_add_window_callback` for some event types (Aaron Bolyard).

Android port:

- Fix some memory leaks.

- Make it possible to specify the Android target during building.

iOS port:

- Add an XCode project to help build Allegro when CMake support fails.

- Restore the CMake support.

- Makes the examples run on the iOS simulator out of the box.

- Various small fixes (Trent Gamblin, jmasterx).

- Remove `al_iphone_get_last_shake_time` and a`l_iphone_get_battery_level`.

- Hack around iOS not creating mipmaps (jmasterx).

- If the supported orientation is `ALLEGRO_DISPLAY_ORIENTATION_UNKNOWN`, default to supporting all orientations.

- Get Cosmic Protector to compile again.

Build system:

- Revamp the detection of DirectX dependencies. Now it should work out of the box for at least MSVC and mingw-w64.

- Fix GDIPlus finding script (pkrcel).

- Bump the minimum version of CMake to 2.8.5.

Documentation:

- Many documentation improvements, as always (special thanks to Polybios).

- Make the PDF output prettier with better fonts and an up-to-date version number.

- Make the Javascript search for online documentation support partial matches.

- Make [section] links work in HTML.

- Allow the docs to have more than 1024 entries (Allegro is getting huge!).

Other:

- Make the test driver a little more resistant to failure.

- Various fixes to the experimental SDL backend.

- Update the CONTRIBUTORS.txt.

Audio addon:

- Fix deadlock when destroying an audio stream soon after its creation.

- Add VOC file support (pkrcel).

- Disable processing of the XM zero-speed event.

- Disable processing of module loop points if `ALLEGRO_PLAYMODE_ONCE` is set.

- Fix a buffer overflow bug.

Image addon:

- Fix loading of indexed + transparent PNGs with the libpng backend.

Dialog addon:

- Fix some style issues with the Windows file dialog.

- Fix a bug with multiple filenames with the Windows file dialog.

- Change the semantics of the patterns in `al_create_native_file_dialog` to support future expansion of the patterns to support both AND and OR style filtering.

- Make the GTK file selection dialog look like it’s from 2004 (as opposed to mid-1990s).

TTF addon:

- Fix some warnings.

- Make the page size dynamic, allowing for fonts with up to 8192x8192 glyphs by default.

Examples:

- New examples: ex_camera, ex_projection2.

# Changes from 5.1.8 to 5.1.9 (January 2015)

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

Core:

- Fix OSX backend on OSX 10.10 (lordnoriyuki).

- Simplify how sub-bitmaps interact with their parent bitmaps. You can now destroy a sub-bitmap at any time (not only before the parent is destroyed). Additionally, when the parent is converted using `al_convert_bitmap`, all the sub-bitmaps are also automatically converted.

- Switch to using unicode Win32 (e.g. this fixes using `al_set_window_title` with unicode strings).

- Add some Linux WM hints so make Allegro windows work more smoothly (especially with Unity).

Filesystem:

- Add `al_fprintf` (DanielH and Tobias Scheuer).

- Add `al_for_each_fs_entry`, a convenience function that helps enumerating the contents of a directory more easily using a callback function (Beoran).

- Fix for `al_get_standard_path` with Unicode (vkensou).

Input:

- Add X11 touch driver (Ryan Gumbs).

- Emulate mouse pressure for backends that don’t support pressure.

- Added Windows haptics driver, XInput joystick driver (Beoran).

- Fix OSX joystick deinitialization.

Graphics:

- Add block compression pixel formats (ALLEGRO_PIXEL_FORMAT_COMPRESSED_RGBA_DXT1/DXT3/DXT5) for compressed video bitmaps. This includes an API to fetch compressed block size (`al_get_pixel_block_width/height/size`) as well as API to load and unload compressed bitmap data without paying a runtime compression cost (`al_lock_bitmap_blocked`). Unfortunately, due to patent concerns this last feature is disabled for OpenGL (if you thinks those concerns don’t apply to you, you can enable it by passing `-DWANT_OPENGL_S3TC_LOCKING=1` to cmake).

- Make real fullscreen modes work on OS X again. May not be perfect still. (thanks to SDL).

Shaders:

- Don’t clobber the 0’th texture unit in OpenGL and Direct3D. This simplifies working with shaders.

Android port:

- Bump minimum Android API level from 10 to 12 (aka version 3.1).

- Add controller support to the Android port. An accelerometer ‘joystick’ is still the first joystick. Supports two analog sticks and 10 buttons (A B X Y L1 R1 DPAD_L DPAD_R DPAD_U DPAD_D). Supports hotplugging and theoretically multiple joysticks (needs testing).

- Set correct orientation at startup on Android (thanks to Aikei_c).

Build system:

- Various CMake fixes.

Other:

- Add Travis and AppVeyor continuous integration support.

- Fix a lot of memory leaks.

- Many documentation improvements.

Audio addon:

- Disallow attaching a mixer to itself.

- Fix uni- and bi-directional looping of zero-length samples.

- Fix/avoid all sound examples freezing on OSX with the aqueue driver.

Image addon:

- Add functionality to load Direct Draw Surface files (.dds). Only compressed pixel formats are supported (DXT1, DXT3 and DXT5).

Dialog addon:

- Fix native file dialog default paths on Windows (Edgar Reynaldo).

- Fix unintended behaviour in `al_set_menu_item_flags` (Malcolm Harrow).

- Fix some bugs with native menus in OSX.

Video addon:

- Fix for now undefined AVCODEC_MAX_AUDIO_FRAME_SIZE (Dennis Busch).

TTF addon:

- Fix a crashing bug in the TTF addon.

- Make `al_load_ttf_font_stretch` return NULL if invalid width/height are passed.

Font addon:

- Add multi line text output for the font addon (`al_draw_multiline_text`, `al_draw_multiline_textf` and `al_draw_multiline_ustr`).

Primitives addon:

- Fix some sharp-angle polyline drawing bugs.

Examples:

- New examples: ex_compressed, ex_font_multiline.

- ex_dir: demonstrate `al_for_each_fs_entry`.

- ex_haptic2: demonstrate hotplugging.

# 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.