Use compiler intrinsics on Windows
This commit is contained in:
parent
6654cd07b3
commit
cdb1bda300
1 changed files with 3 additions and 3 deletions
|
@ -25,8 +25,7 @@
|
||||||
#include "SDL_timer.h"
|
#include "SDL_timer.h"
|
||||||
|
|
||||||
#if defined(__WIN32__)
|
#if defined(__WIN32__)
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#include <intrin.h>
|
||||||
#include <windows.h>
|
|
||||||
|
|
||||||
#elif defined(__MACOSX__)
|
#elif defined(__MACOSX__)
|
||||||
#include <libkern/OSAtomic.h>
|
#include <libkern/OSAtomic.h>
|
||||||
|
@ -39,7 +38,8 @@ SDL_bool
|
||||||
SDL_AtomicTryLock(SDL_SpinLock *lock)
|
SDL_AtomicTryLock(SDL_SpinLock *lock)
|
||||||
{
|
{
|
||||||
#if defined(__WIN32__)
|
#if defined(__WIN32__)
|
||||||
return (InterlockedExchange(lock, 1) == 0);
|
SDL_COMPILE_TIME_ASSERT(locksize, sizeof(*lock) == sizeof(long));
|
||||||
|
return (_InterlockedExchange((long*)lock, 1) == 0);
|
||||||
|
|
||||||
#elif defined(__MACOSX__)
|
#elif defined(__MACOSX__)
|
||||||
return OSAtomicCompareAndSwap32Barrier(0, 1, lock);
|
return OSAtomicCompareAndSwap32Barrier(0, 1, lock);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue