]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Added uae_sem_trywait_delay()
authorToni Wilen <twilen@winuae.net>
Sun, 7 Feb 2016 13:41:32 +0000 (15:41 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 7 Feb 2016 13:41:32 +0000 (15:41 +0200)
od-win32/posixemu.cpp
od-win32/threaddep/thread.h

index 3016317933d05206aa7b4c55efe551f7787bf9b4..3129a03e07fab142afce2622cc8b74c3d6bbd3e6 100644 (file)
@@ -115,9 +115,19 @@ void uae_sem_post (uae_sem_t * event)
        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)
index 06a262473d79a662fea4e8cc929b428d7c3c2090..545df235f3fc76a882ae86e8da8243240abe83ca 100644 (file)
@@ -1,19 +1,20 @@
 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);