diff options
| author | 2019-11-22 00:47:20 +0000 | |
|---|---|---|
| committer | 2019-11-22 00:47:20 +0000 | |
| commit | 461ad093e648433d8b54d7ce750c0b0a57906c54 (patch) | |
| tree | 2c5e58224a2691b4c67e08927ce7ec207df06d49 | |
| parent | a99e006cd8375d4f54adcc153b54fe7d982fbdd6 (diff) | |
| parent | e8f49306f07e0199af378bf9f223830e5fc63b64 (diff) | |
Merge "Add some synchronous input trace points."
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 74 |
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); } } |