Commit 1 prevents the media session from starting execution of an asynchronous operation while another asynchronous operation is still running. Without this, it was possible for invalid state transitions to happen, which could leave the session in an intermediary state (not stopped, started, paused, closed or shut down) indefinitely.
Commits 2, 3 and 4 are some more fixes around pausing and unpausing in mfplat.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6255
Zhiyi Zhang (@zhiyi) commented about dlls/comctl32/tests/listview.c:
> + DWORD r;
> + UINT uFlagsAbove = MAKELPARAM(LVNI_ABOVE, 0);
> + UINT uFlagsBelow = MAKELPARAM(LVNI_BELOW, 0);
> +
> + hwnd = create_listview_control(LVS_REPORT);
> + insert_item(hwnd, 0);
> + insert_item(hwnd, 1);
> +
> + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 0, uFlagsAbove);
> + expect(-1, r);
> + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 0, uFlagsBelow);
> + expect(1, r);
> + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 1, uFlagsAbove);
> + expect(0, r);
> + r = SendMessageA(hwnd, LVM_GETNEXTITEM, 1, uFlagsBelow);
> + expect(-1, r);
There should be a test failing on Wine in this patch. Then you add a todo_wine to make the test pass in this commit. Then in the next patch after you've fixed the bug, the todo_wine should get removed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5909#note_79085
When the listview expands or collapses an item it notifies the parent using the TVN_ITEMEXPANDING message. The parent can return true on this message and it prevents the treeview from expanding or collapsing the item. WINE does not let you deny TVN_ITEMEXPANDING by returning true.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53727
--
v13: comctl32/treeview: Allow treeview parent to deny treeview expansion.
comctl32/tests: Add test to check if treeview expansion can be denied.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6218
I'm not sure about the need for this solution, so it's a **DRAFT**. For me it is an academic interest to check whether atomic locks will give advantages over pthread_mutex in games. First impressions are that games have become smoother, but need to think about tests that can actually be measured.
Before build need define `WINE_USE_ATOMIC_LOCKS`.
```bash
export CFLAGS="${CFLAGS} -DWINE_USE_ATOMIC_LOCKS"
```
--
v7: ws2_32: Add atomic lock support.
wine32u: Add atomic lock support.
winevulkan: Add atomic lock support.
ntdll: Add atomic lock support.
winewayland: Add atomic lock support.
include: Define custom mutex macroses.
msxml3: Fix compilation errors with Clang 18.
configure: Change C standard to C17.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6031
At the moment GL/VK content can only be presented in top-level windows, since child windows are not backed by Wayland surfaces. This MR adds support for such scenarios, in a few gradual steps:
1. Create Wayland (sub)surfaces for all child windows, anchoring them to their parent surface, which may also be a child window surface (i.e., we support GL/VK in nested child windows). This approach works, but it pollutes the compositor with mostly unused, and possibly nested (sub)surfaces. We will deal with this later in the MR.
2. Ensure that the child window (sub)surfaces are properly updated and reconfigured, and support WS_POPUP <-> WS_CHILD style changes (reparenting etc).
3. In the second to last commit, improve efficiency by creating (sub)surfaces only for the child windows needed by GL/VK, and anchor them directly to the parent toplevel. This removes (sub)surface bloat and unnecessary nesting, the trade-off being some extra complexity when dealing with updates.
4. Finally improve the display of GDI content along with accelerated content.
Note that this MR doesn't clip GL/VK child window contents at the moment.
The subsurface mechanism introduced in this MR could also handle other kinds of windows in the future, for example display and properly position transient windows, menus etc.
--
v3: winewayland: Create Wayland surfaces for child windows on demand.
winewayland: Ensure parent surface contents for accelerated windows.
winewayland: Support Wayland surface role changes.
winewayland: Use weak references for parent wayland_surfaces.
winewayland: Handle subsurface reconfiguration.
winewayland: Create subsurfaces for child windows.
winewayland: Store all window rects in wayland_win_data.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6107
--
v5: mshtml/tests: Accept rare return value from ReportResult on native.
mshtml: Don't process tasks recursively.
mshtml: Remember if timer was blocked.
mshtml: Implement EmulateIE* modes for X-UA-Compatible.
mshtml: Don't return default ports from location.host in IE10+ modes.
mshtml: Avoid calling remove_target_tasks needlessly.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6260
I'm not sure this is 100% safe (maybe limiting those blits to sysmem textures
would be better like stated in the original change?)
--
v2: HACK: wined3d: Disable CS thread check.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6300
This variable is the Wine's equivalent of the SDL_VIDEODRIVER/
SDL_VIDEO_DRIVER variable in SDL 2 and 3 (it explicitly selects
a list of graphics/video drivers to be used).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6301
This is based on work done by Andrew Eikum. It has been in some form in Proton for the last 4 years.
If server's sampling rate is not 48kHz **DOOM Eternal** will try to set it 48kHz for the streams using the implemented interface. There's a whole class of audio devices that use 44.1kHz sampling rate and at least PulseAudio / PipeWire tends to inherit the value from the hardware to avoid resampling. The value can also be overridden by the user via the audio server's config files.
In such cases, if the interface is not present or stubbed, this results in **audio underruns and noticeable crackling**.
It's easy to test with pipewire-pulse:
```
$ cat /etc/pipewire/pipewire.conf.d/sample-rate.conf
context.properties = {
default.clock.rate = 41100
}
```
With PulseAudio this should be doable via setting `default-sample-rate = 41100` in `/etc/pulse/daemon.conf`.
--
v6: winepulse.drv: Implement set_sample_rate.
mmdevapi: Add stub IAudioClockAdjustment implementation.
mmdevapi/tests: Add more IAudioClock tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5585