diff --git a/src/lib/cothread/x86.c b/src/lib/cothread/x86.c index 2d083995b3d..b4d58f8bb8b 100644 --- a/src/lib/cothread/x86.c +++ b/src/lib/cothread/x86.c @@ -38,6 +38,13 @@ static unsigned char co_swap_function[] = { DWORD old_privileges; VirtualProtect(co_swap_function, sizeof co_swap_function, PAGE_EXECUTE_READWRITE, &old_privileges); } +#elif defined(__OS2__) + #define INCL_DOS + #include + + void co_init() { + DosSetMem(co_swap_function, sizeof co_swap_function, PAG_READ | PAG_WRITE | PAG_EXECUTE); + } #else #include #include diff --git a/src/osd/sdl/sdlsync_os2.c b/src/osd/sdl/sdlsync_os2.c index e382fee91ae..8ea3dcc56c4 100644 --- a/src/osd/sdl/sdlsync_os2.c +++ b/src/osd/sdl/sdlsync_os2.c @@ -391,7 +391,9 @@ int osd_event_wait(osd_event *event, osd_ticks_t timeout) { ULONG ulCount; - DosResetEventSem(event->hev, &ulCount); + if(rc == 0) + DosResetEventSem(event->hev, &ulCount); + DosReleaseMutexSem(event->hmtx); }