Allegro Changelog

What's new in Allegro 5.0.11

Jan 13, 2015
  • Core:
  • Fix OSX backend on OSX 10.10 (lordnoriyuki).
  • Audio addon:
  • Fix/avoid all sound examples freezing on OSX with the aqueue driver
  • Fix a deadlock in Pulseaudio driver.
  • Other:
  • Fix build warnings.
  • Improve documentation (syntax highlighting).

New in Allegro 5.1.9 Unstable (Jan 5, 2015)

  • 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’
  • 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.
  • NEW EXAMPLES:
  • ex_compressed, ex_font_multiline.
  • ex_dir: demonstrate ‘al_for_each_fs_entry’.
  • ex_haptic2: demonstrate hotplugging.

New in Allegro 5.1.8 Unstable (Jan 14, 2014)

  • 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 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)
  • Other:
  • More more minor bug fixes and changes.
  • Documentation updates.
  • Syntax highlight the C source examples and prototypes in the documentation.

New in Allegro 5.1.7 WIP (Oct 10, 2013)

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

New in Allegro 5.0.10 (Oct 10, 2013)

  • Core:
  • Register system interface even if no display driver available on Windows.
  • Displays:
  • 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).
  • 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).
  • Check availability of fullscreen button on window frame at run-time (OS X).
  • Graphics:
  • Add ALLEGRO_SRC_COLOR, ALLEGRO_DEST_COLOR, ALLEGRO_INVERSE_SRC_COLOR, ALLEGRO_INVERSE_DEST_COLOR blending modes (initially by Jon Rafkind and Elias Pschernig).
  • Let al_destroy_bitmap implicitly untarget the bitmap on the calling thread.
  • Use memory bitmap drawing when either bitmap is locked (OpenGL).
  • Add const qualifiers to glUniform*v() functions (Aaron Bolyard).
  • Input:
  • 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).
  • 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.
  • Fix looping in Ogg Vorbis stream (Todd Cope).
  • Enable the use of the unpatched DirectX SDK to build Allegro with MinGW.
  • Color addon:
  • Fix al_color_rgb_to_html blue component (Jeff Bernard).
  • Font addons:
  • Make al_init_ttf_addon return true for subsequent calls.
  • Primitives addon:
  • Disallow 3 component vectors for ALLEGRO_PRIM_TEX_COORD.
  • Check that the vertex declaration is valid before creating it.
  • Respect filter settings of textures in the D3D backend.
  • 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.
  • Other:
  • Minor fixes.
  • Various documentation updates.
  • A lot of code refactoring.

New in Allegro 5.1.6 (Mar 25, 2013)

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

New in Allegro 5.1.5 (Jan 14, 2013)

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

New in Allegro 5.1.4 (Nov 7, 2012)

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

New in Allegro 5.1.3 (Aug 13, 2012)

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

New in Allegro 5.1.1 (Feb 13, 2012)

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

New in Allegro 5.1.0 (Nov 21, 2011)

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

