aboutsummaryrefslogtreecommitdiffstats
path: root/vxd_main.c
diff options
context:
space:
mode:
authorJaroslav Hensl <emulator@emulace.cz>2024-07-29 12:35:53 +0200
committerJaroslav Hensl <emulator@emulace.cz>2024-07-29 12:35:53 +0200
commitaa6a69c3b3e147581eb6f1339ae73e876841ef95 (patch)
tree4fba4a7a3774b12c924f8de81108364694977eb4 /vxd_main.c
parentfa14048fc349d2a0d3ba58b313dcc3137a48dd1d (diff)
downloadvmdisp9x-aa6a69c3b3e147581eb6f1339ae73e876841ef95.tar.gz
critical sections reworked, resolution set fix
Diffstat (limited to 'vxd_main.c')
-rw-r--r--vxd_main.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/vxd_main.c b/vxd_main.c
index 2075291..be21baf 100644
--- a/vxd_main.c
+++ b/vxd_main.c
@@ -229,6 +229,7 @@ WORD __stdcall VXD_API_Proc(PCRS_32 state)
WORD service = state->Client_EDX & 0xFFFF;
// dbg_printf(dbg_vxd_api, service);
+ Begin_Critical_Section(0);
switch(service)
{
@@ -369,8 +370,6 @@ WORD __stdcall VXD_API_Proc(PCRS_32 state)
}
- Cleanup_Critical_Section();
-
if(rc == 0xFFFF)
{
state->Client_EFlags |= 0x1; // set carry
@@ -380,6 +379,8 @@ WORD __stdcall VXD_API_Proc(PCRS_32 state)
state->Client_EFlags &= 0xFFFFFFFEUL; // clear carry
}
+ End_Critical_Section();
+
return rc;
}
@@ -497,6 +498,8 @@ DWORD __stdcall Device_IO_Control_proc(DWORD vmhandle, struct DIOCParams *params
DWORD *outBuf = (DWORD*)params->lpOutBuffer;
DWORD rc = 1;
+ Begin_Critical_Section(0);
+
//dbg_printf(dbg_deviceiocontrol, params->dwIoControlCode);
switch(params->dwIoControlCode)
@@ -642,8 +645,8 @@ DWORD __stdcall Device_IO_Control_proc(DWORD vmhandle, struct DIOCParams *params
break;
}
- Cleanup_Critical_Section();
//dbg_printf(dbg_deviceiocontrol_leave);
+ End_Critical_Section();
return rc;
}