The Visual Studio 2022 installer needs to be able to lookup a valid
WinMD file for the 'Windows.Networking.Connectivity' namespace
in order for the installation to start.
A normal Windows installation contains lots of individual
'.winmd' files (e.g. 'Windows.Networking.winmd'), which we
cannot redistribute. Fortunately, Microsoft provides an open-source
project called 'windows-rs', which contains a combined 'Windows.winmd'
file that is explicitly MIT-licensed:
https://github.com/microsoft/windows-rs/blob/master/crates/libs/bindgen/def…
Make RoResolveNamespace resolve anything starting with 'Windows' by just
pointing to this giant file. A full implementation will require us to
actually walk the 'WinMetadata' directory (if the caller provides
a custom path) and parse the matched '.winmd' file. However, this
implementation is good enough for Visual Studio 2022
To actually run the vs2022 installer, a patch for
the SHELL_execute trailing-space bug https://bugs.winehq.org/show_bug.cgi?id=56940
is needed: https://gitlab.winehq.org/wine/wine/-/merge_requests/6079
--
v2: wintypes: Partially implement RoResolveNamespace and add 'Windows.winmd'
https://gitlab.winehq.org/wine/wine/-/merge_requests/6288
comctl32/treeview: Return from TREEVIEW_LButtonDown when the treeview handle is invalid.
LButtonDown should return when the treeview handle is invalid (e.g. destroyed) after NM_CLICK to prevent further message processing.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58211
--
v10: comctl32/treeview: Return from TREEVIEW_LButtonDown when the treeview handle is invalid.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8258
Coordinates from mouse low level hook messages are not mapped the same way than WM_MOUSEMOVE or GetCursorPos. This causes problems on programs that make use of both values to calculate mouse movement, like the wine DirectInput implementation.
I'm marking this as a draft since I was not able to find a way to write a test for this. I'm able to easily reproduce it on Proton, because it creates a scaled full screen window, on Wine this doesn't happen so the coordinates are not required to be mapped to a scaled window.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8669
Followup to 03039ab2ee.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58335
If I observed it right we currently leave `init_xstate_features` on older computers with EnabledFeatures being zero.
This leads in `__wine_syscall_dispatcher` to getting the xsave64 getting
called with "$rax = 0x0", therefore e.g. xmm6 gets not saved to the stack.
But later e.g. xmm6 gets restored from stack in `__wine_syscall_dispatcher` (see [](https://gitlab.winehq.org/wine/wine/-/blob/wine-10.12/dlls/ntdll/unix/signal_x86_64.c?ref_type=tags#L2774-L2882))
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8591
`BluetoothLEAdvertisementWatcher` is required for LE device discovery on WinRT. Several WinRT apps, like Zwift will try getting this interface, and crash if they are not able to.
--
v4: windows.devices.bluetooth: Implement BluetoothLEAdvertisementWatcher::get_{Min, Max}OutOfRangeTimeout.
windows.devices.bluetooth: Implement BluetoothLEAdvertisementWatcher::get_{Min, Max}SamplingInterval.
windows.devices.bluetooth: Add stubs for BluetoothLEAdvertisementWatcher.
windows.devices.bluetooth/tests: Add tests for IBluetoothLEAdvertisementWatcher.
windows.devices.bluetooth/tests: Add tests for BluetoothLEAdvertisementDataSection.
windows.devices.bluetooth/tests: Add tests for IBluetoothLEAdvertisementBytePattern.
windows.devices.bluetooth/tests: Add tests for BluetoothLEAdvertisementFilter.
include: Add windows.devices.bluetooth.advertisement.idl.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8654
The message queue needs both an inproc sync, to wake inproc waits on a message and trigger a server request, and a server sync, for when the wait is only on the queue and should be optimized into a single server request.
It could be better to avoid a dedicated request to retrieve the queue inproc sync fd, for instance by sending an fd on thread init, but we can use this to duality to gradually introduce inproc syncs requests instead and avoid dead code (even though the code ultimately returns STATUS_NOT_IMPLEMENTED for now). We can change the way queue inproc sync fds are retrieved later on.
--
v3: ntdll: Check inproc sync handle access rights on wait.
server: Add a request to retrieve the inproc sync fds.
server: Create inproc sync events for message queues.
ntdll: Retrieve and cache an ntsync device on process init.
ntdll: Add stub functions for in-process synchronization.
ntdll: Add some traces to synchronization methods.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8445
For the IE9 attr node implementation (delegating to gecko attr nodes), this uses the existing infrastructure to keep track of the attributes in a collection (and so, associate DISPIDs for them, etc), since it also matches native (same DISPID broken behavior when removing attrs) and we already have the code for it. The current code is split into helpers called from many places already related to it, so instead I just extended the helpers with new code paths for IE9+ attrs.
There's also appropriate FIXMEs for things that aren't properly handled by simple delegation to gecko (from my older patchset), so at least if we find something that needs it, it will be way easier to debug.
The last patch is a bit big since it had to enable the new attr nodes everywhere in IE9+ modes, else either tests would fail or we wouldn't test anything, as I'm using existing tests (just in IE9 mode).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8656