diff options
author | Jaroslav Hensl <emulator@emulace.cz> | 2024-07-29 12:35:53 +0200 |
---|---|---|
committer | Jaroslav Hensl <emulator@emulace.cz> | 2024-07-29 12:35:53 +0200 |
commit | aa6a69c3b3e147581eb6f1339ae73e876841ef95 (patch) | |
tree | 4fba4a7a3774b12c924f8de81108364694977eb4 /vxd_main.c | |
parent | fa14048fc349d2a0d3ba58b313dcc3137a48dd1d (diff) | |
download | vmdisp9x-aa6a69c3b3e147581eb6f1339ae73e876841ef95.tar.gz |
critical sections reworked, resolution set fix
Diffstat (limited to 'vxd_main.c')
-rw-r--r-- | vxd_main.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -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;
}
|