Follow-up to !8184.
This also adds a bunch of helpers for writing media source tests (without involving the mf session) in mfsrcsnk, these could be helpful for more tests of this kind in the future. I'm somewhat unsure as to why we haven't done tests for source behavior so far: while those are plugins, applications rely on a bunch of things in the builtin sources that microsoft provides.
Since this affects both mfsrcsnk and winegstreamer sources, tests should be run both with `HKCU\\Software\\Wine\\MediaFoundation\\DisableGstByteStreamHandler` enabled and disabled. Due to this I figured it'd make sense to implement everything first and then remove the test todo_wine's and the statements rejecting the thin parameter in a single commit ("Allow thinning"). Perhaps this could be solved more nicely by setting the registry key in the tests themselves? I'm unsure if that is something we do in tests, generally.
`MEStreamThinMode` events need to be emitted between the last sample using the outdated thinning parameter and the first sample using the updated thinning parameter. The winegstreamer implementation for this turned out a bit complex, if there is a simpler way to do this please let me know.
Regarding winegstreamer, note that buffers need to be intercepted before the decoder because decoders often discard `GST_BUFFER_FLAG_DELTA_UNIT` flags (which is already annoying in itself - it causes all samples to be marked as `MFSampleExtension_CleanPoint`, this should potentially be worked around in the future). But even besides that, intercepting before the decoder is the "proper" implementation, since the point of thinning is increasing decoding speed by skipping delta frames, tho there are some games that rely on the semantics as well.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8505
On Thu Jul 3 15:55:50 2025 +0000, Vibhav Pant wrote:
> Even if the tests are being run in a virtual/containerized environment,
> they still are real/compliant systems for our purposes. The tests ensure
> that APIs behave exactly the same on Wine and Windows, real or not.
> Windows seems to always set `ACLineStatus` to 1, including on
> virtualized environments where there is no power supply information
> available to the system. Wine's implementation should do the same.
Hello Vibhav,
You only spoke of `LPSYSTEM_POWER_STATUS.ACLineStatus` used in `powermgnt.GetSystemPowerStatus`.
Am I to assume `SYSTEM_BATTERY_STATE.AcOnLine` in `system.fill_battery_state` holds a value reflecting the system's actual state?
Asking so I'm sure where to enforce that logic.
Thanks.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8460#note_108840
The main motivation here is to unify the build configuration. This primarily impacts GCC MinGW, since Clang already defaults to using SSE. Additionally, downstream projects like Proton and CrossOver already use `-mfpmath=sse`.
This does slightly change the compatibility requirements, we now assume SSE support. That’s unlikely to be an issue today, but for those who need it, the behavior can still be overridden via `CROSSCFLAGS`. If needed, we could also add a `--disable-sse` configure option to make this easier to control.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8487
This MR improves widl with :
- fixes a segfault when inheriting from an incomplete interface
(prints an error message instead),
- supports (for C++) inheriting from interfaces which are declared
after the declaration of the derived interface.
--
v2: include: Remove duplicated declarations in .idl files.
tools/widl: Ensure inherited interface is declared before using it.
tools/widl: Remove unneeded condition.
tools/widl: Fix segfault when inheriting from an incomplete interface.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8500
Tests and implementation for IFileOpearation_NewItem, which a Windows file explorer that I really like needs.
--
v3: shell32: Implement IFileOperation_NewItem for directory creation.
shell32/tests: Add tests for IFileOperation_NewItem.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8491