https://bugs.winehq.org/show_bug.cgi?id=37716
--- Comment #15 from Stefan Dösinger stefan@codeweavers.com --- Created attachment 50351 --> https://bugs.winehq.org/attachment.cgi?id=50351 user32: Call SetActiveWindow in SetWindowPos instead of SetForegroundWindow.
Please give this patch a try. It fixes graw2 for me, both inside a virtual desktop and with KDE. I didn't get gstreamer working yet, so I can't test GTA VC.
From the patch description:
Graw2 has a thread t1 owning a window w1 that is used as device and focus window for d3d. That makes w1 the active window for t1 and the global foreground window. Another thread t2 owns window w2, created before w1. w2 is used as a loading splash window. After creating the d3d device, w2 is repositioned with SetWindowPos(SWP_SHOWWINDOW) to match the d3d device's resolution.
Currently this SetWindowPos call makes w2 the foreground window. A while later w2 is destroyed, and the foreground window switches to w1. This switch (correctly) generates two WM_ACTIVATEAPP messages and the first of them causes wined3d to minimize the device window w1.
The SetWindowPos call also happens on Windows, but the splash screen is only seen after device creation with Aero disabled.