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