libOVR brings a message window topmost claiming that this way it receives
WM_DEVICECHANGE faster. Currently, in Wine, this causes a WM_KILLFOCUS to
be sent to the actual topmost window, which in turn causes "Shantae: Risky's
Revenge" to minimize. The effect is that the game automatically minimizes
as soon as it is launched, which is incorrect.
Signed-off-by: Giovanni Mascellani <gmascellani(a)codeweavers.com>
--
v2: win32u/window: Ignore SetWindowPos() for message-only windows.
user32/tests: Check that a message window brought topmost does not defocus other windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/419
This is required to keep `riched20:richole test_clipboard()` from crashing once `ITextDocument::Undo` is implemented.
--
v2: riched20: Ensure MEPF_COMPLEX is unset when in password input mode.
https://gitlab.winehq.org/wine/wine/-/merge_requests/422
--
v3: win32u: Use KeUserModeCallback interface for DDE message callbacks.
win32u: Use KeUserModeCallback for ImmProcessKey and ImmTranslateMessage calls.
win32u: Move default IME window management from imm32.
imm32: Don't allow disabling other thread's IME by thread ID.
imm32/tests: Add more tests for disabling IME.
imm32/tests: Add NtUserAssociateInputContext tests.
win32u: Move window input context handling from imm32.
https://gitlab.winehq.org/wine/wine/-/merge_requests/434
This is the hidclass/ntoskrnl/setupapi counterpart to !359. As with that merge request, implementing `BusQueryContainerID` in the bus driver is left out and will be addressed in a different MR.
I believe this is useful to expose the Container ID no matter how those end up being assigned by the bus driver.
--
v2: ntoskrnl: Set Device ContainerID from driver when registering an interface
ntoskrnl: Set device ContainerID from driver
ntoskrnl: Improve error handling in get_device_id
hidclass: Expose ContainerID
hidclass: Copy device ContainerID to child devices
hidclass: Copy ContainerID from underlying driver in driver_add_device
hidclass: Improve error handling in get_device_id
https://gitlab.winehq.org/wine/wine/-/merge_requests/432
--
v2: win32u: Use KeUserModeCallback interface for DDE message callbacks.
win32u: Use KeUserModeCallback for ImmProcessKey and ImmTranslateMessage calls.
win32u: Move default IME window management from imm32.
imm32: Don't allow disabling other thread's IME by thread ID.
imm32/tests: Add more tests for disabling IME.
imm32/tests: Add NtUserAssociateInputContext tests.
win32u: Move window input context handling from imm32.
https://gitlab.winehq.org/wine/wine/-/merge_requests/434
This is the hidclass/ntoskrnl/setupapi counterpart to !359. As with that merge request, implementing `BusQueryContainerID` in the bus driver is left out and will be addressed in a different MR.
I believe this is useful to expose the Container ID no matter how those end up being assigned by the bus driver.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/432
This series:
- cleanups some code (using bitfield instead of hardcoded constants)
- silences some FIXMEs in SymGetTypeInfo
- fixes a couple of erroneous lexical relationship among dbghelp objects
(mainly attaching - as native does - some objects to SymTagExe object)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/430
On Mon Jul 11 15:14:43 2022 +0000, Jinoh Kang wrote:
> How about the following race-free approach?
> ```suggestion:-0+0
> /* wait for I/O to start, which transitions the pipe handle from
> signaled to nonsignaled state. */
> while ((wait_status = WaitForSingleObject(pipe, 0)) ==
> WAIT_OBJECT_0) Sleep(1);
> ok(wait_status == WAIT_TIMEOUT, "WaitForSingleObject returned %lu
> (error %lu)\n", wait_status, GetLastError());
> ```
> Ditto for other places.
i had copied the `Sleep(100)` from one of the sync.c tests, i think. but if it makes the test less flaky, i'll take it. thanks!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/47#note_3919
On Mon Jul 11 15:14:45 2022 +0000, Jinoh Kang wrote:
> Per Wine code style, you should omit the second space in `&io ) )`.
> ```suggestion:-0+0
> return set_ntstatus( NtCancelSynchronousIoFile( thread, NULL, &io ));
> ```
the file has a mix of styles. it does look from a skim like most are without the space, but i think i copied from CancelIo and CancelIoEx right above it, and they both have the space. never quite sure what to do in those cases, but i can remove it
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/47#note_3917
> Wait, what's partial about it?
i don't handle the 2nd argument, but it doesn't seem to be used for what i need, though. i can implement the higher level kernel32 call without it
what about something like this, copied from NtUnlockFile:
`
TRACE( "(%p %p %p)\n", handle, io, io_status );
if (io) FIXME("Unimplemented yet parameter\n");
`
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/47#note_3914
Assassin's Creed Origins clobbers rbx in its main module (second of three) TLS callbacks. That is apparent right in the beginning of the TLS callback disassembly when rbx is set to '4' unconditionally without any prior save. That leads to a fault in call_tls_callbacks() which is still in __TRY block and gets handled. However the third TLS callback is not executed and that leads to intermittent hangs later on.
It is rather involved to make a TLS callback test in Wine testsuite as there is no portable way to generate a custom TLS callback. I've made a test program (based on the example here: https://lallouslab.net/2017/05/30/using-cc-tls-callbacks-in-visual-studio-w…) and compiled it with MSVC. The source code is here: https://gist.github.com/gofman/3287a953bcab3a5c888a8d494461cb8a. The program calls all the callbacks on Windows 10 here.
There is also a similar wrapper already there for i386 on another occasion.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/427
The commit end of a subheap may be equal to the beginning of another subheap, in
which case find_subheap() will return that one, and we may effectively skip
backwards in the subheap list.
---
There may be a more architecturally palatable way to solve this problem, but
hopefully this is enough to at least demonstrate it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/425