diff options
| author | 2023-07-12 13:47:28 -0500 | |
|---|---|---|
| committer | 2023-08-30 20:01:49 +0000 | |
| commit | 44dbe38a1561716159acad023667a7d84a50a0cc (patch) | |
| tree | 789e092aa22e8ec91e4df2fcca6dd6f81151e0e3 /libs/gui/BLASTBufferQueue.cpp | |
| parent | 66b2479dc0325705215f401ae2bdb4e8a8c2c2e4 (diff) | |
Improve updateInputFlinger performance
This change improves the performance of the WindowInfosListenerInvoker work done on SurfaceFlinger's background executor thread. The primary optimization made is not sending a WindowInfosReportedListener with every call to WindowInfosListener.onWindowInfosChanged. Instead, we send a new interface, WindowInfosPublisher, and a unique listener id to listeners when they're added. Listeners call WindowInfosPublisher.ackWindowInfosReceived with their id after processing each update.
From traces taken during development, the new code is a major improvement, taking about 15% of the time spent previously on SurfaceFlinger's background thread for sending window infos. Performance with this change seems roughly in line with the performance in T.
Bug: 290377931
Test: atest WindowInfosListenerTest
Test: atest WindowInfosListenerInvokerTest
Test: manually killing system server and checking valid state on restart
Change-Id: Ib39ba935727df0bc1ab4030bcfe8301de7e64805
(cherry picked from commit acd2258a5492a9e289fd7f4b8ea90543d6843a23)
(cherry picked from commit e8a7ab25b2f2f17571279a2c2bf2ea0dff66c8e6)
Merged-In: Ib39ba935727df0bc1ab4030bcfe8301de7e64805
Diffstat (limited to 'libs/gui/BLASTBufferQueue.cpp')
0 files changed, 0 insertions, 0 deletions