11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef SkTrace_DEFINED 101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define SkTrace_DEFINED 111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifdef SK_USER_TRACE_INCLUDE_FILE 131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* If your system embeds skia and has complex event logging, in 151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger src/config/SkUserConfig.h: 161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger - define the three SK_TRACE_EVENT macros to map to your system's 171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger equivalents, 181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger - define the name of the include file in SK_USER_TRACE_INCLUDE_FILE 191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger A trivial example is given in src/utils/SkDebugTrace.h. 201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger All arguments are const char*. Skia typically passes the name of 221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger the object and function (and sometimes region of interest within 231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger the function) separated by double colons for 'event'. 241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SK_TRACE_EVENT1 and SK_TRACE_EVENT2 take one or two arbitrary 261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger name-value pairs that you also want to log. SkStringPrintf() is useful 271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger for formatting these values. 281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger For example: 301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SK_TRACE_EVENT0("GrContext::createAndLockTexture"); 311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SK_TRACE_EVENT1("GrDefaultPathRenderer::onDrawPath::renderPasses", 321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger "verts", SkStringPrintf("%i", vert - base).c_str()); 331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger*/ 341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger #include SK_USER_TRACE_INCLUDE_FILE 361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#else 381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger #define SK_TRACE_EVENT0(event) 401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger #define SK_TRACE_EVENT1(event, name1, value1) 411cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger #define SK_TRACE_EVENT2(event, name1, value1, name2, value2) 421cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 431cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif 441cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 451cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif 461cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 471cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 48