https://bugs.winehq.org/show_bug.cgi?id=41271
charles.gorand.dev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |charles.gorand.dev@gmail.co | |m
--- Comment #15 from charles.gorand.dev@gmail.com --- Wine 3.8 + dxvk + [bBackgroundMouse=1]:
Test 1 : normal use case
* Wine 3.8 with no changes.
=> Game stuck on intro : black screen.
Test 2 : prevent mixthread to lock anything and avoid any race condition in wine.
* Commenting while loop in DSOUND_mixthread()
=> Game stuck on intro : black screen.
Test 3 : Working scenario
* Change the code as follow :
static HRESULT DirectSoundDevice_Initialize(DirectSoundDevice ** ppDevice, LPCGUID lpcGUID) {
[...] device->thread = CreateThread(0, 0, DSOUND_mixthread, device, 0, 0); usleep(100000);
=> Game is working perfectly.
Test 4 : Working scenario and prevent mix thread to do anything.
* Code changes of Test 2 and 3
=> Game is working perfectly. (No sound on intro video)
My analysis (maybe I'm wrong) :
Test 1 and 2 show there is something wrong inside the game and not related to wine. I think we will get the same result if "dsound" implementation is completely stubs. (I can try it to confirm it). Test 2 shows there is no (visible?) race condition within wine (dsound) that cause the issue.
Test 3 and 4 confirm there is an issue in the game (sorry not easy to explain, but it looks clear for me).
Adding a delay in Initialize() or Release() will avoid a race condition in the game.
DirectSound is only used by intro player (bink player ?)
The game use XAudio and works perfectly once bink intro is skipped.
I tried also to change intro video permission to prevent game from playing it. The game is stuck with black screen.
If there is a way to disable bink player, I think it's the only way to play the game without hacking wine.