зеркало из https://github.com/AvaloniaUI/angle.git
Update clang-format settings.
To allow for extern "C" declarations to not break on a brace. This preserves the current code style. Also add indented preprocessor definitions. This makes the formatting of "platform.h" much nicer. Bug: angleproject:2971 Change-Id: I392babe0c8d67539a8e026a36a023a7404bb63c2 Reviewed-on: https://chromium-review.googlesource.com/c/1347452 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
This commit is contained in:
Родитель
7198ebc48c
Коммит
7fa8824b15
|
@ -13,7 +13,24 @@ IndentWidth: 4
|
|||
ColumnLimit: 100
|
||||
|
||||
# Always break before braces
|
||||
BreakBeforeBraces: Allman
|
||||
BreakBeforeBraces: Custom
|
||||
BraceWrapping:
|
||||
AfterClass: true
|
||||
AfterControlStatement: true
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: false
|
||||
SplitEmptyRecord: false
|
||||
SplitEmptyNamespace: false
|
||||
|
||||
# Keeps extern "C" blocks unindented.
|
||||
AfterExternBlock: false
|
||||
|
||||
# Indent case labels.
|
||||
IndentCaseLabels: true
|
||||
|
@ -33,3 +50,6 @@ AllowShortCaseLabelsOnASingleLine: false
|
|||
|
||||
# Useful for spacing out functions in classes
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
|
||||
# Indent nested PP directives.
|
||||
IndentPPDirectives: AfterHash
|
||||
|
|
|
@ -13,15 +13,15 @@
|
|||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <ios>
|
||||
#include <iomanip>
|
||||
#include <ios>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
#include "common/angleutils.h"
|
||||
|
||||
#if !defined(TRACE_OUTPUT_FILE)
|
||||
#define TRACE_OUTPUT_FILE "angle_debug.txt"
|
||||
# define TRACE_OUTPUT_FILE "angle_debug.txt"
|
||||
#endif
|
||||
|
||||
namespace gl
|
||||
|
@ -80,12 +80,12 @@ class LogMessage : angle::NonCopyable
|
|||
class DebugAnnotator : angle::NonCopyable
|
||||
{
|
||||
public:
|
||||
DebugAnnotator(){};
|
||||
virtual ~DebugAnnotator() { };
|
||||
DebugAnnotator() {}
|
||||
virtual ~DebugAnnotator() {}
|
||||
virtual void beginEvent(const char *eventName, const char *eventMessage) = 0;
|
||||
virtual void endEvent(const char *eventName) = 0;
|
||||
virtual void setMarker(const char *markerName) = 0;
|
||||
virtual bool getStatus() = 0;
|
||||
virtual bool getStatus() = 0;
|
||||
// Log Message Handler that gets passed every log message,
|
||||
// when debug annotations are initialized,
|
||||
// replacing default handling by LogMessage.
|
||||
|
@ -215,11 +215,11 @@ std::ostream &FmtHex(std::ostream &os, T value)
|
|||
} // namespace gl
|
||||
|
||||
#if defined(ANGLE_ENABLE_DEBUG_TRACE) || defined(ANGLE_ENABLE_DEBUG_ANNOTATIONS)
|
||||
#define ANGLE_TRACE_ENABLED
|
||||
# define ANGLE_TRACE_ENABLED
|
||||
#endif
|
||||
|
||||
#if !defined(NDEBUG) || defined(ANGLE_ENABLE_RELEASE_ASSERTS)
|
||||
#define ANGLE_ENABLE_ASSERTS
|
||||
# define ANGLE_ENABLE_ASSERTS
|
||||
#endif
|
||||
|
||||
#define WARN() ANGLE_LOG(WARN)
|
||||
|
@ -227,28 +227,32 @@ std::ostream &FmtHex(std::ostream &os, T value)
|
|||
|
||||
// A macro to log a performance event around a scope.
|
||||
#if defined(ANGLE_TRACE_ENABLED)
|
||||
#if defined(_MSC_VER)
|
||||
#define EVENT(message, ...) gl::ScopedPerfEventHelper scopedPerfEventHelper ## __LINE__("%s" message "\n", __FUNCTION__, __VA_ARGS__);
|
||||
# if defined(_MSC_VER)
|
||||
# define EVENT(message, ...) \
|
||||
gl::ScopedPerfEventHelper scopedPerfEventHelper##__LINE__("%s" message "\n", \
|
||||
__FUNCTION__, __VA_ARGS__);
|
||||
# else
|
||||
# define EVENT(message, ...) \
|
||||
gl::ScopedPerfEventHelper scopedPerfEventHelper("%s" message "\n", __FUNCTION__, \
|
||||
##__VA_ARGS__);
|
||||
# endif // _MSC_VER
|
||||
#else
|
||||
#define EVENT(message, ...) gl::ScopedPerfEventHelper scopedPerfEventHelper("%s" message "\n", __FUNCTION__, ##__VA_ARGS__);
|
||||
#endif // _MSC_VER
|
||||
#else
|
||||
#define EVENT(message, ...) (void(0))
|
||||
# define EVENT(message, ...) (void(0))
|
||||
#endif
|
||||
|
||||
#if defined(COMPILER_GCC) || defined(__clang__)
|
||||
#define ANGLE_CRASH() __builtin_trap()
|
||||
# define ANGLE_CRASH() __builtin_trap()
|
||||
#else
|
||||
#define ANGLE_CRASH() ((void)(*(volatile char *)0 = 0)), __assume(0)
|
||||
# define ANGLE_CRASH() ((void)(*(volatile char *)0 = 0)), __assume(0)
|
||||
#endif
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
#define ANGLE_ASSERT_IMPL(expression) assert(expression)
|
||||
#define ANGLE_ASSERT_IMPL_IS_NORETURN 0
|
||||
# define ANGLE_ASSERT_IMPL(expression) assert(expression)
|
||||
# define ANGLE_ASSERT_IMPL_IS_NORETURN 0
|
||||
#else
|
||||
// TODO(jmadill): Detect if debugger is attached and break.
|
||||
#define ANGLE_ASSERT_IMPL(expression) ANGLE_CRASH()
|
||||
#define ANGLE_ASSERT_IMPL_IS_NORETURN 1
|
||||
# define ANGLE_ASSERT_IMPL(expression) ANGLE_CRASH()
|
||||
# define ANGLE_ASSERT_IMPL_IS_NORETURN 1
|
||||
#endif // !defined(NDEBUG)
|
||||
|
||||
// Note that gSwallowStream is used instead of an arbitrary LOG() stream to avoid the creation of an
|
||||
|
@ -265,78 +269,80 @@ std::ostream &FmtHex(std::ostream &os, T value)
|
|||
|
||||
// A macro asserting a condition and outputting failures to the debug log
|
||||
#if defined(ANGLE_ENABLE_ASSERTS)
|
||||
#define ASSERT(expression) \
|
||||
(expression ? static_cast<void>(0) : ((ERR() << "\t! Assert failed in " << __FUNCTION__ << "(" \
|
||||
<< __LINE__ << "): " << #expression), \
|
||||
ANGLE_ASSERT_IMPL(expression)))
|
||||
#define UNREACHABLE_IS_NORETURN ANGLE_ASSERT_IMPL_IS_NORETURN
|
||||
# define ASSERT(expression) \
|
||||
(expression ? static_cast<void>(0) \
|
||||
: ((ERR() << "\t! Assert failed in " << __FUNCTION__ << "(" << __LINE__ \
|
||||
<< "): " << #expression), \
|
||||
ANGLE_ASSERT_IMPL(expression)))
|
||||
# define UNREACHABLE_IS_NORETURN ANGLE_ASSERT_IMPL_IS_NORETURN
|
||||
#else
|
||||
#define ASSERT(condition) ANGLE_EAT_STREAM_PARAMETERS << !(condition)
|
||||
#define UNREACHABLE_IS_NORETURN 0
|
||||
# define ASSERT(condition) ANGLE_EAT_STREAM_PARAMETERS << !(condition)
|
||||
# define UNREACHABLE_IS_NORETURN 0
|
||||
#endif // defined(ANGLE_ENABLE_ASSERTS)
|
||||
|
||||
#define ANGLE_UNUSED_VARIABLE(variable) (static_cast<void>(variable))
|
||||
|
||||
// A macro to indicate unimplemented functionality
|
||||
#ifndef NOASSERT_UNIMPLEMENTED
|
||||
#define NOASSERT_UNIMPLEMENTED 1
|
||||
# define NOASSERT_UNIMPLEMENTED 1
|
||||
#endif
|
||||
|
||||
#if defined(ANGLE_TRACE_ENABLED) || defined(ANGLE_ENABLE_ASSERTS)
|
||||
#define UNIMPLEMENTED() \
|
||||
do \
|
||||
{ \
|
||||
WARN() << "\t! Unimplemented: " << __FUNCTION__ << "(" << __FILE__ << ":" << __LINE__ \
|
||||
<< ")"; \
|
||||
ASSERT(NOASSERT_UNIMPLEMENTED); \
|
||||
} while (0)
|
||||
# define UNIMPLEMENTED() \
|
||||
do \
|
||||
{ \
|
||||
WARN() << "\t! Unimplemented: " << __FUNCTION__ << "(" << __FILE__ << ":" << __LINE__ \
|
||||
<< ")"; \
|
||||
ASSERT(NOASSERT_UNIMPLEMENTED); \
|
||||
} while (0)
|
||||
|
||||
// A macro for code which is not expected to be reached under valid assumptions
|
||||
#define UNREACHABLE() \
|
||||
do \
|
||||
{ \
|
||||
ERR() << "\t! Unreachable reached: " << __FUNCTION__ << "(" << __FILE__ << ":" << __LINE__ \
|
||||
<< ")"; \
|
||||
ASSERT(false); \
|
||||
} while (0)
|
||||
# define UNREACHABLE() \
|
||||
do \
|
||||
{ \
|
||||
ERR() << "\t! Unreachable reached: " << __FUNCTION__ << "(" << __FILE__ << ":" \
|
||||
<< __LINE__ << ")"; \
|
||||
ASSERT(false); \
|
||||
} while (0)
|
||||
#else
|
||||
#define UNIMPLEMENTED() \
|
||||
do \
|
||||
{ \
|
||||
ASSERT(NOASSERT_UNIMPLEMENTED); \
|
||||
} while (0)
|
||||
# define UNIMPLEMENTED() \
|
||||
do \
|
||||
{ \
|
||||
ASSERT(NOASSERT_UNIMPLEMENTED); \
|
||||
} while (0)
|
||||
|
||||
// A macro for code which is not expected to be reached under valid assumptions
|
||||
#define UNREACHABLE() \
|
||||
do \
|
||||
{ \
|
||||
ASSERT(false); \
|
||||
} while (0)
|
||||
# define UNREACHABLE() \
|
||||
do \
|
||||
{ \
|
||||
ASSERT(false); \
|
||||
} while (0)
|
||||
#endif // defined(ANGLE_TRACE_ENABLED) || defined(ANGLE_ENABLE_ASSERTS)
|
||||
|
||||
#if defined(ANGLE_PLATFORM_WINDOWS)
|
||||
#define ANGLE_FUNCTION __FUNCTION__
|
||||
# define ANGLE_FUNCTION __FUNCTION__
|
||||
#else
|
||||
#define ANGLE_FUNCTION __func__
|
||||
# define ANGLE_FUNCTION __func__
|
||||
#endif
|
||||
|
||||
// Defining ANGLE_ENABLE_STRUCT_PADDING_WARNINGS will enable warnings when members are added to
|
||||
// structs to enforce packing. This is helpful for diagnosing unexpected struct sizes when making
|
||||
// fast cache variables.
|
||||
#if defined(__clang__)
|
||||
#define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
|
||||
_Pragma("clang diagnostic push") _Pragma("clang diagnostic error \"-Wpadded\"")
|
||||
#define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("clang diagnostic pop")
|
||||
# define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
|
||||
_Pragma("clang diagnostic push") _Pragma("clang diagnostic error \"-Wpadded\"")
|
||||
# define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("clang diagnostic pop")
|
||||
#elif defined(COMPILER_GCC)
|
||||
#define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
|
||||
_Pragma("GCC diagnostic push") _Pragma("GCC diagnostic error \"-Wpadded\"")
|
||||
#define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("GCC diagnostic pop")
|
||||
# define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
|
||||
_Pragma("GCC diagnostic push") _Pragma("GCC diagnostic error \"-Wpadded\"")
|
||||
# define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS _Pragma("GCC diagnostic pop")
|
||||
#elif defined(_MSC_VER)
|
||||
#define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS __pragma(warning(push)) __pragma(warning(error : 4820))
|
||||
#define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS __pragma(warning(pop))
|
||||
# define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS \
|
||||
__pragma(warning(push)) __pragma(warning(error : 4820))
|
||||
# define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS __pragma(warning(pop))
|
||||
#else
|
||||
#define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS
|
||||
#define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS
|
||||
# define ANGLE_ENABLE_STRUCT_PADDING_WARNINGS
|
||||
# define ANGLE_DISABLE_STRUCT_PADDING_WARNINGS
|
||||
#endif
|
||||
|
||||
#endif // COMMON_DEBUG_H_
|
||||
#endif // COMMON_DEBUG_H_
|
||||
|
|
|
@ -10,91 +10,84 @@
|
|||
#define COMMON_PLATFORM_H_
|
||||
|
||||
#if defined(_WIN32)
|
||||
# define ANGLE_PLATFORM_WINDOWS 1
|
||||
# define ANGLE_PLATFORM_WINDOWS 1
|
||||
#elif defined(__APPLE__)
|
||||
# define ANGLE_PLATFORM_APPLE 1
|
||||
# define ANGLE_PLATFORM_POSIX 1
|
||||
# define ANGLE_PLATFORM_APPLE 1
|
||||
# define ANGLE_PLATFORM_POSIX 1
|
||||
#elif defined(ANDROID)
|
||||
# define ANGLE_PLATFORM_ANDROID 1
|
||||
# define ANGLE_PLATFORM_POSIX 1
|
||||
# define ANGLE_PLATFORM_ANDROID 1
|
||||
# define ANGLE_PLATFORM_POSIX 1
|
||||
#elif defined(__linux__) || defined(EMSCRIPTEN)
|
||||
# define ANGLE_PLATFORM_LINUX 1
|
||||
# define ANGLE_PLATFORM_POSIX 1
|
||||
#elif defined(__FreeBSD__) || \
|
||||
defined(__OpenBSD__) || \
|
||||
defined(__NetBSD__) || \
|
||||
defined(__DragonFly__) || \
|
||||
defined(__sun) || \
|
||||
defined(__GLIBC__) || \
|
||||
defined(__GNU__) || \
|
||||
defined(__QNX__) || \
|
||||
defined(__Fuchsia__) || \
|
||||
defined(__HAIKU__)
|
||||
# define ANGLE_PLATFORM_POSIX 1
|
||||
# define ANGLE_PLATFORM_LINUX 1
|
||||
# define ANGLE_PLATFORM_POSIX 1
|
||||
#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
|
||||
defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \
|
||||
defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__)
|
||||
# define ANGLE_PLATFORM_POSIX 1
|
||||
#else
|
||||
# error Unsupported platform.
|
||||
# error Unsupported platform.
|
||||
#endif
|
||||
|
||||
#ifdef ANGLE_PLATFORM_WINDOWS
|
||||
# ifndef STRICT
|
||||
# define STRICT 1
|
||||
# endif
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN 1
|
||||
# endif
|
||||
# ifndef NOMINMAX
|
||||
# define NOMINMAX 1
|
||||
# endif
|
||||
# ifndef STRICT
|
||||
# define STRICT 1
|
||||
# endif
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN 1
|
||||
# endif
|
||||
# ifndef NOMINMAX
|
||||
# define NOMINMAX 1
|
||||
# endif
|
||||
|
||||
# include <windows.h>
|
||||
# include <intrin.h>
|
||||
# include <intrin.h>
|
||||
# include <windows.h>
|
||||
|
||||
# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP)
|
||||
# define ANGLE_ENABLE_WINDOWS_STORE 1
|
||||
# endif
|
||||
# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP)
|
||||
# define ANGLE_ENABLE_WINDOWS_STORE 1
|
||||
# endif
|
||||
|
||||
# if defined(ANGLE_ENABLE_D3D9)
|
||||
# include <d3d9.h>
|
||||
# include <d3dcompiler.h>
|
||||
# endif
|
||||
# if defined(ANGLE_ENABLE_D3D9)
|
||||
# include <d3d9.h>
|
||||
# include <d3dcompiler.h>
|
||||
# endif
|
||||
|
||||
// Include D3D11 headers when OpenGL is enabled on Windows for interop extensions.
|
||||
#if defined(ANGLE_ENABLE_D3D11) || defined(ANGLE_ENABLE_OPENGL)
|
||||
#include <d3d10_1.h>
|
||||
#include <d3d11.h>
|
||||
#include <d3d11_3.h>
|
||||
#include <d3dcompiler.h>
|
||||
#include <dxgi.h>
|
||||
#include <dxgi1_2.h>
|
||||
# endif
|
||||
# if defined(ANGLE_ENABLE_D3D11) || defined(ANGLE_ENABLE_OPENGL)
|
||||
# include <d3d10_1.h>
|
||||
# include <d3d11.h>
|
||||
# include <d3d11_3.h>
|
||||
# include <d3dcompiler.h>
|
||||
# include <dxgi.h>
|
||||
# include <dxgi1_2.h>
|
||||
# endif
|
||||
|
||||
#if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
|
||||
#include <wrl.h>
|
||||
#endif
|
||||
# if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
|
||||
# include <wrl.h>
|
||||
# endif
|
||||
|
||||
# if defined(ANGLE_ENABLE_WINDOWS_STORE)
|
||||
# include <dxgi1_3.h>
|
||||
# if defined(_DEBUG)
|
||||
# include <DXProgrammableCapture.h>
|
||||
# include <dxgidebug.h>
|
||||
# endif
|
||||
# endif
|
||||
# if defined(ANGLE_ENABLE_WINDOWS_STORE)
|
||||
# include <dxgi1_3.h>
|
||||
# if defined(_DEBUG)
|
||||
# include <DXProgrammableCapture.h>
|
||||
# include <dxgidebug.h>
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# undef near
|
||||
# undef far
|
||||
# undef near
|
||||
# undef far
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
|
||||
#include <intrin.h>
|
||||
#define ANGLE_USE_SSE
|
||||
# include <intrin.h>
|
||||
# define ANGLE_USE_SSE
|
||||
#elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
|
||||
#include <x86intrin.h>
|
||||
#define ANGLE_USE_SSE
|
||||
# include <x86intrin.h>
|
||||
# define ANGLE_USE_SSE
|
||||
#endif
|
||||
|
||||
// Mips and arm devices need to include stddef for size_t.
|
||||
#if defined(__mips__) || defined(__arm__) || defined(__aarch64__)
|
||||
#include <stddef.h>
|
||||
# include <stddef.h>
|
||||
#endif
|
||||
|
||||
// The MemoryBarrier function name collides with a macro under Windows
|
||||
|
@ -103,13 +96,13 @@
|
|||
|
||||
// Macro for hinting that an expression is likely to be true/false.
|
||||
#if !defined(ANGLE_LIKELY) || !defined(ANGLE_UNLIKELY)
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
#define ANGLE_LIKELY(x) __builtin_expect(!!(x), 1)
|
||||
#define ANGLE_UNLIKELY(x) __builtin_expect(!!(x), 0)
|
||||
#else
|
||||
#define ANGLE_LIKELY(x) (x)
|
||||
#define ANGLE_UNLIKELY(x) (x)
|
||||
#endif // defined(__GNUC__) || defined(__clang__)
|
||||
#endif // !defined(ANGLE_LIKELY) || !defined(ANGLE_UNLIKELY)
|
||||
# if defined(__GNUC__) || defined(__clang__)
|
||||
# define ANGLE_LIKELY(x) __builtin_expect(!!(x), 1)
|
||||
# define ANGLE_UNLIKELY(x) __builtin_expect(!!(x), 0)
|
||||
# else
|
||||
# define ANGLE_LIKELY(x) (x)
|
||||
# define ANGLE_UNLIKELY(x) (x)
|
||||
# endif // defined(__GNUC__) || defined(__clang__)
|
||||
#endif // !defined(ANGLE_LIKELY) || !defined(ANGLE_UNLIKELY)
|
||||
|
||||
#endif // COMMON_PLATFORM_H_
|
||||
#endif // COMMON_PLATFORM_H_
|
||||
|
|
|
@ -11,24 +11,24 @@
|
|||
#include <assert.h>
|
||||
|
||||
#ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
#include <vector>
|
||||
#include <set>
|
||||
#include <map>
|
||||
#include <mutex>
|
||||
# include <map>
|
||||
# include <mutex>
|
||||
# include <set>
|
||||
# include <vector>
|
||||
|
||||
#include <wrl/client.h>
|
||||
#include <wrl/async.h>
|
||||
#include <Windows.System.Threading.h>
|
||||
# include <Windows.System.Threading.h>
|
||||
# include <wrl/async.h>
|
||||
# include <wrl/client.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace Windows::Foundation;
|
||||
using namespace ABI::Windows::System::Threading;
|
||||
|
||||
// Thread local storage for Windows Store support
|
||||
typedef vector<void*> ThreadLocalData;
|
||||
typedef vector<void *> ThreadLocalData;
|
||||
|
||||
static __declspec(thread) ThreadLocalData* currentThreadData = nullptr;
|
||||
static set<ThreadLocalData*> allThreadData;
|
||||
static __declspec(thread) ThreadLocalData *currentThreadData = nullptr;
|
||||
static set<ThreadLocalData *> allThreadData;
|
||||
static DWORD nextTlsIndex = 0;
|
||||
static vector<DWORD> freeTlsIndices;
|
||||
|
||||
|
@ -39,7 +39,7 @@ TLSIndex CreateTLSIndex()
|
|||
TLSIndex index;
|
||||
|
||||
#ifdef ANGLE_PLATFORM_WINDOWS
|
||||
#ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
# ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
if (!freeTlsIndices.empty())
|
||||
{
|
||||
DWORD result = freeTlsIndices.back();
|
||||
|
@ -50,9 +50,9 @@ TLSIndex CreateTLSIndex()
|
|||
{
|
||||
index = nextTlsIndex++;
|
||||
}
|
||||
#else
|
||||
# else
|
||||
index = TlsAlloc();
|
||||
#endif
|
||||
# endif
|
||||
|
||||
#elif defined(ANGLE_PLATFORM_POSIX)
|
||||
// Create global pool key
|
||||
|
@ -62,7 +62,8 @@ TLSIndex CreateTLSIndex()
|
|||
}
|
||||
#endif
|
||||
|
||||
assert(index != TLS_INVALID_INDEX && "CreateTLSIndex(): Unable to allocate Thread Local Storage");
|
||||
assert(index != TLS_INVALID_INDEX &&
|
||||
"CreateTLSIndex(): Unable to allocate Thread Local Storage");
|
||||
return index;
|
||||
}
|
||||
|
||||
|
@ -75,7 +76,7 @@ bool DestroyTLSIndex(TLSIndex index)
|
|||
}
|
||||
|
||||
#ifdef ANGLE_PLATFORM_WINDOWS
|
||||
#ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
# ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
assert(index < nextTlsIndex);
|
||||
assert(find(freeTlsIndices.begin(), freeTlsIndices.end(), index) == freeTlsIndices.end());
|
||||
|
||||
|
@ -88,9 +89,9 @@ bool DestroyTLSIndex(TLSIndex index)
|
|||
}
|
||||
}
|
||||
return true;
|
||||
#else
|
||||
# else
|
||||
return (TlsFree(index) == TRUE);
|
||||
#endif
|
||||
# endif
|
||||
#elif defined(ANGLE_PLATFORM_POSIX)
|
||||
return (pthread_key_delete(index) == 0);
|
||||
#endif
|
||||
|
@ -105,8 +106,8 @@ bool SetTLSValue(TLSIndex index, void *value)
|
|||
}
|
||||
|
||||
#ifdef ANGLE_PLATFORM_WINDOWS
|
||||
#ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
ThreadLocalData* threadData = currentThreadData;
|
||||
# ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
ThreadLocalData *threadData = currentThreadData;
|
||||
if (!threadData)
|
||||
{
|
||||
threadData = new ThreadLocalData(index + 1, nullptr);
|
||||
|
@ -120,9 +121,9 @@ bool SetTLSValue(TLSIndex index, void *value)
|
|||
|
||||
threadData->at(index) = value;
|
||||
return true;
|
||||
#else
|
||||
# else
|
||||
return (TlsSetValue(index, value) == TRUE);
|
||||
#endif
|
||||
# endif
|
||||
#elif defined(ANGLE_PLATFORM_POSIX)
|
||||
return (pthread_setspecific(index, value) == 0);
|
||||
#endif
|
||||
|
@ -137,8 +138,8 @@ void *GetTLSValue(TLSIndex index)
|
|||
}
|
||||
|
||||
#ifdef ANGLE_PLATFORM_WINDOWS
|
||||
#ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
ThreadLocalData* threadData = currentThreadData;
|
||||
# ifdef ANGLE_ENABLE_WINDOWS_STORE
|
||||
ThreadLocalData *threadData = currentThreadData;
|
||||
if (threadData && threadData->size() > index)
|
||||
{
|
||||
return threadData->at(index);
|
||||
|
@ -147,9 +148,9 @@ void *GetTLSValue(TLSIndex index)
|
|||
{
|
||||
return nullptr;
|
||||
}
|
||||
#else
|
||||
# else
|
||||
return TlsGetValue(index);
|
||||
#endif
|
||||
# endif
|
||||
#elif defined(ANGLE_PLATFORM_POSIX)
|
||||
return pthread_getspecific(index);
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче