summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vishnu Nair <vishnun@google.com> 2023-07-18 00:45:45 +0000
committer Vishnu Nair <vishnun@google.com> 2023-07-18 00:45:45 +0000
commitd2bfbb3276003e6a5d8eb4dddab633eff4d4e346 (patch)
tree5a2c68578d31d94be8db70e64c8ebab7a7dd9eee
parent86e34535acfc71cff6381f21be4ce0c31f76963b (diff)
[sf] Trigger input updates in post composition
Move input updates off the hotpath. This doesn't affect input latency. We are updating the data input uses for hit testing after the composition hotpath. The data is pushed via an async call. If the caller wants to ensure the data is observable in inputflinger, they can add a window info reported listener. Bug: 256882630 Test: presubmit Test: perfetto traces Change-Id: If35b02d5754dd71c73a4ae23e318e3e8b0ada83b
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 648409c40c..a9a1d80830 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -2523,7 +2523,9 @@ bool SurfaceFlinger::commit(const scheduler::FrameTarget& pacesetterFrameTarget)
}
updateCursorAsync();
- updateInputFlinger(vsyncId, pacesetterFrameTarget.frameBeginTime());
+ if (!mustComposite) {
+ updateInputFlinger(vsyncId, pacesetterFrameTarget.frameBeginTime());
+ }
if (mLayerTracingEnabled && !mLayerTracing.flagIsSet(LayerTracing::TRACE_COMPOSITION)) {
// This will block and tracing should only be enabled for debugging.
@@ -2718,6 +2720,8 @@ CompositeResult SurfaceFlinger::composite(scheduler::FrameTargeter& pacesetterFr
addToLayerTracing(mVisibleRegionsDirty, pacesetterFrameTarget.frameBeginTime(), vsyncId);
}
+ updateInputFlinger(vsyncId, pacesetterFrameTarget.frameBeginTime());
+
if (mVisibleRegionsDirty) mHdrLayerInfoChanged = true;
mVisibleRegionsDirty = false;