New in Allegro 5.0.4 (Aug 16, 2011)

  • Core:
  • Restore searching of directories on PATH for DLLs to load on Windows.
  • Fix crash on shutdown in headless Unix environment (no X11 display).
  • Change all instances of al_malloc + memset(0) to al_calloc.
  • Graphics:
  • Save memory in OpenGL case by freeing bitmap memory after uploading a texture. Use a temporary buffer when converting lock buffer back to native texture format.
  • Don't release or refresh memory or sub-bitmaps when D3D device gets lost/found.
  • Do not set D3D sub bitmaps to modified when first creating them. This can cause major slowdowns when creating a lot of sub-bitmaps and is likely responsible for slow font performance/startup when using D3D.
  • Fix incorrect number of display formats in D3D (tobing).
  • Honor ALLEGRO_VSYNC in the WGL driver.
  • Make titlebar icons the right size on Windows.
  • Fix typo causing weird results of al_get_monitor_info on X.
  • Don't setup FBO for a sub-bitmap whose parent is locked.
  • Specialise ADD/ONE/INVERSE_ALPHA blend mode software scanline drawers.
  • Toggle ALLEGRO_VIDEO_BITMAP flag off when creating a memory bitmap (both bits were previously on).
  • Add null bitmap assertion to al_clone_bitmap.
  • Input:
  • New system for mapping extended keys in Windows keyboard driver. Mainly for getting the same keycode for numpad keys independently of the state of Num Lock.
  • More reliable updating of the toggle modifiers in Windows keyboard driver (Num Lock, Caps Lock, and Scroll Lock).
  • Timers:
  • Fix race conditions when starting timers from different threads.
  • Audio addons:
  • Don't mix into a global temporary sample buffer, causing noise when two separate mixers are trying to run in parallel.
  • Make it possible to start/stop an audio stream which is attached to a voice.
  • ALSA voices could not be resumed after being stopped, because the update threads quit as soon as a voice is stopped.
  • OpenAL backend did not handle the case where _al_voice_update returns less than a full buffer.
  • Attempt to load FLAC and Vorbis DLLs only once to avoid Windows popping up too many error windows.
  • Native dialogs addon:
  • al_show_native_messagebox() on Windows: add UTF-8 support; show heading; show information icon by default.
  • TTF addon:
  • Reduce memory usage.
  • Don't make multiple passes over strings when computing text dimensions.
  • Build system:
  • Make sure static builds on Windows never use DLL_TLS (Zac Evans).
  • Made compilation possible with different combinations of Xinerama, XF86VidMode, or Randr being present.
  • cmake: Use find_path HINTS instead of PATHS in our DirectX SDK scripts.
  • cmake: Search for D3DX9 once instead of multiple times (John-Kim Murphy).
  • cmake: Find FLAC/Ogg/Vorbis libraries under the names generated by the official MSVC project files.
  • Include zlib.h explicitly for libpng 1.5.
  • Examples:
  • Add multisampling to SPEED example. Change examples to use ALLEGRO_SUGGEST for multisampling.
  • Include the font for speed.app under OSX within the bundle so it can be run by double clicking.
  • Use default blending/pre-multiplied alpha in ex_blend2.
  • Other:
  • Various documentation updates.
  • Fix minor memory leaks.
  • Bindings:
  • Better way to make the Python wrapper work with both Python 2 and 3.
  • Include Windows-specific functions in the Python wrapper.

New in Allegro 5.0.3 (May 22, 2011)

  • Input:
  • Fixed keyboard repeat for extended keys on Windows. Added
  • ALLEGRO_KEY_MENU. (torhu)
  • Make Delete key in Windows send KEY_CHAR event with unichar code
  • 127 (Peter Wang).
  • Filesystem:
  • al_remove_filename returned false even if successful (reported by
  • xpolife).
  • Graphics:
  • On OpenGL ES 1.1, glReadPixels can only read 4 byte pixels (Trent
  • Gamblin).
  • Font addon:
  • Fix a small memory leak when unregistering a handler with
  • al_register_font_loader (Trent Gamblin).
  • Primitives addon:
  • Fix assertion failures when drawing al_draw_ellipse, al_draw_arc,
  • al_draw_rounded_rectangle, al_draw_filled_rounded_rectangle at
  • very small scales (reported by Carl Olsson).
  • Native dialogs addon:
  • gtk: Fix truncated string if the final button contained a
  • non-ASCII character (Peter Wang).
  • Other:
  • Minor build fixes and documentation updates.

New in Allegro 5.0.2.1 (Apr 4, 2011)

  • Fix regression on Windows where the keyboard state was not updated unless the keyboard event source is registered to an event queue.

New in Allegro 5.0.2 (Apr 3, 2011)

  • Fix inverted mouse wheel on X11.
  • Make unicode field in KEY_CHAR events zero for Fn, arrow keys,
  • etc. for OS X (jmasterx, Peter Hull).
  • Support ALLEGRO_KEY_PAD_ENTER and detect left/right Alt and Ctrl
  • keys independently on Windows (torhu, Matthew Leverton).

