summaryrefslogtreecommitdiffstats
path: root/chromium/skia/ext/event_tracer_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/skia/ext/event_tracer_impl.cc')
-rw-r--r--chromium/skia/ext/event_tracer_impl.cc78
1 files changed, 78 insertions, 0 deletions
diff --git a/chromium/skia/ext/event_tracer_impl.cc b/chromium/skia/ext/event_tracer_impl.cc
new file mode 100644
index 00000000000..4974b0064af
--- /dev/null
+++ b/chromium/skia/ext/event_tracer_impl.cc
@@ -0,0 +1,78 @@
+// Copyright 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) OVERRIDE;
+ virtual const char* getCategoryGroupName(
+ const uint8_t* categoryEnabledFlag) OVERRIDE;
+ 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) OVERRIDE;
+ virtual void
+ updateTraceEventDuration(const uint8_t* categoryEnabledFlag,
+ const char *name,
+ SkEventTracer::Handle handle) OVERRIDE;
+};
+
+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
+ // take ownership of and clean up the memory allocated here.
+ SkEventTracer::SetInstance(new skia::SkChromiumEventTracer());
+}