From c2e43984c20aa7f60f420b76e12f0b1721ae5682 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 4 Jan 2018 00:27:59 -0500 Subject: [PATCH] Fixed calling of KbdCharIn. It was just seven kinds of wrong before. Now it's gone from a stub to barely-usable. :) --- native/kbdcalls.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/native/kbdcalls.c b/native/kbdcalls.c index 81da8d4..7efa3bd 100644 --- a/native/kbdcalls.c +++ b/native/kbdcalls.c @@ -5,16 +5,17 @@ APIRET16 KbdCharIn(PKBDKEYINFO pkbci, USHORT fWait, HKBD hkbd) { TRACE_NATIVE("KbdCharIn(%p, %u, %u)", pkbci, fWait, hkbd); FIXME("this is just enough to survive 'press any key'"); - getchar(); + memset(pkbci, '\0', sizeof (*pkbci)); + pkbci->chChar = getchar(); return NO_ERROR; } // kbdCharIn static APIRET16 bridge16to32_KbdCharIn(uint8 *args) { - const HKBD hkbd = *((HKBD *) args); args += 2; - const USHORT fWait = *((USHORT *) args); args += 2; - //PKBDKEYINFO pkbci = (PKBDKEYINFO) GLoaderState->convert1616to32(*((uint32*) args)); //args += 4; - return KbdCharIn(NULL/*FIXMEpkbci*/, fWait, hkbd); + LX_NATIVE_MODULE_16BIT_BRIDGE_ARG(HKBD, hkbd); + LX_NATIVE_MODULE_16BIT_BRIDGE_ARG(USHORT, fWait); + LX_NATIVE_MODULE_16BIT_BRIDGE_PTRARG(PKBDKEYINFO, pkbci); + return KbdCharIn(pkbci, fWait, hkbd); } // bridge16to32_KbdCharIn LX_NATIVE_MODULE_16BIT_SUPPORT() @@ -28,7 +29,7 @@ LX_NATIVE_MODULE_DEINIT({ static int initKbdcalls(void) { LX_NATIVE_MODULE_INIT_16BIT_SUPPORT() - LX_NATIVE_INIT_16BIT_BRIDGE(KbdCharIn, 8) + LX_NATIVE_INIT_16BIT_BRIDGE(KbdCharIn, 6) LX_NATIVE_MODULE_INIT_16BIT_SUPPORT_END() return 1; } // initViocalls