Mesa sometimes calls debug message callback from its own Unix native thread. Then it inevitably crashes in KeUserModeCallback().
So far I spotted only harmless notification messages called this way:
```
Shader Stats: SGPRS: 24 VGPRS: 12 Code Size: 124 LDS: 0 Scratch: 0 Max Waves: 10 Spilled SGPRs: 0 Spilled VGPRs: 0 PrivMem VGPRs: 0 Outputs: 1 PatchOutputs: 0 DivergentLoop: 0 InlineUniforms: 0 (PS, W64)
```
So I guess the best is just to ignore the callbacks called from native threads. The only other solution I see in the current architecture is to spin a PE thread from opengl and poll for debug messages, but that looks less than ideal and probably doesn't worth it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3553
> There's no special logic for NULL handles in the client side of NtTerminateProcess()
Actually there is some logic, and NULL handle has a special meaning in NtTerminateProcess. This would need tests to determine if the special meaning also applies to NtTerminateThread.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3447#note_42184
Since Yousician's last update, it was throwing an error when initialising audio output. Unfortunately I don't have access to the old version, but they seem to have dropped win<10 support, and are using only IAudioClient3_InitializeSharedAudioStream. They also use IDeviceTopology to get the type of the first output connector.
This is the bare minimum I needed to get it working.
--
v3: mmdevapi: add stub for IDeviceTopology
mmdevapi/tests: add test for IDeviceTopology
https://gitlab.winehq.org/wine/wine/-/merge_requests/3554
The first few patches will introduce temporary leaks or cyclic refs, but that's because we'll handle them properly with the dispex CC, and the last patch should fix this. Other objects' traversal will follow in another MR.
--
v3: mshtml: Traverse inner windows.
mshtml: Traverse variants using a helper function.
mshtml: Implement Cycle Collection for dispex without traversal.
mshtml: Implement Cycle Collection for outer windows.
mshtml: Split IUnknown methods for outer windows into separate vtable.
mshtml: Use unlink and destructor in the vtbl for HTMLLocation.
mshtml: Separate the HTMLLocation from the outer window.
mshtml: Use unlink and destructor in the vtbl for PerformanceTiming.
mshtml: Move PerformanceTiming related fields to the window.
mshtml: Move PerformanceNavigation related fields to the window.
mshtml: Move console to the inner window.
mshtml: Use ASCII strings for dispex object names.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3542
--
v3: tests: Add a test for fmod() with vector arguments.
vkd3d-shader: Use ternary operator in fmod() implementation.
vkd3d-shader/tpf: Use 'movc' to implement ternary operator.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/268