New in Allegro 5.0.1 (Mar 15, 2011)

  • Graphics:
  • Automatically destroy framebuffer objects (FBOs) created for
  • non-memory bitmaps after a while. This solves the problem of
  • running out of resources if you set many different target bitmaps.
  • Make al_get_opengl_fbo attempt to create an FBO if one doesn't
  • exist.
  • Avoid very small textures in Direct3D.
  • Do not sync from memory when first creating/uploading a bitmap
  • (D3D).
  • Try to fix the problem of the taskbar appearing above fullscreen
  • windows on Windows.
  • Center the window after toggling fullscreen on Windows.
  • Input:
  • Support 4-way mouse-wheel and up to 32 mouse buttons in X11.
  • Audio addons:
  • Avoid buffer overrun while reading from vorbis files.
  • Added optional support for Tremor in place of libvorbis on any
  • platform.
  • Do not prefer DirectSound with OpenAL. This can cause problems and
  • also will override user config.
  • Play silence where needed in DirectSound driver.
  • TTF addon:
  • Do not hold bitmap drawing when changing target bitmap, which is
  • invalid and caused transformations to be misapplied.
  • Remove FBO for a cache bitmap once we are no longer adding glyphs
  • to it.
  • Build system:
  • Force "default" visibility of _al_mangled_main on OS X, otherwise
  • the dynamic linker cannot find the symbol if building with XCode4
  • (Owen Anderson and Peter Hull).
  • Generated pkg-config files should take into account LIB_SUFFIX
  • variable (Cristian Morales Vega).
  • Update allegro_font pkg-config file to not require
  • allegro_primitives.
  • Documentation:
  • Various documentation updates.
  • Add copy of DejaVu font licence.
  • Bindings:
  • Add allegro_main addon to the Python wrapper. Make the wrapper
  • work with Python 3, which has a different string representation.
  • Add parameter type checking for custom types.

New in Allegro 5.0.0 (Feb 7, 2011)

  • Color addon:
  • Use colour names from CSS. This is the same as the previous list but with all grey/gray alternatives.
  • Documentation:
  • Minor documentation updates.

New in Allegro 5.0.0 RC 5 (Feb 3, 2011)

  • System:
  • Load allegro5.cfg from the directory containing the executable, not the initial working directory.
  • Graphics:
  • Make al_get_monitor_info return success code.
  • Replace al_set_new_display_adaptor(-1) with a named constant ALLEGRO_DEFAULT_DISPLAY_ADAPTER.
  • Fix numerous bugs in X mode setting and multi monitor related code, and introduce new xrandr code.
  • Generate ALLEGRO_EVENT_MOUSE_LEAVE_DISPLAY when mouse leaves OS X window (Evert Glebbeek).
  • Hide OS X window during exiting fullscreen window mode, to prevent the hideous misaligned animation from showing.
  • Fix erroneous assertions in OpenGL backend.
  • Added a hack which makes OpenGL mode work under Wine for me (Elias Pschernig).
  • Add support for some al_get_display_options in D3D port.
  • Keyboard:
  • Don't send KEY_CHAR events for modifier and dead keys (with contributions from torhu).
  • Don't send KEY_DOWN events for non-physical key events.
  • osx: Allow unicode entry (single keypresses only).
  • x11: Set the keycode field in KEY_CHAR events to the code of the last key pressed, as stated in the documentation, even if the char is due to a compose sequence.
  • x11: Get rid of historic behaviour where the unicode field is always zero when Alt is held down.
  • Rename ALLEGRO_KEY_EQUALS_PAD to ALLEGRO_KEY_PAD_EQUALS for consistency.
  • Mouse:
  • Add al_grab_mouse and al_ungrab_mouse. Implemented on X11 and Windows.
  • Allow the user configure a key binding to toggle mouse grabbing on a window.
  • Support horizontal mouse wheel on Windows (jmasterx).
  • Calculate Y position for al_set_mouse_xy correctly in OS X windowed mode (X-G).
  • Use more appropriate CURSOR_LINK cursor on OS X (X-G).
  • Assign different button IDs for separate touches on iPhone (Michał Cichoń).
  • iphone: Remove fake mouse move events as they're unncessary and can cause problems with user input tracking.
  • Filesystem:
  • Clean up al_get_standard_path(): remove SYSTEM_DATA, SYSTEM_SETTINGS, PROGRAM paths; add RESOURCES and USER_DOCUMENTS paths. Use system API calls if possible.
  • Implement ALLEGRO_USER_DATA_PATH under Linux. Honor XDG_DATA/CONFIG_HOME environment variables.
  • Fix al_make_directory on Windows due to problems with calls to stat() with trailing slashes.
  • Native dialogs addon:
  • Use string arguments to al_create_native_file_dialog() and al_get_native_file_dialog_path() instead of ALLEGRO_PATH.
  • Enhance the Windows file selector (initial patch by Todd Cope):
  • Use Windows' folder selector for ALLEGRO_FILECHOOSER_FOLDER.
  • Implement patterns.
  • Display the title of the dialog that the user specified.
  • Primitives addon:
  • Fix changing the D3D blender state without updating the cached state.
  • TTF addon:
  • Align glyphs in ttf font sheets so as to work around problems with forced S3TC compression with some OpenGL drivers (Elias Pschernig).
  • Examples:
  • SPEED: add full screen flag, use standard paths for highscores and data.
  • Build system:
  • Check PulseAudio backend will compile before enabling support.
  • Give a louder warning if FLAC/Vorbis/DUMB compile tests fail.
  • Other:
  • Many leaks fixed on OS X.
  • Minor bug fixes and documentation updates.

