The test shows that during RedrawWindow( ... RDW_ERASENOW ...) WM_NCPAINT delivery is not waited on the RedrawWindow() thread if the window is on another thread. It is still delivered directly to window procedure without showing up in PeekMessage(), and is processed synchronously if window is on the same thread. That corresponds to SendNotifyMessage() behaviour.
Fixes Warhammer: Vermintide 2 hanging during the game start. The game redraws desktop window (RedrawWindow(NULL, NULL, NULL, RDW_INVALIDATE | RDW_ERASE | RDW_ALLCHILDREN | RDW_ERASENOW | RDW_FRAME)). During that all the windows are getting updated and might be hitting that SendMessage in question. This hangs when it comes to the game's launcher's (minimized) window which is another process and doesn't process message queue at this point.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/452
All these patches are required to fix Cladun X2 crash at start.
--
v2: winex11.drv: Don't compare error event serial if it's zero.
winex11.drv: Lock display when expecting error events.
winex11.drv: Handle X errors from glXCopyContext().
https://gitlab.winehq.org/wine/wine/-/merge_requests/416
--
v4: mshtml: Use the private interface to expose onload for XMLHttpRequest.
mshtml: Implement overrideMimeType for XMLHttpRequest.
mshtml: Check for valid XML Content-Type for responseXML in IE10+ modes.
mshtml: Respect LOAD_CALL_CONTENT_SNIFFERS when using detected mime type.
mshtml: Set the channel's content type when parsing the header.
https://gitlab.winehq.org/wine/wine/-/merge_requests/399
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.
--
v8: ntoskrnl: Set device ContainerID from driver
https://gitlab.winehq.org/wine/wine/-/merge_requests/432
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.
--
v7: ntoskrnl: Set device ContainerID from driver
https://gitlab.winehq.org/wine/wine/-/merge_requests/432
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.
--
v6: ntoskrnl: Set device ContainerID from driver
https://gitlab.winehq.org/wine/wine/-/merge_requests/432
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.
--
v5: ntoskrnl: Set Device ContainerID from driver when registering an interface
ntoskrnl: Set device ContainerID from driver
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
ntoskrnl/tests: Add test for getting SPDRP_BASE_CONTAINERID from PnP driver
setupapi: Add support for SPDRP_BASE_CONTAINERID
https://gitlab.winehq.org/wine/wine/-/merge_requests/432
Vulkan pipelines should be destroyed only after the last command buffer using
the pipeline is done executing. Since we do not track which pipelines are
encoded into which command buffers, defer destruction until the current command
buffer finishes.
It feels unfortunate to do this from the shader backend, and introducing something
like wined3d_shader_vk etc. seems more in line with what we do with other objects.
I'm not sure that the complication is worth it in this case.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/443
--
v3: mshtml: Use the private interface to expose onload for XMLHttpRequest.
mshtml: Implement overrideMimeType for XMLHttpRequest.
mshtml: Check for valid XML Content-Type for responseXML in IE10+ modes.
mshtml: Respect LOAD_CALL_CONTENT_SNIFFERS when using detected mime type.
mshtml: Set the channel's content type when parsing the header.
https://gitlab.winehq.org/wine/wine/-/merge_requests/399
--
v2: mshtml: Use the private interface to expose onload for XMLHttpRequest.
mshtml: Implement overrideMimeType for XMLHttpRequest.
mshtml: Check for valid XML Content-Type for responseXML in IE10+ modes.
mshtml: Respect LOAD_CALL_CONTENT_SNIFFERS when using detected mime type.
mshtml: Set the channel's content type when parsing the header.
https://gitlab.winehq.org/wine/wine/-/merge_requests/399
--
v2: mfplat/tests: Merge and reorganize image format tests.
mfplat/buffer: Support YV12, I420 and IYUV image formats.
mfplat/tests: Mark some tests as broken on Win 8 and 10 v1507.
https://gitlab.winehq.org/wine/wine/-/merge_requests/418
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.
--
v4: ntoskrnl/tests: Add test for getting SPDRP_BASE_CONTAINERID from PnP driver
https://gitlab.winehq.org/wine/wine/-/merge_requests/432
--
v3: wineusb.sys: Move the event queue and device list to the Unix library.
wineusb.sys: Move the event threads to IRP_MN_START_DEVICE.
wineusb.sys: Move the event handling loop to the Unix library.
wineusb.sys: Queue pending IRPs after submitting the URB.
https://gitlab.winehq.org/wine/wine/-/merge_requests/428
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.
--
v3: 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
https://gitlab.winehq.org/wine/wine/-/merge_requests/432
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
> the test would hang on wine before the implementation is in place.
Thanks! I missed that the current test cannot verify the Windows behaviour before the commit that introduces the Wine implementation.
> the CloseHandle before the WaitForSingleObject is a workaround to get the thread to exit
I'm afraid that closing a handle in use is racy by nature; it's effectively pulling the rug out from underneath. A better approach would be to use `CancelIoEx` on the `OVERLAPPED` structure, or `NtCancelIoFileEx` on the `IO_STATUS_BLOCK` structure to cancel the pending operation.
>
> moving the CloseHandle was meant to show that workaround is no longer needed and that it now performs like windows
>
> i can remove that if preferred
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/47#note_3873
Some games with support for the haptic feedback and speaker features of the Sony DualSense controller select the controller's audio output by filtering on the ContainerId IMMDevice property to find one that matches the controller's HID's. This MR, together with !359, adds support for exposing such a ContainerId to applications.
I marked this MR as a draft because I understand that the way the ���guid��� is generated is far from ideal. Furthermore, I will need to map from sysfs to container Id in other components as well (`winebus` for the HID device, and possibly `winealsa` and other audio drivers), so moving that part elsewhere would make sense. However, I think I will need help with those tasks.
--
v3: winepulse: Add support for containerId property from sysfs path
winepulse: Store PulseAudio device's sysfs path when available
https://gitlab.winehq.org/wine/wine/-/merge_requests/360
Some games with support for the haptic feedback and speaker features of the Sony DualSense controller select the controller's audio output by filtering on the ContainerId IMMDevice property to find one that matches the controller's HID's. This MR allows this information to be accessible from the IMMDevice's property store when the audio driver provides it (none for now, but I intend to add that feature to `winepulse.drv` and maybe `winealsa.drv`)
This is made specific to containerId rather than supporting VT_CLSID on every property because Wine currently stores VT_BLOBs directly in the registry value, which does not allow us to safely disambiguate between VT_CLSID and VT_BLOB values when reading from registry.
--
v4: mmdevapi: Invalidate ContainerID of unavailable audio devices
mmdevapi: copy ContainerID from audio driver if available
mmdevapi: decode ContainerId property to CLSID in MMDevice_GetPropValue
mmdevapi: support VT_CLSID for containerId property in MMDevice_SetPropValue
https://gitlab.winehq.org/wine/wine/-/merge_requests/359
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>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/419
crypt32: Recognize 'Microsoft Root Certificate Authority 2011' when verifying the Microsoft root policy.
Signed-off-by: Paul Gofman <pgofman(a)codeweavers.com>
--
v2: crypt32: Support MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG.
https://gitlab.winehq.org/wine/wine/-/merge_requests/409
"The King of Fighters '98 Ultimate Match Final Edition" depends on
this behavior. At least, the build I have is; it seems other builds
are not.
Signed-off-by: Giovanni Mascellani <gmascellani(a)codeweavers.com>
--
v4: xactengine3_7/tests: Test notifications when loading a wave bank.
fixup! include/wine: Add ANSI color codes.
ntdll: Dump executable.
include/wine: Add ANSI color codes.
ntdll: Introduce x86emu.
ntdll: Allowing injecting an int3.
ntdll: Allow setting a watchpoint.
include/wine: Introduce STAR to dereference a generic number.
widl: Generate empty interface implementations.
ntdll: Log architecture.
ntdll: Implement debug writing to file.
ntdll: Mark Wine code in mmap output.
ntdll: Support dynamically enabling trace messages.
ntdll: Log signals early.
ntdll: Dump a single symbol.
ntdll: Capture stack backtrace from UNIX side.
ntdll: Add facility to disassemble code.
ntdll: Print the command line when a process is started.
ntdll: Dump memory mappings and unmappings.
ntdll: Make dynamic unwind entries accessible from UNIX side.
ntdll: Add +microsecs channel for precise timestamps.
ntdll: Log return address.
ntdll: Log file and line number.
ntdll: Do not suppress useful log fields on \1.
ntdll: Implement log locking and disabling.
ntdll: Add a mechanism to ease development calls.
ntdll: Support gio channel by default.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/398
"The King of Fighters '98 Ultimate Match Final Edition" depends on
this behavior. At least, the build I have is; it seems other builds
are not.
Signed-off-by: Giovanni Mascellani <gmascellani(a)codeweavers.com>
--
v3: xactengine3_7/tests: Test notifications when loading a wave bank.
fixup! include/wine: Add ANSI color codes.
ntdll: Dump executable.
include/wine: Add ANSI color codes.
ntdll: Introduce x86emu.
ntdll: Allowing injecting an int3.
ntdll: Allow setting a watchpoint.
include/wine: Introduce STAR to dereference a generic number.
widl: Generate empty interface implementations.
ntdll: Log architecture.
ntdll: Implement debug writing to file.
ntdll: Mark Wine code in mmap output.
ntdll: Support dynamically enabling trace messages.
ntdll: Log signals early.
ntdll: Dump a single symbol.
ntdll: Capture stack backtrace from UNIX side.
ntdll: Add facility to disassemble code.
ntdll: Print the command line when a process is started.
ntdll: Dump memory mappings and unmappings.
ntdll: Make dynamic unwind entries accessible from UNIX side.
ntdll: Add +microsecs channel for precise timestamps.
ntdll: Log return address.
ntdll: Log file and line number.
ntdll: Do not suppress useful log fields on \1.
ntdll: Implement log locking and disabling.
ntdll: Add a mechanism to ease development calls.
ntdll: Support gio channel by default.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/398