Page 1 of 1

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

Posted: Sun Mar 10, 2019 12:19 pm
by Kostov
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

Posted: Sun Mar 10, 2019 9:45 pm
by Rachael
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

Posted: Sun Mar 10, 2019 11:06 pm
by Kostov
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

Posted: Mon Mar 11, 2019 2:55 am
by _mental_
It dead locks inside DefWindowProcW() indeed.

Code: Select all

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

Posted: Mon Mar 11, 2019 3:37 am
by Graf Zahl
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!