From 3cb3d4e3906eb43a01464e8862772295dab50f78 Mon Sep 17 00:00:00 2001 From: Dominik Laskowski Date: Thu, 21 Nov 2019 11:14:45 -0800 Subject: SF: Redesign API to query display information The DisplayInfo list returned by ISurfaceComposer for display configs contains display information/state redundant across configs. Extract config information to DisplayConfig, and repurpose DisplayInfo for immutable information about a physical display. In a future CL, SF will populate DisplayInfo with additional data (e.g. connection type, EDID fields) on initial connection. DisplayConfigs retain the ability to reload on subsequent connections. Introduce ui::DisplayState for transactional state applicable to both physical and virtual displays. Bug: 144601064 Test: dumpsys display Change-Id: I72003e8ef71483ef483d0de85d28b859a6c9f5fc --- libs/gui/SurfaceComposerClient.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'libs/gui/SurfaceComposerClient.cpp') diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 63dc33376d..43bccf6c04 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -31,8 +31,6 @@ #include -#include - #include #include #include @@ -41,6 +39,7 @@ #include #include #include +#include #ifndef NO_INPUT #include @@ -1623,15 +1622,23 @@ status_t SurfaceComposerClient::injectVSync(nsecs_t when) { return sf->injectVSync(when); } -status_t SurfaceComposerClient::getDisplayConfigs( - const sp& display, Vector* configs) -{ +status_t SurfaceComposerClient::getDisplayState(const sp& display, + ui::DisplayState* state) { + return ComposerService::getComposerService()->getDisplayState(display, state); +} + +status_t SurfaceComposerClient::getDisplayInfo(const sp& display, DisplayInfo* info) { + return ComposerService::getComposerService()->getDisplayInfo(display, info); +} + +status_t SurfaceComposerClient::getDisplayConfigs(const sp& display, + Vector* configs) { return ComposerService::getComposerService()->getDisplayConfigs(display, configs); } -status_t SurfaceComposerClient::getDisplayInfo(const sp& display, - DisplayInfo* info) { - Vector configs; +status_t SurfaceComposerClient::getActiveDisplayConfig(const sp& display, + DisplayConfig* config) { + Vector configs; status_t result = getDisplayConfigs(display, &configs); if (result != NO_ERROR) { return result; @@ -1643,7 +1650,7 @@ status_t SurfaceComposerClient::getDisplayInfo(const sp& display, return NAME_NOT_FOUND; } - *info = configs[static_cast(activeId)]; + *config = configs[static_cast(activeId)]; return NO_ERROR; } -- cgit v1.2.3-59-g8ed1b