New in Allegro 5.0.0 RC 4 (Jan 3, 2011)

  • Graphics:
  • d3d: Don't generate intermediate resize events during modal resize
  • loop.
  • Optimize D3D9 driver by caching blender state and scissor
  • rectangle so redundant calls to D3D9 functions are avoided (Micha≈Ç
  • Cicho≈Ñ).
  • gl: Use glGenerateMipmapEXT to generate mipmaps when FBOs are used.
  • x11: Don't restore display mode if another fullscreen display is
  • active.
  • Input:
  • iphone: Reverse button/axis events that were swapped at some point.
  • File I/O:
  • Change the way user code implements new ALLEGRO_FILE structures.
  • This adds al_create_file_handle and al_get_file_userdata.
  • Implement default ungetc behavior - used if the interface does not
  • supply its own.
  • Add al_fopen_interface.
  • Memfile addon:
  • Implement ungetc.
  • Add rw file modes.
  • Rename header to allegro_memfile.h.
  • Add documentation.
  • Image I/O addon:
  • Fix endian issues in TGA and Mac OS X image loaders.
  • Other:
  • Use _NSGetExecutablePath for
  • al_get_standard_path(ALLEGRO_EXENAME_PATH) on OS X (Jeff Connelly).
  • Minor bug fixes and documentation updates.

New in Allegro 5.0.0 RC 2 (Dec 6, 2010)

  • System:
  • Add al_is_system_installed and hide al_get_system_driver.
  • Prevent 'DLL hijacking' security issue on Windows.
  • Graphics:
  • Change to using premultiplied alpha by default. The new bitmap
  • flag ALLEGRO_NO_PREMULTIPLIED_ALPHA was added.
  • Change the value of ALLEGRO_VIDEO_BITMAP to non-zero.
  • Change al_get_opengl_version to return a packed integer.
  • Made al_get_opengl_version return an OpenGL ES version (if using
  • OpenGL ES) rather than an attempted estimate at a desktop GL
  • version.
  • Added function al_get_opengl_variant that returns either
  • ALLEGRO_DESKTOP_OPENGL or ALLEGRO_OPENGL_ES. Added documentation
  • for it.
  • Make al_have_opengl_extension return bool.
  • Fix OpenGL graphics mode height value on Windows.
  • Only try to create one Direct3D display at a time.
  • Make screensaver activate on Windows Vista and above unless
  • inhibited.
  • Avoid potential divide-by-zeroes when computing the refresh rate
  • in X11 video modes.
  • Events:
  • Delete an incorrect mutex destroy in al_unregister_event_source.
  • Input:
  • Revert the joystick driver used on OS X 10.4 to the
  • pre-hotplugging version, rather than one which contained an
  • earlier attempt at implementing hotplugging. Select the 10.4 or
  • greater joystick driver at runtime.
  • iPhone:
  • Added two iPhone-specific functions:
  • al_iphone_override_screen_scale and al_iphone_program_has_halted.
  • Image I/O addon:
  • Made the iPhone and OSX image loaders not try and correct colors
  • to some arbitrary color space, but instead use the values directly
  • from the image.
  • Native dialogs addon:
  • Tolerate null display in al_show_native_file_dialog on Windows.
  • Make GTK native dialog implementation only call GTK from a single
  • thread.
  • Define al_show_native_message_box to be usuable without installing
  • Allegro.
  • Primitives addon:
  • Make primitives addon compilable again without OpenGL.
  • Examples:
  • ex_ttf: Test the monochrome flag.
  • Work around problems with MSVC and UTF-8 string literals. ex_utf8
  • is now not built under MSVC.
  • Don't use WIN32 executable type on examples that require the
  • console (David Capello).
  • Other:
  • Minor bug fixes and documentation updates.

