Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update OpenAL Soft and allow seamless changing of the output device #1841

Draft
wants to merge 8 commits into
base: 9.0.0-dev
Choose a base branch
from

Conversation

ACrazyTown
Copy link
Contributor

@ACrazyTown ACrazyTown commented Sep 23, 2024

This PR adds bindings and implements OpenAL Soft's reopenDeviceSOFT and ALC_SOFT_system_events extension. In order to take advantage of this functionality, I had to update OpenAL Soft, which required forcing latest hxcpp (git, until there's a new stable release). New versions of OpenAL Soft require the C++17 standard and current hxcpp doesn't seem to have an official way to use it. (Maybe it could be done via compilerflags in the Build.xml?)

With these changes, Lime will automatically listen to changes to the default audio output device and switch playback to those devices seamlessly. Also reopenDeviceSOFT allows for manually switching the output device in the app.

This is currently a draft, I'm waiting for a new hxcpp release and a new stable OpenAL Soft release (which should be sometime soon!), as well as figuring out a few other things. I'm opening this right now for discussion and feedback

Currently I only tested it on Windows x64 C++ (I've also had it working on Hashlink but ever since I've merged this change into 9.0.0-dev I keep getting a strange and seemingly unrelated error: FATAL ERROR : Invalid signature for function lime@hl_cairo_get_matrix : PDOiOiB_iiii__OiOiB_iiii_ required but PDOdddddd__Odddddd_ found in hdll). I will try getting the changes to work on other targets as soon as I figure out HL & Neko.

Closes #1515, openfl/openfl#2642

@player-03
Copy link
Contributor

I've also had it working on Hashlink but ever since I've merged this change into 9.0.0-dev I keep getting a strange and seemingly unrelated error: FATAL ERROR : Invalid signature for function lime@hl_cairo_get_matrix : PDOiOiB_iiii__OiOiB_iiii_ required but PDOdddddd__Odddddd_ found in hdll

Try lime rebuild hl to bring your hdll up to date.

@ACrazyTown
Copy link
Contributor Author

Try lime rebuild hl to bring your hdll up to date.

I've done that, tried doing a clean rebuild of both lime and my testing project. I keep getting the same error. Could this commit 71442d0 be related? It doesn't seem to be in 9.0 branch

@player-03
Copy link
Contributor

player-03 commented Sep 23, 2024

Oh yeah, if you don't have that merged, you'll need it. Edit: ok, merged into 9.0.0-Dev. You can pull from there.

@ACrazyTown
Copy link
Contributor Author

Okay, I think I did the merge right. Hashlink seems to be fixed and working fine now!

@ACrazyTown
Copy link
Contributor Author

I've gotten Mac to build and work!

I only have Linux, Android & Neko left to figure out, though CI for them will always fail because it uses an older hxcpp version

@ACrazyTown
Copy link
Contributor Author

Tested out Linux & it seems to work. I assume Android would also work with just an updated config but I don't know how I'd even test that... Neko seems to crash whenever it tries to dispatch the callback, I'm assuming it's threading related. I'm not sure what the alternative to hxcpp's gc_set_top_of_stack and hl's hl_register_thread would be on Neko.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants