The following sequence can occur:
sink_EndOfStream,
lock stream_cs,
renderer sink_eos,
strmbase_passthrough_eos,
IMediaSeeking_GetStopPosition,
MediaSeekingPassThru_GetStopPosition,
get_connected,
IPin_ConnectedTo,
lock filter_cs
And at the same time:
filter_Stop,
lock filter_cs,
dmo_wrapper_cleanup_stream,
lock stream_cs
Resulting in deadlock. This can occur in Space Engineers.
dmo_wrapper_cleanup_stream() locks stream_cs to access `pin.peer` and `pin.pAllocator`, which are normally protected by filter_cs, but this lock was added to fix a test failure, so I don't know if there's an alternative.
I'm concerned about the possible performance impact of removing stream_cs though.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8712
This is a prereq for cross-process suspend on WOW64 - the thread created for that needs to run even when the whole process is suspended by e.g. the debugger.
Will be follow-up changes for THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH and THREAD_CREATE_FLAGS_SKIP_LOADER_INIT to support creating a native thread for that.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8751
avdec_h264 will fail when combined with h264parse and a drain request
is made during caps neg.
To fix this, a capsfilter was added to force a stream-format of
byte-stream for all h.264 decoders. However, this introduced a new
issue with the vtdec element, as it only supports the avc stream-format.
Therefore, this patch looks to address both problems by only introducing
the capsfilter when the avdec_h264 element is used.
It also removes the stream-format and alignment requirements from
the parsed caps, applying them only to the capsfilter.
--
v2: winegstreamer: Only add the capsfilter for avdec_h264.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8719
> The `fill_planes()` helper in `gst-plugins-base/gst-libs/gst/video/video-info.c` called from `gst_video_info_align_full()` sets the minimum alignment. Apparently, setting an alignment manually in `GstVideoInfo` can only increase it.
That's true, but I haven't found anything to indicate that we can't set the stride members of GstVideoInfo manually. I haven't found anything in the base video library, or several decoders, that seems to care about "minimum" alignment, and I don't really know why it would.
> If I set `plane_align = 1` in `wg_transform_read_data()`, gstreamer still can't fit the output in the buffer.
Because we implement stride by actually adding padding instead. That's arguably not very correct, but maybe there was a reason I've forgotten.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8034#note_112635
shell32: Run the conformance tests for the PickIconDlg function.
The conformance test verifies that PickIconDlg behaves in the same way as the original function when illegal parameter values are used.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8747
This merge request restores `DIPROP_AUTOCENTER` support to the SDL and udev input backends. It also
* adds an `Autocenter` registry app key that lets the default `DIPROP_AUTOCENTER` setting to be set on a per device and per application and device level,
* logs a warning on acquisition when `DIPROP_AUTOCENTER` hasn't been checked or set that that is the case and the default can be changed via the 'Autocenter' app key if required.
Together these two should provide a robust solution for the issues some where having with autocenter being incorrectly on for some programs and devices.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8744
Inverting left/right trigger usages and Y values, so that WGI doesn't
need to mess with axes order.
--
v2: winebus: Use a vendor specific usage for gamepad guide buttons.
windows.gaming.input: Use a generic dinput device data format.
winebus: Improve gamepad report compatibility with XUSB / GIP.
windows.gaming.input: Only create Gamepad instances for XInput devices.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8746