SetEvent (*event);
}
+int uae_sem_trywait_delay(uae_sem_t * event, int millis)
+{
+ int v = WaitForSingleObject(*event, millis);
+ if (v == WAIT_OBJECT_0)
+ return 0;
+ if (v == WAIT_ABANDONED)
+ return -2;
+ return -1;
+}
+
int uae_sem_trywait (uae_sem_t * event)
{
- return WaitForSingleObject (*event, 0) == WAIT_OBJECT_0 ? 0 : -1;
+ return uae_sem_trywait_delay(event, 0);
}
void uae_sem_destroy (uae_sem_t * event)
typedef HANDLE uae_sem_t;
typedef HANDLE uae_thread_id;
-extern void uae_sem_destroy (uae_sem_t*);
-extern int uae_sem_trywait (uae_sem_t*);
-extern void uae_sem_post (uae_sem_t*);
-extern void uae_sem_wait (uae_sem_t*t);
-extern void uae_sem_init (uae_sem_t*, int manual_reset, int initial_state);
-extern int uae_start_thread (const TCHAR *name, void *(*f)(void *), void *arg, uae_thread_id *thread);
-extern int uae_start_thread_fast (void *(*f)(void *), void *arg, uae_thread_id *thread);
-extern void uae_end_thread (uae_thread_id *thread);
-extern void uae_set_thread_priority (uae_thread_id *, int);
+extern void uae_sem_destroy(uae_sem_t*);
+extern int uae_sem_trywait(uae_sem_t*);
+extern int uae_sem_trywait_delay(uae_sem_t*, int);
+extern void uae_sem_post(uae_sem_t*);
+extern void uae_sem_wait(uae_sem_t*t);
+extern void uae_sem_init(uae_sem_t*, int manual_reset, int initial_state);
+extern int uae_start_thread(const TCHAR *name, void *(*f)(void *), void *arg, uae_thread_id *thread);
+extern int uae_start_thread_fast(void *(*f)(void *), void *arg, uae_thread_id *thread);
+extern void uae_end_thread(uae_thread_id *thread);
+extern void uae_set_thread_priority(uae_thread_id *, int);
#include "commpipe.h"
-STATIC_INLINE void uae_wait_thread (uae_thread_id tid)
+STATIC_INLINE void uae_wait_thread(uae_thread_id tid)
{
WaitForSingleObject (tid, INFINITE);
CloseHandle (tid);