comctl32/listview: Test WM_PAINT with a subclassed header that paints without validating update regions.
--
v3: comctl32/listview: Validate header region after painting it.
comctl32/listview: Test WM_PAINT with a subclassed header that paints without validating update regions.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8447
This MR fixes seek in VRChat by copying the sequence of flushes/stop/starts that Windows does.
The order on Windows is:
1. Stop sources;
2. Flush MFTs;
3. Start sources;
4. Request output down the chain of sink inputs;
6. Flush sinks; and
7. Start the clock
This takes place whether we pause before we seek or seek without pause.
Changes in version 2:
1. Add test to see when SAR requests new samples;
2. Add test to examine when step 4 from above takes place;
3. Adjust the seek implementation in `mf/session.c` to match findings from the new tests;
4. Adjust `mfmediaengine` to reflect findings from the new tests;
5. Refactored `if` statement in `session_start` to be a `switch` again
--
v5: mfmediaengine: Request sample if we are seeking.
mfmediaengine: Don't perform implicit flush on state change.
mf: Don't send MFT_MESSAGE_NOTIFY_START_OF_STREAM when seeking.
mf: Restart transforms and sinks on seek.
mf/tests: Test sequence of calls during a Pause and Seek.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7932
Implementation PersistentZoneIdentifer object without any writing and reading zone information. OS Windows uses NTFS alternative data stream Zone.Identifer to write and read zone information. Also due to lack of reading zone information some test cases fails.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8459
Shutting down the media source, while it is still in an active topology, causes Windows' media session to fully shut down. To avoid this, only clear the old presentation on release, shutdown or when a new topology was successfully set.
(FWIW: This solution is definitely not the greatest)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8462
Current implementation of system.fill_battery_state only reads "charge\__" and "current\__" attributes. Some batteries expose different attributes, namely "power\__" and "energy\__". Added the required logic to support both types.
Further, when rewriting the function I also added support for systems with multiple batteries. Windows documentation was not clear but from what I gathered struct SYSTEM_BATTERY_STATE sets Charging and Discharging if ANY battery is charging/discharging. So, to check if the overall system is charging/discharging only Rate can be used.
Also cleaned the code related to "AC". There was a "fixme" there which I didn't fully undertand as SYSTEM_BATTERY_STATE.AcOnLine == True if any AC is present, so the proper logic was already implemented
--
v6: ntdll: improve readibility of linux_battery capacity units
https://gitlab.winehq.org/wine/wine/-/merge_requests/8460
(Follow up from !6788)
The goal is to use the device object API as the backend for Windows.Devices.Enumeration, as most concepts from the latter have a one-to-one mapping to the former:
* The device object API is centred around the [`DEV_OBJECT`](https://learn.microsoft.com/en-us/windows/win32/api/devquerydef/ns-devquerydef-dev_object) type, which provides a unified representation for devnodes, device interfaces/containers, device interface classes, and association endpoints (networking protocols and service instances, like UPnP and Bluetooth), together with the properties associated with it. The [`DevObjectType`](https://learn.microsoft.com/en-us/windows/win32/api/devquerydef/ne-devquerydef-dev_object_type) enum maps to [`Windows.Devices.Enumeration.DeviceInformationKind`](https://learn.microsoft.com/en-us/uwp/api/windows.devices.enumeration.deviceinformationkind?view=winrt-26100). This would be used to implement the [`DeviceInformation`](https://learn.microsoft.com/en-us/uwp/api/windows.devices.enumeration.deviceinformation?view=winrt-26100) class.
* [`DEVPROP_FILTER_EXPRESSION`](https://learn.microsoft.com/en-us/windows/win32/api/devfiltertypes/ns-devfiltertypes-devprop_filter_expression) allows filtering device queries by their properties. AQS filter strings would be parsed into an array of filters, which are then passed to the query object methods.
* `DevCreateObjectQuery` would be the backend for `DeviceWatcher`, as it provides asynchronous callbacks for initial device enumeration, device addition, removal and updates.
* [`DevGetObjects`](https://learn.microsoft.com/en-us/windows/win32/api/devquery/nf-devquery-devgetobjects) would be used to implement the `FindAllAsync*` methods.
This MR adds a basic implementation and tests for `DevGetObjects`.
--
v10: cfgmgr32: Add a basic implementation for DevGetObjects(Ex) for device interface objects.
cfgmgr32/test: Add tests for DevGetObjects.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8438
On Mon Jun 30 13:17:18 2025 +0000, Rémi Bernon wrote:
> 77622615b657feedfb379f51346b4d05a2cbd0c4 still fails with:
> ```
> cfgmgr32.c:561: Test succeeded inside todo block: got len 0
> cfgmgr32.c:562: Test succeeded inside todo block: got objects 0000000000000000
> cfgmgr32.c:566: Test succeeded inside todo block: got len 0
> cfgmgr32.c:567: Test succeeded inside todo block: got objects 0000000000000000
> ```
Apologies, I forgot to run final tests on this commit. Should be fixed now, thanks. Since the returned code in these two cases is `S_OK`, I have set both `len` and `objects` to dummy values to test whether they are correct set to zero/NULL respectively.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8438#note_108361