Hash :
fbf8d1ea
Author :
Date :
2021-10-07T13:53:05
Remove windows.h from common/platform.h Windows.h is expensive and causes lots of namespace pollution with the macros that it defines. This change removes windows.h from platform.h and debug.h and adds the necessary typedes and new include of windows.h to let Chromium build. This reduces the number of Angle translation units that include windows.h by about a third, from 624 to 440. Significant further reductions will be difficult because of translation units that genuinely need windows.h. Earlier versions of this change made it clear that the DeleteFile and GetCurrentTime macros were renaming Angle functions. These angle functions were renamed which makes this change much simpler. Bug: angleproject:6283 Change-Id: Icddc8f98b19485e563b2cf616bba2ad4ea49228e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212639 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
//
// Copyright 2014 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// tls.h: Simple cross-platform interface for thread local storage.
#ifndef COMMON_TLS_H_
#define COMMON_TLS_H_
#include "common/angleutils.h"
#include "common/platform.h"
#ifdef ANGLE_PLATFORM_WINDOWS
# include <windows.h>
#endif
namespace gl
{
class Context;
}
#ifdef ANGLE_PLATFORM_WINDOWS
// TLS does not exist for Windows Store and needs to be emulated
# ifdef ANGLE_ENABLE_WINDOWS_UWP
# ifndef TLS_OUT_OF_INDEXES
# define TLS_OUT_OF_INDEXES static_cast<DWORD>(0xFFFFFFFF)
# endif
# ifndef CREATE_SUSPENDED
# define CREATE_SUSPENDED 0x00000004
# endif
# endif
typedef DWORD TLSIndex;
# define TLS_INVALID_INDEX (TLS_OUT_OF_INDEXES)
#elif defined(ANGLE_PLATFORM_POSIX)
# include <errno.h>
# include <pthread.h>
# include <semaphore.h>
typedef pthread_key_t TLSIndex;
# define TLS_INVALID_INDEX (static_cast<TLSIndex>(-1))
#else
# error Unsupported platform.
#endif
// TODO(kbr): for POSIX platforms this will have to be changed to take
// in a destructor function pointer, to allow the thread-local storage
// to be properly deallocated upon thread exit.
TLSIndex CreateTLSIndex();
bool DestroyTLSIndex(TLSIndex index);
bool SetTLSValue(TLSIndex index, void *value);
void *GetTLSValue(TLSIndex index);
#endif // COMMON_TLS_H_