Allegro 5.2.8
SiegeLord

{"name":"cKWl0K2.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/3\/930f6ed6769e42e81579aaef63729716.png","w":256,"h":256,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/3\/930f6ed6769e42e81579aaef63729716"}cKWl0K2.png

It finally happened... again. Allegro has a new version, with fewer known bugs and more unknown bugs.

You can grab the new version here with Windows binaries available. OSX binaries and Ubuntu PPA will be updated eventually.

Changes from 5.2.7 to 5.2.8 (June 2022)

The main developers this time were: SiegeLord, Elias Pschernig, Sebastian Krzyszkowiak, Julian Smythe.

Build system

- Add a configuration summary. Currently this mostly reports the addon features.

- Fix build failure with sanitizers enabled.

- Remove -Wdeclaration-after-statement, MSVC had support for this for a while now.

- Bump minimum CMake version to 3.0.

Core

- Add al_fopen_slice mode to prevent seek on close (Karl Robillard).

- Allow configuring bitmap wrapping via al_set_new_bitmap_wrap.

Graphics

- Reject creating bitmaps with negative width or height (Peter Hull).

- Add a minimal shader implementation for GLSL. Minimal shader supports fewer features, but is faster (Issue #1120). Select it via the _MINIMAL suffix to the shader platforms.

Emscripten

- Improve emscripten instructions for building demos (Connor Clark).

- Fix usage of SDL_Init for emscripten (Issue #1322) (Connor Clark).

OSX

- Fix a few thread-related crashes.

- Don't use -flat_namespace in LINK_FLAGS (danielnachun).

- Make al_get/set_window_position work on Retina displays

Windows

- Fix flickering when creating multisampling displays under DirectX.

- Fix multisampling selection on Windows with OpenGL.

- Fixed a bug which freezes and crashes the window in Windows OpenGL (HerrNamenlos123).

- Allow specifying shader model 3_0 for HLSL shaders (Issue #1154).

SDL

- Ignore touch events from indirect touch devices.

- Use SDL_PeepEvents for event handling, to improve performance.

- Improve joysticks support (Issue #1326) (Connor Clark).

- Fix mouse axis setter (Connor Clark).

Linux

- Use clock_gettime with CLOCK_MONOTONIC instead of gettimeofday (check-switch-26).

Android

- Update Gradle to 5.0.

Audio addon

- Add ALLEGRO_PLAYMODE_LOOP_ONCE (Issue #1309).

- Add al_play_audio_stream, a 'simple' API endpoint for audio stream playback.

Acodec addon

- Fix Vorbis/Opus support under MSVC + Clang.

- Add audio identification / al_identify_sample.

- Use regular seeking for Ogg streams. The old one did cross-fades, causing unexpected behavior in certain cases (Issue #1310).

- Enable looping for modules.

Audio addon

- Allow identifying and listing audio devices via new API: al_get_num_audio_output_devices, al_get_audio_output_device, al_get_audio_device_name (Aldrik Ramaekers).

Color addon

- Add linear and oklab color spaces to the color addon.

Font addon

- Fix declaration of al_draw_multiline_textf() as a PRINTFUNC (check-switch-26).

Image addon

- Prevent RLE data in corrupt .tga from overflowing the buffer (Peter Hull).

- PCX loader validation (Peter Hull).

- Windows BMP - Make more robust to crashing (Peter Hull).

- Fix DDS compressed image loading when image dimensions are not multiple of block size (check-switch-26).

Native Dialog addon

- Fix native dialogs addon compatibility with older GTK+ versions
(Andrew Kravchuk).

TTF addon

- Fixed TTF rendering when using transforms (check-switch-26).

PhysFS addon

- Fix incorrect error handling in PHYSFS_close (j-w-c-b).

Video addon

- Allow identifying video files via a magic number, exposed via al_identify_video (Issue #1262).

- Fix al_is_video_addon_initalized (Jayson).

Documentation

- Document some reasonable defaults for al_create_mixer`/`al_create_voice.

- Refactor the audio docs to highlight the simple API better.

Misc

- Fix a few data race issues, in an effort to fix ex_threads crashes on Linux.

Examples

- Allow exiting from ex_audio_timer (BillKek)

- Add the Allegro 4 "shooter" demo.

- Fix ex_threads crash under D3D.

- Add ex_audio_devices.

- Update ex_palette to build with Emscripten (Issue #1318).

- Improve ex_stream_seek.

- Improve ex_windows.

SHA256 SUMS

d730cba5b2c445cd1a514c93beaa5dcd1038ddd8d988df1b06e69e669815b2d8  allegro-5.2.8.0.7z
089fcbfab0543caa282cd61bd364793d0929876e3d2bf629380ae77b014e4aa4  allegro-5.2.8.0.tar.gz
db4b07f97b89ad40617d65594430e9df78b050f0fa37e387e1dce833f43f5b6c  allegro-5.2.8.0.zip
d05675d3f7604646aa321899579b08a1d80dea0f1c4f0f0c58717b390665c43b  Allegro.5.2.8.nupkg
a25d9c3934f3a896a69eead38a816819f40fc1cd9b0cc950e306dbc35373ca35  AllegroDeps.1.13.0.nupkg
371084cbed4459f4f0b7feec5ee98c062757542439fe3ee2c0ca459a9226b9f0  allegro_deps-i686-w64-mingw32-gcc-12.1.0-posix-dwarf-1.13.0.zip
590d091f1300b88b144748d3ec0c63b133a6216f7d0c3c004dc2c8fb6ae97c5c  allegro_deps-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-1.13.0.zip
93c58a3fa3179395347a6e4baa15d200730c54180a24e624c2e8ba8e0057cce8  allegro-i686-w64-mingw32-gcc-12.1.0-posix-dwarf-dynamic-5.2.8.0.zip
c5c1511bf8e9782028fe7cf17d9feb11829795b7a9fbec9667315a100d96901a  allegro-i686-w64-mingw32-gcc-12.1.0-posix-dwarf-static-5.2.8.0.zip
e89f4daf5fa27a48bb183e4475a1993fb0fe6c81acd40d3c887f5ac12f3fe576  allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-dynamic-5.2.8.0.zip
1a9d48ea027cdf646cc9643245a8c44618dbc16f8f76dca0651c1f6dd9b0cf33  allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-static-5.2.8.0.zip

Peter Hull

Congratulations SL and all the contributors!

jamdesalles

como limpar o buffer de teclado no allegro 5 ????

StanEd

Thank you for you continuing efforts :)

GullRaDriel

Thanks for the great job !

BTW I would love to ask questions to Connor Clark about empscriptem ^^

amarillion

Great, thanks for the update! I'll start updating the docker build-envs as well.

SiegeLord

BTW I would love to ask questions to Connor Clark about empscriptem ^^

You can read about emscripten in the README_sdl.txt file: https://github.com/liballeg/allegro5/blob/master/README_sdl.txt#L30

Chris Katko

Is Emscripten the reason there is an SDL version of Allegro? Because Allegro... using SDL... sounds super odd and redundant otherwise.

SiegeLord

SDL backend was added to support platforms Allegro doesn't support natively, Emscripten being a prominent one.

GullRaDriel

Thanks for the informations

Chris Katko

As always, thanks for the hard work!

Peter Hull

Has anyone asked ML to put the news on the front page?
Also I can't figure out what is drawn in the Elephant's thought bubble, what is it?

MiquelFire

Should be 528. I'm assuming the image was made with Dall-E (or Dall-E light at least)

Mark Oates

Also I can't figure out what is drawn in the Elephant's thought bubble, what is it?

My guess too.

I'm assuming the image was made with Dall-E

AIs have trouble generating text and text characters for now, which is probably why it's so weird looking.

Chris Katko

off topic but Dall-E honestly scares me. It will no doubt have tons of good uses however it's much much much closer to the nuclear age of pictures--there's no going back once anyone can make a picture look like anything with very little effort (as opposed to employing professional artists who have spend literally decades to be able to draw convincingly). There's obvious sicko things like child pedo stuff. But also political misinformation. Hateful pictures of people "give me 1 million pictures of obama + monkey". Imagine Dall-E being used to make Event Horizon torture pictures, or 90's era "disgusting shocking internet photos" but there's no limit of "I had to take or make a photo" anymore.

Edgar Reynaldo

Way to go dev team!

Edit
Do the 32 bit binaries released by SiegeLord work on XP? Does MSYS2 work on XP?

SiegeLord

Should be 528. I'm assuming the image was made with Dall-E (or Dall-E light at least)

I used Dall-E mini to create two images, one of the yellow elephant with the thought bubble and another with the numbers, and then I combined them myself. It really struggled with the numbers.

Do the 32 bit binaries released by SiegeLord work on XP? Does MSYS2 work on XP?

Good question... I don't know.

Edgar Reynaldo
SiegeLord said:

Do the 32 bit binaries released by SiegeLord work on XP? Does MSYS2 work on XP?

Good question... I don't know.

I'll try testing on my XP machine.

amarillion

It's a minor thing but I just noticed that if I build with:

cmake -DCMAKE_BUILD_TYPE=Debug -DWANT_EXAMPLES=off

I get the following build error:

-- Configuring done
CMake Error at tests/CMakeLists.txt:72 (add_dependencies):
  The dependency target "copy_example_data" of target "test_driver" does not
  exist.

SiegeLord

Thanks, fixed in https://github.com/liballeg/allegro5/commit/d25c4cff7621db614e5236a1646f5d76309ca73f.

Not really worth back-porting though, but you could manually patch it if you want.

Niunio

Seems that threads are still buggy. ex_threads just blocks my XWindow terminal in Xubuntu (20.04.4) and I have to hard-reboot the computer (the small button in the box that resets the CPU). ex_threads2 seems to work but I'm not sure if it does as intended.

Also, ex_palette seems to use the wrong colors. Do you see the gray lines?

https://www.allegro.cc/files/attachment/613220(Attached image, don't know why it doesn't allow me to show here)

I would say also that Shooter's explosions don't have transparency and makes things weird.

I've test most of the other examples and they seems to work. The new ones are pretty cool.

Edgar Reynaldo

ex_threads hasn't worked on Windows with DX for a decade or so. There's a race condition in creating displays.

That said, I don't think there is anything wrong with Allegro's threads. I use them all the time and no problems.

EDIT
I'm a little slow lately, but given time I will make some 32 bit XP binaries and 64 bit binaries for dynamic and static debug and release libraries for Allegro and Eagle 0.8.5 and all dependencies along with source packages and all examples and CHM docs if I can get them fixed, the generation process somehow produces mistakes.

EDIT2
Binaries for Allegro and Eagle by TINS 2022. Ya know, feature creep.

Niunio

ex_threads hasn't worked on Windows with DX for a decade or so. There's a race condition in creating displays.

And also on Linux. It should be fixed or removed, then. It's confusing.

Quote:

That said, I don't think there is anything wrong with Allegro's threads. I use them all the time and no problems.

Then I should fix/rewrite the Pascal example or something...

Quote:

(...) I will make some 32 bit XP binaries and 64 bit binaries for dynamic and static debug and release libraries for Allegro (...)

I'm interested in such binaries. Not only for debug, but also for release. This way I can include them with my Allego.pas wrapper (or tell users how to get them).

Edgar Reynaldo

What requirements does your allegro.pas wrapper have?

Niunio

A modern Pascal compiler (that is Delphi or Free Pascal) running on Windows (XP and up) or Linux. Apple computers should work as well but I didn't test and compilation should throw a custom error message telling it wasn't tested, but you can remove it easily from sources.

Sorry, I miss understood.

It needs nothing special. Just the DLL files (both Monolith and no-Monolith). It doesn't need the linkable libraries, even. If they're both 32 & 64bits ones, from WinXP up, then better (it will make it runnable on Linux+Wine more easy).

Mark Oates

Are there any future plans for the new audio devices? For example, activating/deactivating devices (or enabling/composing multiple devices to play as a single "virtual" audio device)?

Niunio

I've done some tests and there's something wrong with the thread code, specifically with the MUTEX (stack overflow and Access violation). I suspect it is similar to the bug in the Allegro4 3D textured polygon renderer, that worked on C but failed in Pascal due to use the wrong data type. Not too serious as Pascal's threads work and seems compatible with Allegro but you should take a look (ask me if you need more information).

Edgar Reynaldo
Niunio said:

I've done some tests and there's something wrong with the thread code, specifically with the MUTEX (stack overflow and Access violation). I suspect it is similar to the bug in the Allegro4 3D textured polygon renderer, that worked on C but failed in Pascal due to use the wrong data type. Not too serious as Pascal's threads work and seems compatible with Allegro but you should take a look (ask me if you need more information).

Which platform are you running on Niunio? Try to be more specific, and reproduce it simply if possible.

There was a deadlock in the logging code, but that has been fixed.

Check for unmatched lock/unlock pairs, dangling pointers, etc....

Niunio

Which platform are you running on Niunio? Try to be more specific, and reproduce it simply if possible.

I'm on Xubuntu 20.04.4. I would try to build the minimal example, but I have this at the moment. It is a bit simpler than the original ex_threads2 example.

Edgar Reynaldo

I'll build 64 bit binaries here before TINS starts, sometime tonight I'll upload them. 32 bit will have to wait a few days for XP support.

Do you just want the newest gcc Niunio? Or do you care which version of gcc I use?

EDIT
Got delayed with TINS and all. A few more days.

EDIT2
SiegeLord, Niunio - here is the old crash in ex_threads using D3D :

https://www.allegro.cc/forums/thread/616214/1021958#target

I came up with possible fixes, but never got around to a PR.

EDIT3
Feature creep has got me. Sorry for the delays. Bump.

Thread #618678. Printed from Allegro.cc