Tests can fail (seen on slow VMs) because `GetExitCodeProcess` is called before the child process is marked as terminated. `STILL_ACTIVE` is returned instead of the expected `1`.
dlls/kernel32/tests/loader.c#L3984 does a similar thing.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6339
IoGetDevicePropertyData is used to implement the `IOCTL_BTH_GET_DEVICE_INFO` Bluetooth IOCTL to fetch cached information for remote devices, without having to access the device extension pointer (which is arguably racy and more fragile).
--
v4: ntoskrnl: Implement IoGetDevicePropertyData().
https://gitlab.winehq.org/wine/wine/-/merge_requests/6338
IoGetDevicePropertyData is used to implement the `IOCTL_BTH_GET_DEVICE_INFO` Bluetooth IOCTL to fetch cached information for remote devices, without having to access the device extension pointer (which is arguably racy and more fragile).
--
v3: ntoskrnl: Implement IoGetDevicePropertyData().
https://gitlab.winehq.org/wine/wine/-/merge_requests/6338
IoGetDevicePropertyData is used to implement the `IOCTL_BTH_GET_DEVICE_INFO` Bluetooth IOCTL to fetch cached information for remote devices, without having to access the device extension pointer (which is arguably racy and more fragile).
--
v2: ntoskrnl: Implement IoGetDevicePropertyData().
https://gitlab.winehq.org/wine/wine/-/merge_requests/6338
The fact that this function was excluded on i386 seems to have
been a mistake since the initial version where ucrtbase was added,
in 599d92a26822244b9703734a6a8972a0009cdf09; many float math
functions (with an -f) suffix is unavailable in ucrtbase.dll on
i386, but powf does seem to have existed in all versions of the DLL
that I can find.
Signed-off-by: Martin Storsjö <martin(a)martin.st>
--
v2: ucrtbase: Export powf on i386
https://gitlab.winehq.org/wine/wine/-/merge_requests/6336
IoGetDevicePropertyData is used to implement the `IOCTL_BTH_GET_DEVICE_INFO` Bluetooth IOCTL to fetch cached information for remote devices, without having to access the device extension pointer (which is arguably racy and more fragile).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6338
This is based on work done by Andrew Eikum. It has been in some form in Proton for the last 4 years.
If server's sampling rate is not 48kHz **DOOM Eternal** will try to set it 48kHz for the streams using the implemented interface. There's a whole class of audio devices that use 44.1kHz sampling rate and at least PulseAudio / PipeWire tends to inherit the value from the hardware to avoid resampling. The value can also be overridden by the user via the audio server's config files.
In such cases, if the interface is not present or stubbed, this results in **audio underruns and noticeable crackling**.
It's easy to test with pipewire-pulse:
```
$ cat /etc/pipewire/pipewire.conf.d/sample-rate.conf
context.properties = {
default.clock.rate = 41100
}
```
With PulseAudio this should be doable via setting `default-sample-rate = 41100` in `/etc/pulse/daemon.conf`.
--
v7: winepulse.drv: Implement set_sample_rate.
mmdevapi: Add stub IAudioClockAdjustment implementation.
mmdevapi/tests: Add more IAudioClock tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5585
The fact that this function was excluded on i386 seems to have
been a mistake since the initial version where ucrtbase was added,
in 599d92a26822244b9703734a6a8972a0009cdf09; many float math
functions (with an -f) suffix is unavailable in ucrtbase.dll on
i386, but powf does seem to have existed in all versions of the DLL
that I can find.
Signed-off-by: Martin Storsjö <martin(a)martin.st>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6336