diff options
| author | 2023-07-18 00:45:45 +0000 | |
|---|---|---|
| committer | 2023-07-18 00:45:45 +0000 | |
| commit | d2bfbb3276003e6a5d8eb4dddab633eff4d4e346 (patch) | |
| tree | 5a2c68578d31d94be8db70e64c8ebab7a7dd9eee | |
| parent | 86e34535acfc71cff6381f21be4ce0c31f76963b (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.cpp | 6 |
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; |