os: Implement pipe_condvar on Windows Vista and later
Unfortunately compiling with these defines enabled would mean Gallium can't run on Windows XP/2003 or older. Todo: Need a macro to declare if we don't care about WinXP compatibililty.
This commit is contained in:
parent
9795a60a8f
commit
f321d5c38a
|
@ -168,6 +168,35 @@ typedef CRITICAL_SECTION pipe_mutex;
|
|||
#define pipe_mutex_unlock(mutex) \
|
||||
LeaveCriticalSection(&mutex)
|
||||
|
||||
/* TODO: Need a macro to declare "I don't care about WinXP compatibilty" */
|
||||
#if 0 && defined (_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600)
|
||||
/* CONDITION_VARIABLE is only available on newer versions of Windows
|
||||
* (Server 2008/Vista or later).
|
||||
* http://msdn.microsoft.com/en-us/library/ms682052(VS.85).aspx
|
||||
*
|
||||
* pipe_condvar
|
||||
*/
|
||||
typedef CONDITION_VARIABLE pipe_condvar;
|
||||
|
||||
#define pipe_static_condvar(cond) \
|
||||
/*static*/ pipe_condvar cond = CONDITION_VARIABLE_INIT
|
||||
|
||||
#define pipe_condvar_init(cond) \
|
||||
InitializeConditionVariable(&(cond))
|
||||
|
||||
#define pipe_condvar_destroy(cond) \
|
||||
(void) cond /* nothing to do */
|
||||
|
||||
#define pipe_condvar_wait(cond, mutex) \
|
||||
SleepConditionVariableCS(&(cond), &(mutex), INFINITE)
|
||||
|
||||
#define pipe_condvar_signal(cond) \
|
||||
WakeConditionVariable(&(cond))
|
||||
|
||||
#define pipe_condvar_broadcast(cond) \
|
||||
WakeAllConditionVariable(&(cond))
|
||||
|
||||
#else /* need compatibility with pre-Vista Win32 */
|
||||
|
||||
/* pipe_condvar (XXX FIX THIS)
|
||||
* See http://www.cs.wustl.edu/~schmidt/win32-cv-1.html
|
||||
|
@ -199,6 +228,7 @@ typedef DWORD pipe_condvar;
|
|||
#define pipe_condvar_broadcast(cond) \
|
||||
(void) cond
|
||||
|
||||
#endif /* pre-Vista win32 */
|
||||
|
||||
#else
|
||||
|
||||
|
|
Loading…
Reference in New Issue