From 60c9d3e85322e67684f8deb32828a185b17aa167 Mon Sep 17 00:00:00 2001 From: chaviw Date: Fri, 4 Jun 2021 12:52:17 -0500 Subject: Added IWindowInfosChangedListener interface Added WindowInfosChangedListener interface and the ability to register a WindowInfosChangedListener in SCC. Also added the SurfaceFlinger code where the WindowInfosChangedListener gets registered and reports to the listeners. Test: Existing tests pass Bug: 188792659 Change-Id: If7b93df0afd71a88ea703d2113e68bfb549368af --- libs/gui/SurfaceComposerClient.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'libs/gui/SurfaceComposerClient.cpp') diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index c52c644eb7..8547739420 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -54,6 +55,7 @@ namespace android { using gui::FocusRequest; using gui::WindowInfo; using gui::WindowInfoHandle; +using gui::WindowInfosListener; using ui::ColorMode; // --------------------------------------------------------------------------- @@ -95,6 +97,7 @@ bool ComposerService::connectLocked() { if (instance.mComposerService == nullptr) { if (ComposerService::getInstance().connectLocked()) { ALOGD("ComposerService reconnected"); + WindowInfosListenerReporter::getInstance()->reconnect(instance.mComposerService); } } return instance.mComposerService; @@ -1768,15 +1771,10 @@ void SurfaceComposerClient::Transaction::setDisplaySize(const sp& token // --------------------------------------------------------------------------- -SurfaceComposerClient::SurfaceComposerClient() - : mStatus(NO_INIT) -{ -} +SurfaceComposerClient::SurfaceComposerClient() : mStatus(NO_INIT) {} SurfaceComposerClient::SurfaceComposerClient(const sp& client) - : mStatus(NO_ERROR), mClient(client) -{ -} + : mStatus(NO_ERROR), mClient(client) {} void SurfaceComposerClient::onFirstRef() { sp sf(ComposerService::getComposerService()); @@ -2142,6 +2140,18 @@ int SurfaceComposerClient::getGPUContextPriority() { return ComposerService::getComposerService()->getGPUContextPriority(); } +status_t SurfaceComposerClient::addWindowInfosListener( + const sp& windowInfosListener) { + return WindowInfosListenerReporter::getInstance() + ->addWindowInfosListener(windowInfosListener, ComposerService::getComposerService()); +} + +status_t SurfaceComposerClient::removeWindowInfosListener( + const sp& windowInfosListener) { + return WindowInfosListenerReporter::getInstance() + ->removeWindowInfosListener(windowInfosListener, ComposerService::getComposerService()); +} + // ---------------------------------------------------------------------------- status_t ScreenshotClient::captureDisplay(const DisplayCaptureArgs& captureArgs, -- cgit v1.2.3-59-g8ed1b