[g3.8pre-624-gf1d931517] Hexen freeze when switch kb. layout

Sun Mar 10, 2019 12:19 pm

When switching keyboard layouts in Hexen or Hexen: DD, the game locks up. For some reason, this doesn’t happen with any other IWAD, and because it’s an instant freeze, I can’t show anything by using a log file.

I’ve confirmed that this only happens when using Windows shortcuts (in my case, Shift + Alt + 1–4). When switching via the taskbar and returning to the game, GZDoom doesn’t lock up.

Below is a list of my keyboard layouts, if relevant:

Image

(Swedish, Croatian, Serbian, Russian)

Re: [g3.8pre-624-gf1d931517] Hexen freeze when switch kb. la

Sun Mar 10, 2019 9:45 pm

For this, it might be helpful to list your bindings for those selected keys.

Re: [g3.8pre-624-gf1d931517] Hexen freeze when switch kb. la

Sun Mar 10, 2019 11:06 pm

Rachael wrote:For this, it might be helpful to list your bindings for those selected keys.

You mean ingame? Shift for running, 1–4 is weapons, and Alt is unbound. And that’s not unique to Hexen—my bindings are the same in other games.

Re: [g3.8pre-624-gf1d931517] Hexen freeze when switch kb. la

Mon Mar 11, 2019 2:55 am

It dead locks inside DefWindowProcW() indeed.
Code:
win32u.dll!NtUserMessageCall()
user32.dll!RealDefWindowProcWorker()
user32.dll!DefWindowProcW()
gzdoom.exe!WndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 623
user32.dll!UserCallWinProcCheckWow()
user32.dll!CallWindowProcW()
opengl32.dll!wglWndProc()
user32.dll!UserCallWinProcCheckWow()
user32.dll!DispatchMessageWorker()
gzdoom.exe!I_GetEvent() Line 768
gzdoom.exe!I_StartTic() Line 791

The message in question was WM_INPUTLANGCHANGEREQUEST.

Re: [g3.8pre-624-gf1d931517] Hexen freeze when switch kb. la

Mon Mar 11, 2019 3:37 am

Not related to this problem, but that call trace finally reveals why it was impossible to do live switch between D3D and OpenGL in the past - behold that wglWndProc in there!