This uses a new hardware message with Wine internal WM_WINE_CLIPCURSOR message, to notify the foreground window of ClipCursor calls, or resets. It could possibly have used posted messages, like is done to request the desktop to release the clipping rectangle but I figured that a hardware message could be appropriate and is possibly the preferred mechanism to notify the foreground window.
We use QS_RAWINPUT for convenience here, as to automatically release the hardware message, and because this message is somewhat low-level. It could be anything, and maybe QS_MOUSEMOVE, but we'd have to then manually call accept_hardware_message from win32u.
The desktop posted message is kept, as there's no guarantee that the foreground window will be processing its hardware messages when we need, and/or that the desktop window is foreground.
--
v2: winex11: Remove now unnecessary ClipCursor forwarding to foreground thread.
win32u: Asynchronously apply or reset ClipCursor from the hardware message.
server: Queue a hardware WM_WINE_CLIPCURSOR message to the foreground thread.
server: Use a separate helper to merge WM_MOUSEMOVE messages.
server: Use the helper to reset the clip rect when the desktop size changes.
win32u: Add a reset parameter to WM_WINE_CLIPCURSOR and driver ClipCursor.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2981
To be merged after !2907.
--
v5: wineoss: Use mmdevapi's AudioClient's GetService.
winecoreaudio: Use mmdevapi's AudioClient's GetService.
winealsa: Use mmdevapi's AudioClient's GetService.
winepulse: Move AudioClient's GetService into mmdevapi.
winepulse: Lock sessions in AudioClient's GetService.
wineoss: Use mmdevapi's session_wrapper_create.
winecoreaudio: Use mmdevapi's session_wrapper_create.
winealsa: Use mmdevapi's session_wrapper_create.
winepulse: Move session_wrapper_create into mmdevapi.
winepulse: Always initialize ref to 1 in session wrapper.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2908
This fixes some upside-down videos in Secret of Mana. The game plays a NV12 video using MF session and EVR, then calls GetCurrentImage to get the frame RGB data and display it itself.
--
v3: evr: Respect RGB format stride in GetCurrentImage.
evr/tests: Test IMFVideoDisplayControl_GetCurrentImage orientation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2883
To be merged after !2907.
--
v4: wineoss: Use mmdevapi's AudioClient's GetService.
winecoreaudio: Use mmdevapi's AudioClient's GetService.
winealsa: Use mmdevapi's AudioClient's GetService.
winepulse: Move AudioClient's GetService into mmdevapi.
wineoss: Use mmdevapi's session_wrapper_create.
winecoreaudio: Use mmdevapi's session_wrapper_create.
winealsa: Use mmdevapi's session_wrapper_create.
winepulse: Move session_wrapper_create into mmdevapi.
wineoss: Set session wrapper reference count correctly on creation.
winecoreaudio: Set session wrapper reference count correctly on creation.
winealsa: Set session wrapper reference count correctly on creation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2908
On my Nvidia GeForce GTX 1050 Ti this test is not passing because of considerably different numeric results.
As Giovanni pointed out, this is because my GPU uses the fine derivate and not the coarse derivate to implement ddx() and ddy().
Testing both ddx_coarse()|ddy_coarse() and ddx_fine()|ddy_fine() on the WARP driver shows that both these derivates are the same in coordinates where both X and Y are even, i.e. the first pixel of each 2x2 quad. So the test was modified to only probe on these coordinates.
The new expected values were obtained from running the test using the WARP driver, and ulps adjusted for my GPU.
However, this MR is marked as a draft because I would like to know if the test passes on other GPUs.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/199
TODO: Fall back to `#undef WITH_SIMD` build if nasm/yasm is not found.
JPEG decoding became much slower after a6ac035a7454c92bec367b2cd3021f8b98d4d807 because Wine no longer used the host libjpeg, which was usually provided by libjpeg-turbo. Use libjpeg-turbo in Wine instead of plain libjpeg.
This adds a dependency on nasm or yasm to compile the i386/x86_64 assembly code.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2956