summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-11-22 00:47:20 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-11-22 00:47:20 +0000
commit461ad093e648433d8b54d7ce750c0b0a57906c54 (patch)
tree2c5e58224a2691b4c67e08927ce7ec207df06d49
parenta99e006cd8375d4f54adcc153b54fe7d982fbdd6 (diff)
parente8f49306f07e0199af378bf9f223830e5fc63b64 (diff)
Merge "Add some synchronous input trace points."
-rw-r--r--core/java/android/view/ViewRootImpl.java74
1 files changed, 57 insertions, 17 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 89b111ddfb0b..afa661e26d4c 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -4966,6 +4966,8 @@ public final class ViewRootImpl implements ViewParent,
protected static final int FINISH_HANDLED = 1;
protected static final int FINISH_NOT_HANDLED = 2;
+ private String mTracePrefix;
+
/**
* Creates an input stage.
* @param next The next stage to which events should be forwarded.
@@ -4983,7 +4985,14 @@ public final class ViewRootImpl implements ViewParent,
} else if (shouldDropInputEvent(q)) {
finish(q, false);
} else {
- apply(q, onProcess(q));
+ traceEvent(q, Trace.TRACE_TAG_VIEW);
+ final int result;
+ try {
+ result = onProcess(q);
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
+ apply(q, result);
}
}
@@ -5093,6 +5102,17 @@ public final class ViewRootImpl implements ViewParent,
return false;
}
}
+
+ private void traceEvent(QueuedInputEvent q, long traceTag) {
+ if (!Trace.isTagEnabled(traceTag)) {
+ return;
+ }
+
+ if (mTracePrefix == null) {
+ mTracePrefix = getClass().getSimpleName();
+ }
+ Trace.traceBegin(traceTag, mTracePrefix + " seq#=" + q.mEvent.getSequenceNumber());
+ }
}
/**
@@ -7709,26 +7729,46 @@ public final class ViewRootImpl implements ViewParent,
private void deliverInputEvent(QueuedInputEvent q) {
Trace.asyncTraceBegin(Trace.TRACE_TAG_VIEW, "deliverInputEvent",
q.mEvent.getSequenceNumber());
- if (mInputEventConsistencyVerifier != null) {
- mInputEventConsistencyVerifier.onInputEvent(q.mEvent, 0);
- }
- InputStage stage;
- if (q.shouldSendToSynthesizer()) {
- stage = mSyntheticInputStage;
- } else {
- stage = q.shouldSkipIme() ? mFirstPostImeInputStage : mFirstInputStage;
+ if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW, "deliverInputEvent src=0x"
+ + Integer.toHexString(q.mEvent.getSource()) + " eventTimeNano="
+ + q.mEvent.getEventTimeNano() + " seq#=" + q.mEvent.getSequenceNumber());
}
+ try {
+ if (mInputEventConsistencyVerifier != null) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW, "verifyEventConsistency");
+ try {
+ mInputEventConsistencyVerifier.onInputEvent(q.mEvent, 0);
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
+ }
- if (q.mEvent instanceof KeyEvent) {
- mUnhandledKeyManager.preDispatch((KeyEvent) q.mEvent);
- }
+ InputStage stage;
+ if (q.shouldSendToSynthesizer()) {
+ stage = mSyntheticInputStage;
+ } else {
+ stage = q.shouldSkipIme() ? mFirstPostImeInputStage : mFirstInputStage;
+ }
- if (stage != null) {
- handleWindowFocusChanged();
- stage.deliver(q);
- } else {
- finishInputEvent(q);
+ if (q.mEvent instanceof KeyEvent) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW, "preDispatchToUnhandledKeyManager");
+ try {
+ mUnhandledKeyManager.preDispatch((KeyEvent) q.mEvent);
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
+ }
+
+ if (stage != null) {
+ handleWindowFocusChanged();
+ stage.deliver(q);
+ } else {
+ finishInputEvent(q);
+ }
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}
}