diff options
author | 2019-11-21 11:14:45 -0800 | |
---|---|---|
committer | 2020-01-29 13:59:26 -0800 | |
commit | 3cb3d4e3906eb43a01464e8862772295dab50f78 (patch) | |
tree | bcdf7a4b117cfa538d339c2d806c7e66178f6e1f /libs/gui/SurfaceComposerClient.cpp | |
parent | 68d6b2f5a5cd7c749203519fbfd3ae796875657a (diff) |
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
Diffstat (limited to 'libs/gui/SurfaceComposerClient.cpp')
-rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
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 <system/graphics.h> -#include <ui/DisplayInfo.h> - #include <gui/BufferItemConsumer.h> #include <gui/CpuConsumer.h> #include <gui/IGraphicBufferProducer.h> @@ -41,6 +39,7 @@ #include <gui/LayerState.h> #include <gui/Surface.h> #include <gui/SurfaceComposerClient.h> +#include <ui/DisplayConfig.h> #ifndef NO_INPUT #include <input/InputWindow.h> @@ -1623,15 +1622,23 @@ status_t SurfaceComposerClient::injectVSync(nsecs_t when) { return sf->injectVSync(when); } -status_t SurfaceComposerClient::getDisplayConfigs( - const sp<IBinder>& display, Vector<DisplayInfo>* configs) -{ +status_t SurfaceComposerClient::getDisplayState(const sp<IBinder>& display, + ui::DisplayState* state) { + return ComposerService::getComposerService()->getDisplayState(display, state); +} + +status_t SurfaceComposerClient::getDisplayInfo(const sp<IBinder>& display, DisplayInfo* info) { + return ComposerService::getComposerService()->getDisplayInfo(display, info); +} + +status_t SurfaceComposerClient::getDisplayConfigs(const sp<IBinder>& display, + Vector<DisplayConfig>* configs) { return ComposerService::getComposerService()->getDisplayConfigs(display, configs); } -status_t SurfaceComposerClient::getDisplayInfo(const sp<IBinder>& display, - DisplayInfo* info) { - Vector<DisplayInfo> configs; +status_t SurfaceComposerClient::getActiveDisplayConfig(const sp<IBinder>& display, + DisplayConfig* config) { + Vector<DisplayConfig> configs; status_t result = getDisplayConfigs(display, &configs); if (result != NO_ERROR) { return result; @@ -1643,7 +1650,7 @@ status_t SurfaceComposerClient::getDisplayInfo(const sp<IBinder>& display, return NAME_NOT_FOUND; } - *info = configs[static_cast<size_t>(activeId)]; + *config = configs[static_cast<size_t>(activeId)]; return NO_ERROR; } |