This draft is for tracking Wine Gecko 2.47.4. I tagged rc1 release and uploaded builds and this MR makes use of it.
What's new in this release:
- Gitlab CI integration. Official binaries are build by Gitlab now.
- Improved window messages handling for FFXIV.
- New DOM API and CSS extensions for better IE compatibility mode support.
- Compatibility fixes.
--
v2: mshtml: Wine Gecko 2.47.4 release.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2569
There's too much going on in this commit / MR. The changes to the drivers seem to be addressing a bug rather than implementing the Endpoint Volume API.
Also, note that the values passed to the non-`Scalar` API are in decibels, the `Scalar` API appears to be somewhere between linear and logrithmic, and the `ISimpleAudioVolume` values are linear.
Does your app call the `Scalar` versions of the API? If so, a good start would be to write some tests to figure out the mapping between `Scalar` and non-`Scalar` by e.g. setting using one and retreiving that value using the other.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2565#note_29455
Currently, the free list consists of a "small list" for sizes below 256,
which are linearly spaced, and a "large list" which is manually split
into a few chunks.
This patch replaces it with a single log-linear policy, while expanding
the range the large list covers.
The old implementation had issues when a lot of large allocations
happened. In this case, all the allocations went in the last catch-all
bucket in the "large list", and what happens is:
1. The linked list grew in size over time, causing searching cost to
skyrocket.
2. With the first-fit allocation policy, fragmentation was also making
the problem worse.
The new bucketing covers the entire range up until we start allocating
large blocks, which will not enter the free list. It also makes the
allocation policy closer to best-fit (although not exactly), reducing
fragmentation.
The increase in number of free lists does incur some cost when it needs
to be skipped over, but the improvement in allocation performance
outweighs it.
For future work, these ideas (mostly from glibc) might or might not
benefit performance:
- Use an exact best-fit allocation policy.
- Add a bitmap for freelist, allowing empty lists to be skipped with a
single bit scan.
Signed-off-by: Tatsuyuki Ishi <ishitatsuyuki(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2622
--
v4: winecoreaudio: Implement and call timer_loop in unixlib.
winecoreaudio: Implement and call set_event_handle in unixlib.
winecoreaudio: Store flags in unixlib.
winecoreaudio: Retain precision when storing period in unixlib.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2603
The deleted test is a bad test: The behavior is different on different
drivers, for example, the test fails on the Windows 10 and 11 testbot
machines that have AMD video cards. Furthermore, MSDN does not say that
the destination context "must not" have any display lists yet but rather
that it "should not" have any.[1] The Khronos OpenGL Wiki similarly
advises against calling wglShareLists after the source or destination
context has at least one object, but if you do, it only says that "there
is a chance that wglShareLists will fail", not that it will necessarily
fail.[2] Since there's no clear "right" behavior here, we can adopt the
more permissive behavior that some programs expect, as long as it
doesn't corrupt the context.
[1] https://learn.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-wglsha…
[2] https://www.khronos.org/opengl/wiki/Platform_specifics:_Windows#wglShareLis…
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=11436
--
v3: winex11: Allow replacing either context in wglShareLists.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2032
Needed for mingw Firefox build.
The WIDL error points to the wrong function, specifically the one after it.
include/windows.ui.composition.interop.idl:35:63: error: parameter 'swapchain' of function 'CreateCompositionSurfaceForHandle' cannot derive from void *
HRESULT CreateCompositionSurfaceForSwapChain([in] IUnknown *swapchain, [out, retval] ICompositionSurface **result);
^
make[1]: *** [Makefile:163749: include/windows.ui.composition.interop.h] Error 1
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2620