1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2017 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef EventTracingPriv_DEFINED 9cb93a386Sopenharmony_ci#define EventTracingPriv_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "include/private/SkMutex.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci/** 14cb93a386Sopenharmony_ci * Construct and install an SkEventTracer, based on the mode, 15cb93a386Sopenharmony_ci * defaulting to the --trace command line argument. 16cb93a386Sopenharmony_ci */ 17cb93a386Sopenharmony_civoid initializeEventTracingForTools(const char* mode = nullptr); 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci/** 20cb93a386Sopenharmony_ci * Helper class used by internal implementations of SkEventTracer to manage categories. 21cb93a386Sopenharmony_ci */ 22cb93a386Sopenharmony_ciclass SkEventTracingCategories { 23cb93a386Sopenharmony_cipublic: 24cb93a386Sopenharmony_ci SkEventTracingCategories() : fNumCategories(0) {} 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ci uint8_t* getCategoryGroupEnabled(const char* name); 27cb93a386Sopenharmony_ci const char* getCategoryGroupName(const uint8_t* categoryEnabledFlag); 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ciprivate: 30cb93a386Sopenharmony_ci enum { kMaxCategories = 256 }; 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ci struct CategoryState { 33cb93a386Sopenharmony_ci uint8_t fEnabled; 34cb93a386Sopenharmony_ci const char* fName; 35cb93a386Sopenharmony_ci }; 36cb93a386Sopenharmony_ci 37cb93a386Sopenharmony_ci CategoryState fCategories[kMaxCategories]; 38cb93a386Sopenharmony_ci int fNumCategories; 39cb93a386Sopenharmony_ci SkMutex fMutex; 40cb93a386Sopenharmony_ci}; 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci#endif 43