New in Allegro 5.0.0 RC 1 (Nov 15, 2010)

  • Graphics:
  • Make al_resize_display keep the original resolution (or change
  • back) if it can't set the users request, on Windows.
  • Do not emit ALLEGRO_DISPLAY_RESIZE events from the Windows and X11
  • display drivers when using al_resize_display.
  • [X11] Make al_get_num_display_modes and al_get_display_mode work
  • if the adapter is set to default. Right now there was no way to
  • query the modes of the default monitor.
  • [X11] Use _NET_WM_STATE_FULLSCREEN hint for "true" fullscreen
  • displays. Enable mouse grabbing in fullscreen modes.
  • Added ALLEGRO_EVENT_DISPLAY_ORIENTATION and implement it on iOS.
  • Dennis Busch fixed a problem with displays not showing up on the
  • primary display by default in some dual head setups, on Windows.
  • Increase the precision of texture coordinate deltas in the
  • software triangle renderer, from floats to doubles.
  • Remove al_get_frontbuffer(). It wasn't implemented anywhere.
  • Implement min/mag filter and mipmap flags for Direct3D.
  • Input:
  • Report correct initial mouse position if a display is created with
  • the mouse pointer inside, or if the mouse routines are installed
  • after a display is created (X11, Windows).
  • John Murphy fixed improperly mapped axes on the Windows joystick
  • driver.
  • Events:
  • Do not register user event sources with the destructor system as
  • it cannot work reliably. User event sources must be destroyed
  • manually.
  • Filesystem:
  • Make al_get_fs_entry_name and al_get_current_directory return
  • strings instead of ALLEGRO_PATH.
  • Make al_make_directory create parent directories as needed.
  • Fix al_create_fs_entry to not trim the root path "/" down to the
  • empty string with the stdio backend.
  • Path routines:
  • Remove al_make_path_absolute and replace it by al_rebase_path.
  • Remove undocumented behavior of setting a default organization
  • name of "allegro" for all apps.
  • Correctly return standard paths as directories on OS X.
  • Threads:
  • Rename al_wait_cond_timed to al_wait_cond_until to match
  • al_wait_cond_until.
  • Config routines:
  • Add a blank line between sections when writing out a config file.
  • Other core:
  • Move the Windows event loops back into the same thread as the D3D
  • event loop. It's a requirement of D3D, else you can get crashes as
  • I was when resetting the device (like tabbing away from a
  • fullscreen app).
  • Add some missing standard entries to the OS X menu bar (the
  • "hide", "hide others" and the window list, mainly).
  • Audio addon:
  • Automatically stop sample instances which point to a buffer of a
  • sample which is about to be destroyed with al_destroy_sample.
  • alsa: Resume properly after suspending.
  • Image I/O addon:
  • Make GDI+ support compile cleanly with the headers that come with
  • MinGW package w32api-3.15.
  • Speed up PNG and BMP saving, and NSImageFromAllegroBitmap loading.
  • TTF addon:
  • Add a flag for loading TTFs without anti-aliasing
  • (ALLEGRO_TTF_MONOCHROME).
  • PhysicsFS addon:
  • Make PhysFS implementation of al_get_current_directory return "/",
  • not NULL.
  • Primitives addon:
  • Fix several failed sub-bitmap related unit tests on Windows.
  • Made thick outlined triangles look nicer when the triangles are
  • very thin.
  • Add a debug-only check for primitives addon initialization to aid
  • in code portability.
  • Examples:
  • Added example demonstrating the effect of premultiplied alpha.
  • Make 'F' toggle fullscreen window in SPEED (in-game).
  • Minor improvements to the a5teroids demo.
  • Documentation:
  • Many documentation updates.
  • Add list of contributors and a readme for packagers.
  • Make make_doc tool build cleanly on MSVC, and work around a
  • problem with recent version of Pandoc on Windows.
  • Improve styling of PDF output.
  • Add generated man pages to archives.
  • Bindings:
  • Implemented array types in the Python wrapper.

