Allegro.cc - Online Community

Allegro.cc Forums » Allegro 5.2.7 released! » Reply

 Forums: Allegro 5.2.7 released!: Reply
This section is only available to registered Allegro.cc members.
 Thread Review
SiegeLord:

{"name":"612915","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/7\/e\/7efe48fa468c9db7964883c9c392687b.jpg","w":640,"h":400,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/7\/e\/7efe48fa468c9db7964883c9c392687b"}612915

Coming through! We've got another Allegro release! One notable feature of this release is that Elias got Allegro working semi-well with Emscripten (via the SDL backend), and adjusted our website to have some runnable examples: https://liballeg.org/examples_demos.html

Amazing.

You can find the source tarballs and MinGW binaries here (dependencies MinGW binaries are here here). Nuget packages are available here . Ubuntu and OSX packages aren't ready yet, but will be made soon.

Here's the changelog:

Changes from 5.2.6 to 5.2.7 (March 2021)

The main developers this time were: SiegeLord, Peter Hull, Elias Pschernig, Aldrik Ramaekers, Andreas Rönnquist.

Build system

  • Allow generating projects with a suffix (lorry-lee).


  • Fix build under Clang-CL in Visual Studio.

Core

  • Avoid some undefined behavior errors.


  • Return key modifiers in ALLEGRO_EVENT_KEY_UP and ALLEGRO_EVENT_KEY_DOWN.


  • Allow calling al_map_* color functions before Allegro is initialized.


  • Allow minimum bitmap size to be something other than 16 on non-Android platforms (controlled via allegro5.cfg).


  • Add al_get_monitor_refresh_rate (only implemented on Windows for now).

Graphics

  • Fix ALLEGRO_KEEP_INDEX flag for bitmaps.


  • Add ALLEGRO_OPENGL_CORE_PROFILE display flag.

Emscripten

  • The experimental Emscripten support (via the SDL backend) is now documented in README_sdl.txt.

OSX

  • Move more Cocoa operations to the main thread.


  • Explicitly link CoreVideo to fix the static build.

Windows

  • Issue #1125: Speed up OpenGL extension detection (Tobias Scheuer).


  • Use Unicode APIs when enumerating joysticks.


  • Use WM_DEVICECHANGE rather than polling to detect joystick hotlugging, reducing input drops and lags (Todd Cope).


  • Fix joystick polling period.


  • Restore WinXP compatibility by using slightly older API when loading shared libraries (Julian Smythe).


  • Fix build with HLSL disabled (Julian Smythe).


  • Raise DirectInput MAX_JOYSTICKS to 32 and DEVICE_BUFFER_SIZE to 128.

SDL

  • Issue #1224: Fix bug in SDL voice driver.

Audio addon

  • Allows playing sounds in reverse by specifying a negative speed.

Acodec addon

  • Fix edge-case looping in Ogg Vorbis stream (Cody Licorish)

Audio addon

  • Use more sensible values for PulseAudio's playback buffer, potentially
    resolving some crashes and high CPU usage.

Native Dialog Addon

  • Migrate from GTK2 to GTK3. Sadly, we lose menu icons as GTK3 dropped support for them.

TTF addon

  • Allow initializing TTF addon before the Font addon.


  • Shut-down the TTF addon automatically in al_uninstall_system.

PhysFS addon

  • Fix handling of native path separators.


  • Stop using deprecated PhysFS API.

Primitives addon

  • Fix segfault in al_draw_ribbon when num_segments > 128 (Rodolfo Borges).


  • Issue 1215: Correctly handle small scales when determining subdivision level
    for high level primitives (Robin Heydon).

Documentation

  • Fix LaTeX errors in the generation of the reference manual PDF.


  • Add links to examples into the reference manual.


  • Allow pressing 'S' to focus the search bar in the docs.


  • Assorted documentation improvements.

Misc

Examples

  • `ex_audio_simple` now displays instructions and supports bidirectional looping.


  • Add default files to some audio examples.

SHA256SUMS

7b2a778f62e990e6f2a9135a7580d9cf679a452c72cb5a5139e6f8a54fd35152  allegro-5.2.7.0.7z
c1e3b319d99cb453b39d393572ba2b9f3de42a96de424aee7d4a1abceaaa970c  allegro-5.2.7.0.tar.gz
a9ce3dfa7612d607b6c51e45f6ead9b53b2b8e922ce7308feb6bc9a0fbab5800  allegro-5.2.7.0.zip
2d291fd8217bbe0fcb3efff4891318e43ab8c227fafb378b3c205a37225d6f3c  Allegro.5.2.7.nupkg
23c7aeb5ab9732a170160ee02dcf87a801600af7e6fd7bdf1423d0b8cac4999a  AllegroDeps.1.12.0.nupkg
2604d91e91bf0001d72967aad864e0e614e43a517f0f03688ab572b398eab38c  allegro_deps-i686-w64-mingw32-gcc-10.2.0-posix-dwarf-1.12.0.zip
eaca487c68a06c2f709cef93eb958cc3d2a8a0402757b290f4b56ddfd63eecfc  allegro_deps-x86_64-w64-mingw32-gcc-10.2.0-posix-seh-1.12.0.zip
7b5342fc998056f65b20b59a96596b5fa9414765099b022557d837321fead25f  allegro-i686-w64-mingw32-gcc-10.2.0-posix-dwarf-dynamic-5.2.7.0.zip
4b286c647c38d1799a01e875376e1040ff8c41d98bc3bf1f574a07024be2da53  allegro-i686-w64-mingw32-gcc-10.2.0-posix-dwarf-static-5.2.7.0.zip
8a92fbec3685be78f63d22b45b9c6aa5854a897c637557c6acf9f2533224904e  allegro-x86_64-w64-mingw32-gcc-10.2.0-posix-seh-dynamic-5.2.7.0.zip
9da78e1bb0417235f20575b0ce83df24fffc306ab82b4f082f434de4456733ef  allegro-x86_64-w64-mingw32-gcc-10.2.0-posix-seh-static-5.2.7.0.zip

DanielH:

Thanks!

amarillion:

Yay! Thanks for all the hard work.

Mark Oates:

Heck yea, I love new allegro releases.

SiegeLord said:

Elias got Allegro working semi-well with Emscripten

our website to have some runnable examples: https://liballeg.org/examples_demos.html

{"name":"612917","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/1\/c17082db7d561538459736500cbfbda2.gif","w":307,"h":329,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/1\/c17082db7d561538459736500cbfbda2"}612917

Wow. Game changer. Elias, bringin' the heat!! 🔥🔥🔥.

I've got to get on this. That's amazing.

Quote:

Allow pressing 'S' to focus the search bar in the docs.

edit: added a follow-up on this to the issue here.

Quote:

Shut-down the TTF addon automatically in al_uninstall_system.

Woo! I have workarounds for this so can fix.

Edgar Reynaldo:

I submitted a news item to allegro.cc so we'll be on the front page for a while after Matthew approves it.

GullRaDriel:

Allegro+Emscriptem: Incredible. I'm testing but on my Linux the display is not coming. Will test on my Windows partition tomorrow.

Edit: Only Skater isn't working, Cosmic Protector is working fine !!

Jacob Moena:

I am quite happy that we got Clang support in the Nuget package! I got a couple new delicious compiler error messages to fix that neither GCC nor VC managed to detect. :)
Thank you! ;D

amarillion:

That Emscriptem work is impressive! The SPEED example doesn't have a 'try' link, is that an oversight or is there a reason for that? I can't wait to play SPEED on the web...

SiegeLord:

Examples/demos without the 'Try' button are just known not to work well with Emscripten (e.g. their main loops don't fit a somewhat restricted pattern, they use shaders etc). We can and probably will fix them at some point, Emscripten is relatively easy to develop for.

Elias:

Speed would be easy to fix but it's probably better if we fix the underlying SDL2/emscripten issues which make it not work currently :)

Basically we use emscripten with no threads at all, instead of using threads the web browser has a set of timers and periodically calls into javascript. To make this work with Allegro there's a workaround where al_wait_for_event() just returns control to the web browser instead of actually waiting and then whenever the browser calls back it collects events and if any are found continues with the application.

Now if an application ever has a loop which doesn't use al_wait_for_event() (like speed which is a line-by-line translation of A4 code) - that doesn't quite work :P

It would not be too hard to fix this, however emscripten actually does have threads, just as of a few weeks ago their bundled SDL2 did not support them yet. Once that is fixed upstream everything will just work on our side without extra work :)

Karadoc ~~:

In case anyone is interested, I'm attaching an ancient and somewhat janky patch that I made ~10 years ago for the native dialogs addon. I apply this patch every time I build a new version of Allegro.

Without this patch, al_show_native_message_box running on Windows cannot make dialog boxes with custom button names. With the patch, it can - but they look bad. Message boxes without custom button names are unchanged.

The reason the custom button dialogs look bad is that my implementation uses the 'system' font rather than the usual message box font. And the reason for using the system font is that I don't really know anything about the win32 api, and I was just trying to make something that worked! At the time I was writing the patch, this was the best I could come up with. (It is certainly possible to get the right font with some more code; but it isn't totally straight forward.)

