aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkTraceEventCommon.h
diff options
context:
space:
mode:
authorGravatar Stan Iliev <stani@google.com>2018-06-29 18:19:12 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-29 22:44:17 +0000
commitb7b9d02ac020f7f031c30aaea0c0467cf66e4569 (patch)
treefb501203e887c35db1ee7542f20ed57d059beb4f /src/core/SkTraceEventCommon.h
parentd2f8eafbb8e4d7bdef8c8dca7fb1eae4ed737c6f (diff)
Add a runtime flag to enable ATRACE
Implement a runtime flag for android framework to enable systrace logging. To enable logging call SkATrace::setEnableTracing(true), instead of changing compile time flag SK_TRACE_EVENTS_IN_FRAMEWORK. Bug: skia: Change-Id: Ib4f607e001577a84e944042d799a98af8eb51626 Reviewed-on: https://skia-review.googlesource.com/138594 Commit-Queue: Stan Iliev <stani@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/core/SkTraceEventCommon.h')
-rw-r--r--src/core/SkTraceEventCommon.h62
1 files changed, 31 insertions, 31 deletions
diff --git a/src/core/SkTraceEventCommon.h b/src/core/SkTraceEventCommon.h
index 960e42910a..199b487796 100644
--- a/src/core/SkTraceEventCommon.h
+++ b/src/core/SkTraceEventCommon.h
@@ -5,6 +5,7 @@
#define SkTraceEventCommon_DEFINED
#include "SkTraceEventPhase.h"
+#include "SkTypes.h"
// Trace events are for tracking application performance and resource usage.
// Macros are provided to track:
@@ -61,13 +62,15 @@
#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK
#include <cutils/trace.h>
-struct SkAndroidFrameworkTraceUtil {
-
+class SkAndroidFrameworkTraceUtil {
+public:
SkAndroidFrameworkTraceUtil(const char* name) {
- ATRACE_BEGIN(name);
+ if (CC_UNLIKELY(gEnableAndroidTracing)) {
+ ATRACE_BEGIN(name);
+ }
}
SkAndroidFrameworkTraceUtil(bool, const char* fmt, ...) {
- if (CC_LIKELY(!ATRACE_ENABLED())) return;
+ if (CC_LIKELY((!gEnableAndroidTracing) || (!ATRACE_ENABLED()))) return;
const int BUFFER_SIZE = 256;
va_list ap;
@@ -79,18 +82,25 @@ struct SkAndroidFrameworkTraceUtil {
ATRACE_BEGIN(buf);
}
- ~SkAndroidFrameworkTraceUtil() { ATRACE_END(); }
-};
+ ~SkAndroidFrameworkTraceUtil() {
+ if (CC_UNLIKELY(gEnableAndroidTracing)) {
+ ATRACE_END();
+ }
+ }
-#define ATRACE_ANDROID_FRAMEWORK(fmt, ...) SkAndroidFrameworkTraceUtil __trace(true, fmt, ##__VA_ARGS__)
+ static void setEnableTracing(bool enableAndroidTracing) {
+ gEnableAndroidTracing = enableAndroidTracing;
+ }
-// If profiling Skia within the Android framework, setting this to 1 will route all Skia
-// tracing events to ATrace.
-#ifndef SK_TRACE_EVENTS_IN_FRAMEWORK
-#define SK_TRACE_EVENTS_IN_FRAMEWORK 0
-#endif
+ static bool getEnableTracing() {
+ return gEnableAndroidTracing;
+ }
-#if SK_TRACE_EVENTS_IN_FRAMEWORK
+private:
+ static bool gEnableAndroidTracing;
+};
+
+#define ATRACE_ANDROID_FRAMEWORK(fmt, ...) SkAndroidFrameworkTraceUtil __trace(true, fmt, ##__VA_ARGS__)
// Records a pair of begin and end events called "name" for the current scope, with 0, 1 or 2
// associated arguments. In the framework, the arguments are ignored.
@@ -115,32 +125,22 @@ struct SkAndroidFrameworkTraceUtil {
// Records the value of a counter called "name" immediately. Value
// must be representable as a 32 bit integer.
-#define TRACE_COUNTER1(category_group, name, value) ATRACE_INT(name, value)
+#define TRACE_COUNTER1(category_group, name, value) \
+ if (CC_UNLIKELY(SkAndroidFrameworkTraceUtil::getEnableTracing())) { \
+ ATRACE_INT(name, value); \
+ }
// Records the values of a multi-parted counter called "name" immediately.
// In Chrome, this macro produces a stacked bar chart. ATrace doesn't support
// that, so this just produces two separate counters.
#define TRACE_COUNTER2(category_group, name, value1_name, value1_val, value2_name, value2_val) \
do { \
- ATRACE_INT(name "-" value1_name, value1_val); \
- ATRACE_INT(name "-" value2_name, value2_val); \
+ if (CC_UNLIKELY(SkAndroidFrameworkTraceUtil::getEnableTracing())) { \
+ ATRACE_INT(name "-" value1_name, value1_val); \
+ ATRACE_INT(name "-" value2_name, value2_val); \
+ } \
} while (0)
-#else
-
-#define TRACE_EVENT0(category_group, name) TRACE_EMPTY
-#define TRACE_EVENT1(category_group, name, arg1_name, arg1_val) TRACE_EMPTY
-#define TRACE_EVENT2(category_group, name, arg1_name, arg1_val, arg2_name, arg2_val) TRACE_EMPTY
-
-#define TRACE_EVENT_INSTANT0(category_group, name, scope) TRACE_EMPTY
-#define TRACE_EVENT_INSTANT1(category_group, name, scope, arg1_name, arg1_val) TRACE_EMPTY
-#define TRACE_EVENT_INSTANT2(category_group, name, scope, arg1_name, arg1_val, arg2_name, arg2_val) TRACE_EMPTY
-
-#define TRACE_COUNTER1(category_group, name, value) TRACE_EMPTY
-#define TRACE_COUNTER2(category_group, name, value1_name, value1_val, value2_name, value2_val) TRACE_EMPTY
-
-#endif
-
// ATrace has no object tracking
#define TRACE_EVENT_OBJECT_CREATED_WITH_ID(category_group, name, id) TRACE_EMPTY
#define TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(category_group, name, id, snapshot) TRACE_EMPTY