LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/utils - SkEventTracer.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 7 19 36.8 %
Date: 2017-07-14 16:53:18 Functions: 4 13 30.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2014 Google Inc.
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : #include "SkAtomics.h"
       9             : #include "SkEventTracer.h"
      10             : #include "SkOnce.h"
      11             : 
      12             : #include <stdlib.h>
      13             : 
      14           2 : class SkDefaultEventTracer : public SkEventTracer {
      15             :     SkEventTracer::Handle
      16           0 :         addTraceEvent(char phase,
      17             :                       const uint8_t* categoryEnabledFlag,
      18             :                       const char* name,
      19             :                       uint64_t id,
      20             :                       int numArgs,
      21             :                       const char** argNames,
      22             :                       const uint8_t* argTypes,
      23             :                       const uint64_t* argValues,
      24           0 :                       uint8_t flags) override { return 0; }
      25             : 
      26             :     void
      27           0 :         updateTraceEventDuration(const uint8_t* categoryEnabledFlag,
      28             :                                  const char* name,
      29           0 :                                  SkEventTracer::Handle handle) override {}
      30             : 
      31          11 :     const uint8_t* getCategoryGroupEnabled(const char* name) override {
      32             :         static uint8_t no = 0;
      33          11 :         return &no;
      34             :     }
      35           0 :     const char* getCategoryGroupName(
      36             :       const uint8_t* categoryEnabledFlag) override {
      37             :         static const char* dummy = "dummy";
      38           0 :         return dummy;
      39             :     }
      40             : };
      41             : 
      42             : // We prefer gUserTracer if it's been set, otherwise we fall back on a default tracer;
      43             : static SkEventTracer* gUserTracer = nullptr;
      44             : 
      45           0 : void SkEventTracer::SetInstance(SkEventTracer* tracer) {
      46           0 :     SkASSERT(nullptr == sk_atomic_load(&gUserTracer, sk_memory_order_acquire));
      47           0 :     sk_atomic_store(&gUserTracer, tracer, sk_memory_order_release);
      48             :     // An atomic load during process shutdown is probably overkill, but safe overkill.
      49           0 :     atexit([]() { delete sk_atomic_load(&gUserTracer, sk_memory_order_acquire); });
      50           0 : }
      51             : 
      52          11 : SkEventTracer* SkEventTracer::GetInstance() {
      53          11 :     if (SkEventTracer* tracer = sk_atomic_load(&gUserTracer, sk_memory_order_acquire)) {
      54           0 :         return tracer;
      55             :     }
      56             :     static SkOnce once;
      57             :     static SkDefaultEventTracer* defaultTracer;
      58          15 :     once([] { defaultTracer = new SkDefaultEventTracer; });
      59          11 :     return defaultTracer;
      60             : }

Generated by: LCOV version 1.13