1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/utils/SkEventTracer.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,60 @@ 1.4 +/* 1.5 + * Copyright 2014 Google Inc. 1.6 + * 1.7 + * Use of this source code is governed by a BSD-style license that can be 1.8 + * found in the LICENSE file. 1.9 + */ 1.10 + 1.11 +#include "SkEventTracer.h" 1.12 +#include "SkOnce.h" 1.13 + 1.14 +class SkDefaultEventTracer: public SkEventTracer { 1.15 + virtual SkEventTracer::Handle 1.16 + addTraceEvent(char phase, 1.17 + const uint8_t* categoryEnabledFlag, 1.18 + const char* name, 1.19 + uint64_t id, 1.20 + int numArgs, 1.21 + const char** argNames, 1.22 + const uint8_t* argTypes, 1.23 + const uint64_t* argValues, 1.24 + uint8_t flags) SK_OVERRIDE { return 0; } 1.25 + 1.26 + virtual void 1.27 + updateTraceEventDuration(const uint8_t* categoryEnabledFlag, 1.28 + const char* name, 1.29 + SkEventTracer::Handle handle) SK_OVERRIDE {}; 1.30 + 1.31 + virtual const uint8_t* getCategoryGroupEnabled(const char* name) SK_OVERRIDE { 1.32 + static uint8_t no = 0; 1.33 + return &no; 1.34 + }; 1.35 + virtual const char* getCategoryGroupName( 1.36 + const uint8_t* categoryEnabledFlag) SK_OVERRIDE { 1.37 + static const char* dummy = "dummy"; 1.38 + return dummy; 1.39 + }; 1.40 +}; 1.41 + 1.42 +SkEventTracer *SkEventTracer::gInstance; 1.43 + 1.44 +static void intialiize_default_tracer(void *current_instance) { 1.45 + if (NULL == current_instance) { 1.46 + SkEventTracer::SetInstance(SkNEW(SkDefaultEventTracer)); 1.47 + } 1.48 +} 1.49 + 1.50 +static void cleanup_tracer() { 1.51 + // calling SetInstance will delete the existing instance. 1.52 + SkEventTracer::SetInstance(NULL); 1.53 +} 1.54 + 1.55 +SkEventTracer* SkEventTracer::GetInstance() { 1.56 + SK_DECLARE_STATIC_ONCE(once); 1.57 + SkOnce(&once, 1.58 + intialiize_default_tracer, 1.59 + SkEventTracer::gInstance, 1.60 + cleanup_tracer); 1.61 + SkASSERT(NULL != SkEventTracer::gInstance); 1.62 + return SkEventTracer::gInstance; 1.63 +}