summaryrefslogtreecommitdiff
path: root/libs/gui/SurfaceComposerClient.cpp
diff options
context:
space:
mode:
author Dan Stoza <stoza@google.com> 2014-05-02 15:26:25 -0700
committer Dan Stoza <stoza@google.com> 2014-05-05 16:45:26 -0700
commit7f7da32569f8e0b3d383a40b95f8ac1d55afd801 (patch)
tree447e2fe85342ab3be8df946d40e4574905104df7 /libs/gui/SurfaceComposerClient.cpp
parent39c5e9f87670a8bc543a716ac994c8c85ac94cd5 (diff)
Enable changing display configuration
This allows querying and switching display device configurations through the ISurfaceComposer/SurfaceComposerClient interface. Bug: 14320401 Change-Id: I8c22165698950e5da32204c1c4da92122f91a715
Diffstat (limited to 'libs/gui/SurfaceComposerClient.cpp')
-rw-r--r--libs/gui/SurfaceComposerClient.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index b7af4152c2..1dffdb2013 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -623,10 +623,36 @@ void SurfaceComposerClient::setDisplayProjection(const sp<IBinder>& token,
// ----------------------------------------------------------------------------
-status_t SurfaceComposerClient::getDisplayInfo(
- const sp<IBinder>& display, DisplayInfo* info)
+status_t SurfaceComposerClient::getDisplayConfigs(
+ const sp<IBinder>& display, Vector<DisplayInfo>* configs)
{
- return ComposerService::getComposerService()->getDisplayInfo(display, info);
+ return ComposerService::getComposerService()->getDisplayConfigs(display, configs);
+}
+
+status_t SurfaceComposerClient::getDisplayInfo(const sp<IBinder>& display,
+ DisplayInfo* info) {
+ Vector<DisplayInfo> configs;
+ status_t result = getDisplayConfigs(display, &configs);
+ if (result != NO_ERROR) {
+ return result;
+ }
+
+ int activeId = getActiveConfig(display);
+ if (activeId < 0) {
+ ALOGE("No active configuration found");
+ return NAME_NOT_FOUND;
+ }
+
+ *info = configs[activeId];
+ return NO_ERROR;
+}
+
+int SurfaceComposerClient::getActiveConfig(const sp<IBinder>& display) {
+ return ComposerService::getComposerService()->getActiveConfig(display);
+}
+
+status_t SurfaceComposerClient::setActiveConfig(const sp<IBinder>& display, int id) {
+ return ComposerService::getComposerService()->setActiveConfig(display, id);
}
void SurfaceComposerClient::blankDisplay(const sp<IBinder>& token) {