Chromium Code Reviews| Index: skia/ext/event_tracer_impl.cc |
| diff --git a/skia/ext/event_tracer_impl.cc b/skia/ext/event_tracer_impl.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d0b2796f486fd583efb8f377ee0438f6dbe7d9e1 |
| --- /dev/null |
| +++ b/skia/ext/event_tracer_impl.cc |
| @@ -0,0 +1,78 @@ |
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/debug/trace_event.h" |
| +#include "skia/ext/event_tracer_impl.h" |
| +#include "third_party/skia/include/utils/SkEventTracer.h" |
| + |
| +namespace skia { |
| + |
| +class SkChromiumEventTracer: public SkEventTracer { |
| + virtual const uint8_t* getCategoryGroupEnabled(const char* name); |
| + virtual const char* getCategoryGroupName( |
| + const uint8_t* categoryEnabledFlag); |
| + virtual SkEventTracer::Handle |
| + addTraceEvent(char phase, |
| + const uint8_t* categoryEnabledFlag, |
| + const char* name, |
| + uint64_t id, |
| + int32_t numArgs, |
| + const char** argNames, |
| + const uint8_t* argTypes, |
| + const uint64_t* argValues, |
| + uint8_t flags); |
| + virtual void |
| + updateTraceEventDuration(const uint8_t* categoryEnabledFlag, |
| + const char *name, |
| + SkEventTracer::Handle handle); |
| +}; |
| + |
| +const uint8_t* |
| + SkChromiumEventTracer::getCategoryGroupEnabled(const char* name) { |
| + return TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(name); |
| +} |
| + |
| +const char* SkChromiumEventTracer::getCategoryGroupName( |
| + const uint8_t* categoryEnabledFlag) { |
| + return base::debug::TraceLog::GetCategoryGroupName( |
| + categoryEnabledFlag); |
| +} |
| + |
| +SkEventTracer::Handle |
| + SkChromiumEventTracer::addTraceEvent(char phase, |
| + const uint8_t* categoryEnabledFlag, |
| + const char* name, |
| + uint64_t id, |
| + int32_t numArgs, |
| + const char** argNames, |
| + const uint8_t* argTypes, |
| + const uint64_t* argValues, |
| + uint8_t flags) { |
| + base::debug::TraceEventHandle handle = TRACE_EVENT_API_ADD_TRACE_EVENT( |
| + phase, categoryEnabledFlag, name, id, numArgs, argNames, |
| + argTypes, (const long long unsigned int*) argValues, NULL, flags); |
| + SkEventTracer::Handle result; |
| + memcpy(&result, &handle, sizeof(result)); |
| + return result; |
| +} |
| + |
| +void |
| + SkChromiumEventTracer::updateTraceEventDuration( |
| + const uint8_t* categoryEnabledFlag, |
| + const char *name, |
| + SkEventTracer::Handle handle) { |
| + base::debug::TraceEventHandle traceEventHandle; |
| + memcpy(&traceEventHandle, &handle, sizeof(handle)); |
| + TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION( |
| + categoryEnabledFlag, name, traceEventHandle); |
| +} |
| + |
| +} // namespace skia |
| + |
| + |
| +void InitSkiaEventTracer() { |
| + // Initialize the binding to Skia's tracing events. Skia will |
|
nduca
2014/02/04 20:01:38
lgtm
should you dcheck against multiple initializ
|
| + // take ownership of and clean up the memory allocated here. |
| + SkEventTracer::SetInstance(new skia::SkChromiumEventTracer()); |
| +} |