aboutsummaryrefslogtreecommitdiffstats
path: root/LibOVR/Src/Kernel/OVR_Atomic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'LibOVR/Src/Kernel/OVR_Atomic.cpp')
-rw-r--r--LibOVR/Src/Kernel/OVR_Atomic.cpp164
1 files changed, 82 insertions, 82 deletions
diff --git a/LibOVR/Src/Kernel/OVR_Atomic.cpp b/LibOVR/Src/Kernel/OVR_Atomic.cpp
index a2f9230..d882758 100644
--- a/LibOVR/Src/Kernel/OVR_Atomic.cpp
+++ b/LibOVR/Src/Kernel/OVR_Atomic.cpp
@@ -1,82 +1,82 @@
-/************************************************************************************
-
-Filename : OVR_Atomic.cpp
-Content : Contains atomic operations and inline fastest locking
- functionality. Will contain #ifdefs for OS efficiency.
- Have non-thread-safe implementation if not available.
-Created : September 19, 2012
-Notes :
-
-Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved.
-
-Use of this software is subject to the terms of the Oculus license
-agreement provided at the time of installation or download, or which
-otherwise accompanies this software in either electronic or hard copy form.
-
-************************************************************************************/
-
-#include "OVR_Atomic.h"
-
-#ifdef OVR_ENABLE_THREADS
-
-// Include Windows 8-Metro compatible Synchronization API
-#if defined(OVR_OS_WIN32) && defined(NTDDI_WIN8) && (NTDDI_VERSION >= NTDDI_WIN8)
-#include <synchapi.h>
-#endif
-
-
-namespace OVR {
-
-// ***** Windows Lock implementation
-
-#if defined(OVR_OS_WIN32)
-
-// ***** Standard Win32 Lock implementation
-
-// Constructors
-Lock::Lock(unsigned spinCount)
-{
-#if defined(NTDDI_WIN8) && (NTDDI_VERSION >= NTDDI_WIN8)
- // On Windows 8 we use InitializeCriticalSectionEx due to Metro-Compatibility
- InitializeCriticalSectionEx(&cs, spinCount,
- OVR_DEBUG_SELECT(NULL, CRITICAL_SECTION_NO_DEBUG_INFO));
-#else
- // Spin count init critical section function prototype for Window NT
- typedef BOOL (WINAPI *Function_InitializeCriticalSectionAndSpinCount)
- (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
-
-
- // Try to load function dynamically so that we don't require NT
- // On Windows NT we will use InitializeCriticalSectionAndSpinCount
- static bool initTried = 0;
- static Function_InitializeCriticalSectionAndSpinCount pInitFn = 0;
-
- if (!initTried)
- {
- HMODULE hmodule = ::LoadLibrary(OVR_STR("kernel32.dll"));
- pInitFn = (Function_InitializeCriticalSectionAndSpinCount)
- ::GetProcAddress(hmodule, "InitializeCriticalSectionAndSpinCount");
- initTried = true;
- }
-
- // Initialize the critical section
- if (pInitFn)
- pInitFn(&cs, spinCount);
- else
- ::InitializeCriticalSection(&cs);
-#endif
-
-}
-
-
-Lock::~Lock()
-{
- DeleteCriticalSection(&cs);
-}
-
-
-#endif
-
-} // OVR
-
-#endif // OVR_ENABLE_THREADS
+/************************************************************************************
+
+Filename : OVR_Atomic.cpp
+Content : Contains atomic operations and inline fastest locking
+ functionality. Will contain #ifdefs for OS efficiency.
+ Have non-thread-safe implementation if not available.
+Created : September 19, 2012
+Notes :
+
+Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved.
+
+Use of this software is subject to the terms of the Oculus license
+agreement provided at the time of installation or download, or which
+otherwise accompanies this software in either electronic or hard copy form.
+
+************************************************************************************/
+
+#include "OVR_Atomic.h"
+
+#ifdef OVR_ENABLE_THREADS
+
+// Include Windows 8-Metro compatible Synchronization API
+#if defined(OVR_OS_WIN32) && defined(NTDDI_WIN8) && (NTDDI_VERSION >= NTDDI_WIN8)
+#include <synchapi.h>
+#endif
+
+
+namespace OVR {
+
+// ***** Windows Lock implementation
+
+#if defined(OVR_OS_WIN32)
+
+// ***** Standard Win32 Lock implementation
+
+// Constructors
+Lock::Lock(unsigned spinCount)
+{
+#if defined(NTDDI_WIN8) && (NTDDI_VERSION >= NTDDI_WIN8)
+ // On Windows 8 we use InitializeCriticalSectionEx due to Metro-Compatibility
+ InitializeCriticalSectionEx(&cs, spinCount,
+ OVR_DEBUG_SELECT(NULL, CRITICAL_SECTION_NO_DEBUG_INFO));
+#else
+ // Spin count init critical section function prototype for Window NT
+ typedef BOOL (WINAPI *Function_InitializeCriticalSectionAndSpinCount)
+ (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
+
+
+ // Try to load function dynamically so that we don't require NT
+ // On Windows NT we will use InitializeCriticalSectionAndSpinCount
+ static bool initTried = 0;
+ static Function_InitializeCriticalSectionAndSpinCount pInitFn = 0;
+
+ if (!initTried)
+ {
+ HMODULE hmodule = ::LoadLibrary(OVR_STR("kernel32.dll"));
+ pInitFn = (Function_InitializeCriticalSectionAndSpinCount)
+ ::GetProcAddress(hmodule, "InitializeCriticalSectionAndSpinCount");
+ initTried = true;
+ }
+
+ // Initialize the critical section
+ if (pInitFn)
+ pInitFn(&cs, spinCount);
+ else
+ ::InitializeCriticalSection(&cs);
+#endif
+
+}
+
+
+Lock::~Lock()
+{
+ DeleteCriticalSection(&cs);
+}
+
+
+#endif
+
+} // OVR
+
+#endif // OVR_ENABLE_THREADS