This fixes failure to play the prologue video in Planet of the Apes: Last Frontier, which unpauses by calling Start() with a location. The exact state leading to this issue does not occur in the Start() tests, and it's not clear how to reproduce it reliably.
--
v2: mf: Reset transform nodes when seeking.
mf: Initialise the grabber sample count when setting state after a seek.
mf: Reset transform node outputs when seeking.
mf: Drop transform node input events when unpausing at a specific position.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7466
The methods are needed to implement Bluetooth device pairing in `bluetoothapis.dll` without having to create a dummy window for `RegisterDeviceNotification`, as that may break CLI applications.
`CM_Register_Notification` is implemented as a thin wrapper over `I_ScRegisterDeviceNotification`, mapping `DBT_*` flags to their associated `CM_NOTIFY_*` constants.
--
v3: user32: Remove incorrect FIXME warning while registering for DBT_DEVTYP_HANDLE notifications.
cfgmgr32: Implement CM_Register_Notification and CM_Unregister_Notification.
dinput/tests: Add tests for CM_Register_Notification.
cfgmgr32/tests: Add basic tests for CM_(Un)Register_Notification.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7559
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54194
If the SendMessageTimeout call takes a long time, we can get other
messages which also set the observed wparam value. Apparently,
this is especially likely on Windows 7.
This also removes the (wParam == 0xbaadbeef) check which may have
been intended to serve the same goal but doesn't work because the
observed wParam value is still assigned.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3862
Signed-off-by: Kun Yang <yangkun(a)uniontech.com>
Change-Id: Ia68e11ccb0aa563eeb73a2f5cb93afcd328e1937
[fgetws_test.7z](/uploads/7b706f2c4f639e4260c548d834658b32/fgetws_test.7z)
If the application calls setvbuf(.., _IONBF, ..) before fgetws, wine sets the flag. In fgetws, this flag is not checked. read_i is called with paramenter count 1 which is not allowed in read_i implemantion. Function read_i returns -1 and the file stream is not actually read by program. The file pointer is not moved. If the application writes fgetws in a loop, it never reach EOF and falls in dead loop. By adding check for _IONBF in _filbuf, the application will run into another branch(file->_bufsiz=2). Thats's correct. Please checkout the example in my attachment. This application exits normally in Windows but falls in dead loop in wine.
--
v3: msvcrt: Add MSVCRT__NOBUF flag check in _filbuf to avoid dead loop in application which sets the flag.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7594
On Tue Mar 11 14:30:34 2025 +0000, Paul Gofman wrote:
> I don't see how to avoid that in principle?
> - the logic is triggered by calling DefWindowProc, so we can't avoid
> some action from DefWindowProc;
> - after WM_POINTERUPDATE with changing coordinates the messages should
> be generated (and, separately, updating cursor position) regardless of
> DefWindowProc calls; also generating that in DefWindowProc or
> accept_hardware_message would be clumsy because
> NtUserSendHardwareInput() can't generate the exact message we need, that
> would need some custom interface (and won't avoid a server call to send
> message anyway);
> - we could in principle stop sending those `track_mouse_from_pointer`
> calls once the tracking switched to server side (by returning the
> corresponding flag from this call and tracking this part of state in
> thread data), but we also want to update driver cursor position which
> seems to cope nicely with this call, in that case it would need to be
> done in some other more complicated ways. So reducing the amount of
> those calls (by not sending them once server tracking started) is
> possible but it will require these parts. I thought it doesn't add too
> much of calls, do you think it worth it?
> EDIT: updated.
I don't know, this call feels inherently racy and I would like to give it more thought and time to check how windows behave.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7530#note_98225
This serie (PDB rewrite #3) mostly handles the debug information
needed to support C++ enum underlying integral type.
- it generalizes the use of VARIANT to gather enum values,
- to make things simple, in PDB, the type of variant used has nothing
to do with the size of the C++ integral type, but is the smallest
size to hold the considered enum value,
- adapt the dwarf backend to behave the same way as the PDB one,
- adapt debugger to support up to 8-bytes variant types.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7605
PathRemoveFileSpecW keeps only the drive if the path contains all forward slashes as shown in tests.
But then the temporary file is created in the root folder which fails for drive Z:.
This fixes a corner case when using CMake in Wine. Another usage of PathRemoveFileSpecW is in PathRelativePathToW which should be also checked.
I'm leaving this as a draft until getting some feedback and adding tests.
--
v5: kernelbase: Handle correctly paths with forward slashes in ReplaceFileW.
kernel32: Test ReplaceFileW with forward slashes.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7290