1 // Copyright 2012 The ANGLE Project Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "common/event_tracer.h"
6 
7 #include "common/debug.h"
8 
9 namespace angle
10 {
11 
GetTraceCategoryEnabledFlag(PlatformMethods * platform,const char * name)12 const unsigned char *GetTraceCategoryEnabledFlag(PlatformMethods *platform, const char *name)
13 {
14     ASSERT(platform);
15 
16     const unsigned char *categoryEnabledFlag =
17         platform->getTraceCategoryEnabledFlag(platform, name);
18     if (categoryEnabledFlag != nullptr)
19     {
20         return categoryEnabledFlag;
21     }
22 
23     static unsigned char disabled = 0;
24     return &disabled;
25 }
26 
AddTraceEvent(PlatformMethods * platform,char phase,const unsigned char * categoryGroupEnabled,const char * name,unsigned long long id,int numArgs,const char ** argNames,const unsigned char * argTypes,const unsigned long long * argValues,unsigned char flags)27 angle::TraceEventHandle AddTraceEvent(PlatformMethods *platform,
28                                       char phase,
29                                       const unsigned char *categoryGroupEnabled,
30                                       const char *name,
31                                       unsigned long long id,
32                                       int numArgs,
33                                       const char **argNames,
34                                       const unsigned char *argTypes,
35                                       const unsigned long long *argValues,
36                                       unsigned char flags)
37 {
38     ASSERT(platform);
39 
40     double timestamp = platform->monotonicallyIncreasingTime(platform);
41 
42     if (timestamp != 0)
43     {
44         angle::TraceEventHandle handle =
45             platform->addTraceEvent(platform, phase, categoryGroupEnabled, name, id, timestamp,
46                                     numArgs, argNames, argTypes, argValues, flags);
47         return handle;
48     }
49 
50     return static_cast<angle::TraceEventHandle>(0);
51 }
52 
53 }  // namespace angle
54