16169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org/* 26169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org * Copyright 2014 Google Inc. 36169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org * 46169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be 56169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org * found in the LICENSE file. 66169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org */ 76169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org 86169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org#include "SkEventTracer.h" 96169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org#include "SkOnce.h" 106169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org 116169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.orgclass SkDefaultEventTracer: public SkEventTracer { 124c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com virtual SkEventTracer::Handle 136169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org addTraceEvent(char phase, 146169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org const uint8_t* categoryEnabledFlag, 156169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org const char* name, 166169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org uint64_t id, 176169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org int numArgs, 186169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org const char** argNames, 196169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org const uint8_t* argTypes, 206169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org const uint64_t* argValues, 216169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org uint8_t flags) SK_OVERRIDE { return 0; } 224c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com 234c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com virtual void 244c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com updateTraceEventDuration(const uint8_t* categoryEnabledFlag, 254c18e9fbb685cccf23342757e786027a032197daskia.committer@gmail.com const char* name, 263458a1736feae84eba985591a8ab8d26530d96c8commit-bot@chromium.org SkEventTracer::Handle handle) SK_OVERRIDE {}; 276169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org 286169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org virtual const uint8_t* getCategoryGroupEnabled(const char* name) SK_OVERRIDE { 296169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org static uint8_t no = 0; 306169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org return &no; 316169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org }; 326169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org virtual const char* getCategoryGroupName( 332859f9fbf3764d401b3b9b27f3d9e9bddeaf3a14commit-bot@chromium.org const uint8_t* categoryEnabledFlag) SK_OVERRIDE { 346169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org static const char* dummy = "dummy"; 356169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org return dummy; 366169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org }; 376169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org}; 386169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org 391b81877880253c75f835eede9a8ee21b9e7b584amtkleinSkEventTracer* SkEventTracer::gInstance; 406169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org 411b81877880253c75f835eede9a8ee21b9e7b584amtkleinstatic void cleanup_tracer() { 421b81877880253c75f835eede9a8ee21b9e7b584amtklein // calling SetInstance will delete the existing instance. 431b81877880253c75f835eede9a8ee21b9e7b584amtklein SkEventTracer::SetInstance(NULL); 441b81877880253c75f835eede9a8ee21b9e7b584amtklein} 451b81877880253c75f835eede9a8ee21b9e7b584amtklein 461b81877880253c75f835eede9a8ee21b9e7b584amtkleinstatic void intialize_default_tracer(SkEventTracer* current_instance) { 47da5c6d64b05813660fa578cb5f8ef0dd146726f4commit-bot@chromium.org if (NULL == current_instance) { 48da5c6d64b05813660fa578cb5f8ef0dd146726f4commit-bot@chromium.org SkEventTracer::SetInstance(SkNEW(SkDefaultEventTracer)); 49da5c6d64b05813660fa578cb5f8ef0dd146726f4commit-bot@chromium.org } 501b81877880253c75f835eede9a8ee21b9e7b584amtklein atexit(cleanup_tracer); 516169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org} 526169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org 536169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org 546169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.orgSkEventTracer* SkEventTracer::GetInstance() { 556169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org SK_DECLARE_STATIC_ONCE(once); 561b81877880253c75f835eede9a8ee21b9e7b584amtklein SkOnce(&once, intialize_default_tracer, SkEventTracer::gInstance); 5749f085dddff10473b6ebf832a974288300224e60bsalomon SkASSERT(SkEventTracer::gInstance); 586169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org return SkEventTracer::gInstance; 596169f2b4da39099b4e593f5ff85538dfe2f0249ecommit-bot@chromium.org} 60