Page 1 of 1

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

PostPosted: Sun Mar 10, 2019 1:19 pm
by Undead
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

PostPosted: Sun Mar 10, 2019 10: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

PostPosted: Mon Mar 11, 2019 12:06 am
by Undead
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

PostPosted: Mon Mar 11, 2019 3:55 am
by _mental_
It dead locks inside DefWindowProcW() indeed.
Code: Select allExpand view
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

PostPosted: Mon Mar 11, 2019 4: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!