Skip to content

Merge develop upstream#2077

Closed
dimensionscape wants to merge 148 commits into
9.0.0-devfrom
develop
Closed

Merge develop upstream#2077
dimensionscape wants to merge 148 commits into
9.0.0-devfrom
develop

Conversation

@dimensionscape

Copy link
Copy Markdown
Member

Merge changes into 9.0.0

tobil4sk and others added 30 commits August 28, 2025 01:06
No need to iterate through the whole string to find the length, just
to see if it is empty.
* Fix header issues on mingw

When cross compiling from Linux, header names are case sensitive unlike
on Windows.

* Remove isfinite define in openal config

This causes issues on mingw, and is no longer needed since openal now
uses std::isfinite (c++11) instead of isfinite.

kcat/openal-soft@3ae1c78

* Fix cairo setup for mingw

* Fix msvc-specific warning flags on mingw

* Fix msvc-specific defines on mingw

* Enable some missing compiler flags for mingw

* Fix System.cpp when compiling with mingw

With mingw, converting from char* to _bstr_t calls ConvertStringToBSTR
which is not defined by mingw. Creating all strings from wchar* avoids
this issue.

comsuppw.lib is also unavailable on mingw, and we need to add
wbemuuid.lib manually as the #pragma comment(lib, ...) in System.cpp is
only respected by MSVC.

Adding bstr_t explicitly rather than relying on implicit conversion also
avoids gcc warnings here.

* Fix lime rebuild windows with mingw for 64 bit

When cross compiling, the default target is set as neko in HXProject, so
we can't assume that rebuild will always be cpp.

* Fix static build with mingw

`wbemuuid.lib` must be linked explicitly, since #pragma
comment(lib, ...) only works with msvc.

`comsuppw.lib` does not exist in mingw.

`no_shared_libs` must be set for mingw to ensure the standard library
and other libraries are linked statically.

`.lib` must be replaced with `${LIBEXT}` so that it resolves to `.a` on
mingw.

* Link with bcrypt.lib on windows for curl

MSVC links this automatically due to a #pragma in curl's source code,
but other compilers require it to be added explicitly.

* [ci] Add mingw 64-bit ndll build
* Fix pixman warnings with android ndks before r22

Versions of clang in these ndks did not pass the correct -march flag to
the assembler, see: android/ndk#906

This resulted in warnings such as:
```
/tmp/pixman-radial-gradient-09b366.s: Assembler messages:
/tmp/pixman-radial-gradient-09b366.s:391: Rd and Rm should be different in mla
/tmp/pixman-radial-gradient-09b366.s:394: Rd and Rm should be different in mla
/tmp/pixman-radial-gradient-09b366.s:398: rdhi, rdlo and rm must all be different
/tmp/pixman-radial-gradient-09b366.s:403: Rd and Rm should be different in mla
/tmp/pixman-radial-gradient-09b366.s:406: rdhi, rdlo and rm must all be different
/tmp/pixman-radial-gradient-09b366.s:412: rdhi, rdlo and rm must all be different
```

* Adjust condition for pixman clang flag

It is necessary due to the pixman assembly files not being compatible
with the llvm assembler, and we only compile assembly files if
PIXMAN_ARM_NEON is enabled.
Returning here means other architecture builds won't run. If we continue
instead, all architecture builds will finish first before the function
exits.
The patches we need for haxe 4.2 to run properly have been released, so
we can now switch to the release version of setup-haxe.
This makes it easier to debug when a haxelib name and target name clash.
…ecture/> values

We somewhat recently added these strings as command line options as alternatives to -64 and -32, so we might as well support them as strings in project.xml too.
gcc 15 changes the default standard from gnu17 to gnu23, but HashLink mysql won't build with gnu23. I confirmed that clang also supports gnu17 (and it is the documented default).
Replace SDL_GL_CreateContext with SDL_GL_GetCurrentContext in SDLWindow.cpp to use a single shared GL context instead of creating one per window. Keep SDL_GL_MakeCurrent call and add comments explaining the choice and a TODO to revisit context-per-window if windows are ever given independent render loops.
tobil4sk and others added 29 commits June 2, 2026 13:36
Introduce Lime-level AudioInput and AudioInputDevice classes so frameworks can poll raw PCM capture data without changing existing event contracts.

The native backend uses the existing OpenAL capture bindings to expose support checks, default device lookup, start/stop, sample availability, and Bytes reads. HTML5 and Flash compile as unsupported stubs for now, and the docs import list includes the new media types.
In a perspective projection matrix, the bottom-right element must be 0 to ensure correct perspective division.
Expose alcIsExtensionPresent
Recover native OpenAL playback when the active output device is disconnected.

Some OpenAL implementations expose ALC_EXT_disconnect without newer device
event or reopen extensions. In that case, active sources could stop producing
audio after a headset or output device was unplugged, and they would not recover
when another output became available.

Track the current OpenAL context generation, poll ALC_CONNECTED as a low-cost
compatibility fallback, and recreate the OpenAL context when the active device is
lost. Active native AudioSource instances snapshot their playback state before
recovery and restore their source handles, buffers, gain, pitch, position, time,
loop count, and playing state afterward.

Also remember the startup default output device and reopen it when it becomes
the default again, so playback can move back from a fallback output to the
original headset/device.

If we migrate to a a higher version of OpenAL, we can make polling a pure fallback for MojoAL.
Add handling for inline looping audio streams by tracking per-buffer and per-stream loop counts.
Move Bytes resize allocation, copy, and free work outside the shared ownership mutex, leaving the lock only around usingValue bookkeeping and pointer/length updates. This reduces observed contention in threaded compression paths while preserving Haxe Bytes ownership. closes #1943
Normalize FileDialog filters so existing bare extensions like png still work while documented wildcard filters like *.png are accepted without becoming *.*.png. Also fixes save-dialog filter construction to use the full filter string with stable storage, and keeps save auto-extension from appending wildcard text into filenames.

CLoses #1945
Patch the copied Windows HashLink launcher to use the GUI subsystem by default, matching Lime's other Windows app targets. The original bundled or user-provided hl.exe is left unchanged, and SHOW_CONSOLE keeps the old console behavior for users who need it.

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