From a0b5ac424b8bc310223137e7dc00d2eeeddb9ec6 Mon Sep 17 00:00:00 2001 From: Michal Krol Date: Fri, 5 Sep 2008 15:10:47 +0200 Subject: gallium: Add pipe_thread primitives for PIPE_SUBSYSTEM_WINDOWS_USER config. --- src/gallium/include/pipe/p_thread.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/gallium/include') diff --git a/src/gallium/include/pipe/p_thread.h b/src/gallium/include/pipe/p_thread.h index b3dfc91781..d4b1c3f486 100644 --- a/src/gallium/include/pipe/p_thread.h +++ b/src/gallium/include/pipe/p_thread.h @@ -85,6 +85,30 @@ typedef pthread_cond_t pipe_condvar; #include typedef HANDLE pipe_thread; + +#define PIPE_THREAD_ROUTINE( name, param ) \ + void * WINAPI name( void *param ) + +static INLINE pipe_thread pipe_thread_create( void *(WINAPI * routine)( void *), void *param ) +{ + DWORD id; + return CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE) routine, param, 0, &id ); +} + +static INLINE int pipe_thread_wait( pipe_thread thread ) +{ + if (WaitForSingleObject( thread, INFINITE ) == WAIT_OBJECT_0) + return 0; + return -1; +} + +static INLINE int pipe_thread_destroy( pipe_thread thread ) +{ + if (CloseHandle( thread )) + return 0; + return -1; +} + typedef CRITICAL_SECTION pipe_mutex; #define pipe_static_mutex(name) \ -- cgit v1.2.3