New in Allegro 4.9.21 Unstable (Jul 19, 2010)

  • Graphics:
  • Fixed the mis-termed "blend color". There is no more color state.
  • al_set*_blender functions lose the color parameter.
  • Added 5 new bitmap drawing functions al_draw_tinted*_bitmap
  • with a color parameter. The parameter is used just like the
  • "blend color" before.
  • All text drawing functions gain a color parameter and use it
  • like they used the "blend color" before.
  • Primitive drawing functions previously sometimes (and
  • sometimes not) used the "blend color". Not any longer.
  • Make the current blending mode thread-local state instead of
  • per-display state.
  • Add explicit display arguments to functions which require a
  • display, but don't require the rendering context to be current.
  • Make al_set_target_bitmap change the current display as necessary.
  • al_set_target_bitmap(NULL) releases the rendering context.
  • Add al_set_target_backbuffer as a convenience.
  • Remove al_set_current_display.
  • Give each bitmap its own transformation, i.e. every bitmap has a
  • transformation, which is in effect when that bitmap is the target.
  • Remove sub-bitmap clip-to-parent restriction on create. Add
  • out-of-bounds blitting support to memory bitmaps.
  • Merge sub-bitmap and parent bitmap clipping; clip source bitmap to
  • (0,0)-(w,h); fix flipping to/from clipped bitmaps.
  • Made mouse cursors independent of displays. You may create cursors
  • without a display, and you may use a cursor with any display.
  • Rename al_{set,get}_current_video_adapter to *new_display_adapter
  • for consistency.
  • Move the new display video adapter and new window position to
  • thread-local state, like other new display parameters. Make
  • al_store_state also save those parameters with
  • ALLEGRO_STATE_NEW_DISPLAY_PARAMETERS.
  • Rename al_transform_transform to al_compose_transform. Switched
  • the order of parameters in al_compose_transform and
  • al_copy_transform to match the rest of the transform functions.
  • Made memory bitmap manipulation without a display possible
  • (again?).
  • Fixed window resizing in D3D driver. Simplify resize-postponing on
  • Windows.
  • Make al_create_display abort early when the new_display_adapter is
  • greater than the screen count (X11).
  • Added ALLEGRO_MINIMIZED flag to the X11 port.
  • Fixed OpenGL version string parsing (bug #3016654).
  • Other core:
  • Renamed al_install_timer to al_create_timer, and
  • al_uninstall_timer to al_destroy_timer.
  • Rename al_{get,set}_{appname,orgname} to *app_name and *org_name.
  • Fix assertion failure in al_create_mutex_recursive on Windows
  • (spoofle).
  • Primitives addon:
  • Made the D3D driver of the primitives addon work with multiple
  • displays. Also made it handle the display being destroyed properly.
  • Simplified shader recreating on thread destruction when using the
  • primitives addon with D3D.
  • Avoid double free when shutting down the primitives addon multiple
  • times.
  • Older Intel cards don't implement DrawIndexedPrimitiveUP
  • correctly. Altered the D3D code to work around that.
  • Audio addon:
  • Allow setting the DirectSound buffer size via allegro5.cfg.
  • Image addon:
  • Make GDI+ image loader work with MinGW.
  • Font addon:
  • Nicolas Martyanoff added al_get_font_descent/ascent functions
  • which query per-font properties. Previously it was necessary to
  • call al_get_text_dimensions (which now just reports the text
  • dimensions as it should).
  • Native dialogs addon:
  • Add text log window functions (GTK only for now).
  • Documentation:
  • Many updates to the reference manual.
  • Improve styling and add Allegro version to HTML pages.
  • Separated readme_a5.txt into multiple files, and hopefully improve
  • them.
  • Build system:
  • Remove INSTALL_PREFIX. Windows users can now use
  • CMAKE_INSTALL_PREFIX to set the install path.
  • Allow the user to place dependencies in a subdirectory "deps",
  • which will be automatically searched.
  • Examples:
  • Use text log windows in many examples.
  • Add ex_noframe: test bitmap manipulation without a display.
  • Bindings:
  • Update Python bindings.

New in Allegro 4.9.20 Unstable (May 26, 2010)

  • Implemented support for transformations for memory bitmaps.
  • Transformations now work properly when the target bitmap is a
  • sub-bitmap in OpenGL (still broken in D3D). Also fixed OpenGL
  • bitmap drawing in the same scenario (it used to always revert to
  • software drawing).
  • Use the memory drawers when the source bitmap is the backbuffer
  • with the rotated/scaled bitmaps.
  • Make al_put_pixel clip even if the bitmap is locked, which was the
  • reason why software primitives were not clipping.
  • Added al_put_blended_pixel, the blended version of al_put_pixel.
  • Sub bitmaps of sub bitmaps must be clipped to the first parent.
  • Don't clear the transformation when setting the target bitmap in
  • OpenGL.
  • Implemented ALLEGRO_NOFRAME and ALLEGRO_FULLSCREEN_WINDOW in WGL.
  • Set the ALLEGRO_DISPLAY->refresh_rate variable for fullscreen
  • modes under D3D.
  • Make d3d_clear return immediately if the display is in a lost
  • state.
  • Rewrote the function that reads the OpenGL version so it works for
  • previously unrecognised versions, and future versions.
  • Check for framebuffer extension on iPhone properly.
  • Fixed locking bugs on iPhone. allegro_ttf works now.

New in Allegro 4.9.19 Unstable (Apr 1, 2010)

  • Graphics:
  • Implemented support for transformations for memory bitmaps.
  • Transformations now work properly when the target bitmap is a
  • sub-bitmap in OpenGL (still broken in D3D). Also fixed OpenGL
  • bitmap drawing in the same scenario (it used to always revert to
  • software drawing).
  • Use the memory drawers when the source bitmap is the backbuffer
  • with the rotated/scaled bitmaps.
  • Make al_put_pixel clip even if the bitmap is locked, which was the
  • reason why software primitives were not clipping.
  • Added al_put_blended_pixel, the blended version of al_put_pixel.
  • Sub bitmaps of sub bitmaps must be clipped to the first parent.
  • Don't clear the transformation when setting the target bitmap in
  • OpenGL.
  • Implemented ALLEGRO_NOFRAME and ALLEGRO_FULLSCREEN_WINDOW in WGL.
  • Set the ALLEGRO_DISPLAY->refresh_rate variable for fullscreen
  • modes under D3D.
  • Make d3d_clear return immediately if the display is in a lost
  • state.
  • Rewrote the function that reads the OpenGL version so it works for
  • previously unrecognised versions, and future versions.
  • Check for framebuffer extension on iPhone properly.
  • Fixed locking bugs on iPhone. allegro_ttf works now.
  • Input:
  • Removed al_set_mouse_range.
  • Don't call al_get_mouse_state if the mouse driver isn't installed
  • (Windows).
  • Send events even when the mouse cursor leaves the window, while
  • any buttons are held down (Windows and Mac OS X; X11 already did
  • this).
  • Allow mouse presses and accelerometer data simultaneously. (iPhone)
  • File I/O:
  • Optimise al_fread{16,32}* by using only one call to al_fread each.
  • Optimise al_fgetc() for stdio backend.
  • Path:
  • Fix an infinite loop in _find_executable_file when searching for
  • the executable on the PATH (Alan Coopersmith).
  • Primitives addon:
  • Made the software driver for the primitives addon check for
  • blending properly. Also, fixed two line shaders.
  • Made the D3D driver thread-safe. The whole addon should be
  • thread-safe now.
  • The addon now officially supports 3D vertices, even though the
  • software component can't draw them yet.
  • Changed the way the primitives addon handles the OpenGL state
  • (fixes a few bugs and makes life easier for raw-OpenGL people)
  • Image addon:
  • Optimized BMP, PCX, TGA loaders.
  • Fix loading 16-bit BMP files.
  • Fix loading grayscale TGA images.
  • Nial Giacomelli fixed a bug where images could be corrupt using
  • the native Apple image loader (iPhone).
  • Audio addon:
  • Add al_is_audio_installed.
  • Fix al_attach_sample_instance_to_mixer for int16 mixers.
  • Implement attaching an INT16 mixer to another INT16 mixer.
  • Handle conversion when an INT16 mixer is attached to a UINT16
  • voice.
  • Build system:
  • Add an option to disable Apple native image loader (iPhone and OS
  • X).
  • Add ttf addon target to iPhone xcode project.

New in Allegro 4.9.10.1 Unstable (May 5, 2009)

  • Fixed uses of snprintf on MSVC.
  • Disabled ex_curl on Windows as it requires Winsock.

New in Allegro 4.9.9.1 (Mar 25, 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.

New in Allegro 4.9.9 (Mar 23, 2009)

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

New in Allegro 4.9.8 (Feb 9, 2009)

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

New in Allegro 4.9.7.1 (Dec 9, 2008)

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

New in Allegro 4.9.7 (Dec 8, 2008)

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

New in Allegro 4.9.6 (Nov 3, 2008)

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

New in Allegro 4.9.5 (Oct 20, 2008)

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