In any case, feel free to use it, or not use it. I personally use it for showing debug messages, and nothing else; so I don't really care what it looks like anyway.

Example:
{"name":"612920","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/b\/db80c1a390dcaee7c49c5b903034d487.png","w":462,"h":187,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/b\/db80c1a390dcaee7c49c5b903034d487"}612920

Edgar Reynaldo:

I made a Pull Request for some code to fix a DX window flickering upon creation when MSAA is enabled. It works for FULLSCREEN_WINDOW and WINDOWED modes on my NVIDIA, but not on my integrated Intel for some reason. It also doesn't work in true fullscreen modes, so I'm requesting help with the issue if anyone has the time to look at it. This has been a longstanding bug that still hasn't been resolved.

The pull request is here (with comments) :
https://github.com/liballeg/allegro5/pull/1228

amarillion:

When compiling a new game with freshly built allegro 5.2.7.0 on linux, I got:

src/text2.cpp:4:10: fatal error: allegro5/allegro_native_dialog.h: No such file or directory
    4 | #include <allegro5/allegro_native_dialog.h>

allegro_native_dialog.h is in the allegro sources, but for some reason it wasn't copied to /usr/local/include/allegro5. Could you think of any reason why it wouldn't be copied? Perhaps a new dependency on linux?

I have a second question:

I scanned the cmake output for warnings. I added libopus, libwebp and libfreeimage. There is also a complaint about minimp3. I presume that refers to this: https://github.com/lieff/minimp3, but it's surprisingly hard to find any further documentation with google. Any chance there are any pre-built debian packages for this?

I doubt this is related to the native dialog problem though.

Edgar Reynaldo:

On Linux, the native dialog addon depends on GTK3 now. It won't be included if that is not installed when compiling Allegro 5.

amarillion:

Good to know. I did apt get libgtk-3-dev and things are working again.

What would be the proper place to document this? The README.txt just has this paragraph:

Linux users likely have all the dependencies already, except PhysicsFS
and DUMB. If your distribution uses separate development packages, they
will need to be installed.  The packages are probably named *-dev or *-devel.

Which didn't help me a lot in this case.

In hindsight, there was a warning in the cmake output:

-- Could NOT find MiniMP3 (missing: MINIMP3_INCLUDE_DIRS) 
WARNING: minimp3 was not found
-- Found Freetype: /usr/lib/x86_64-linux-gnu/libfreetype.so (found version "2.10.1") 
-- Performing Test TTF_COMPILES
-- Performing Test TTF_COMPILES - Success
-- Found PhysFS: /usr/lib/x86_64-linux-gnu/libphysfs.so  
-- Found PHYSFS: /usr/lib/x86_64-linux-gnu/libphysfs.so  
-- Performing Test PHYSFS_IMPLICIT_ZLIB
-- Performing Test PHYSFS_IMPLICIT_ZLIB - Success
-- Checking for module 'gtk+-3.0'
--   No package 'gtk+-3.0' found
-- Checking for module 'gthread-2.0'
--   Found gthread-2.0, version 2.64.6
-- Found THEORA: /usr/include

But I missed it, it doesn't stand out as much as the other warnings (like the one for minimp3 for example). It would be nice if the warnings were more consistent.

Edgar Reynaldo:

I may make binaries again, but I think bitbucket upload is broken atm or maybe forever

amarillion:

Please do if you can. I don't depend on them, but I think many first-time users do.

By the way, I've also updated the dockerized allegro build environment to 5.2.7

Edgar Reynaldo:

I'm kind of waiting until the pull request gets considered

SiegeLord:

Please do if you can. I don't depend on them, but I think many first-time users do.

They could use the official binaries too...

I'm kind of waiting until the pull request gets considered

The flicker one? It says it's not ready, no? It's not clear what the status of it is.

Edgar Reynaldo:

I need help on that one. My approach works for windowed modes, but not fullscreen ones, and I don't know how to fix it. I was hoping someone would have some helpful comments for me as to how to keep working on it.

SiegeLord:

Ah, okay, I'll try to take a look soon then.

Edgar Reynaldo:

It's total BS of course, because DX9 is insane and so is whoever designed win32 and their Tech Center.

Relevant link :
https://docs.microsoft.com/en-us/windows/win32/direct3d9/full-scene-antialiasing

fook me they had to do fullscreen different than windowed

UPDATE
Trying something for fullscreen now after I RTFM

EDIT2
Stuck again. Tried something, didn't work. Also, allegro is destroying and recreating display internals every time it tries a new mode that doesn't work.

Aldrik:

I wrote some code a while ago to list all audio devices for the alsa, sdl, dsound and pulseaudio backend https://github.com/aldrikboy/allegro5/tree/list_audio_devices. Is anyone interested in implementing the other backends (openal, kcm, aqueue, oss)? This would allow for features like audio device selection to be implemented.

amarillion:

That seems like a very useful feature. Perhaps for the other backends a dummy implementation would suffice for now? I.e. return an empty list or return an error code?

I don't like the idea of delaying a good feature just because it doesn't work on some more exotic backends.