diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-02-28 03:12:18 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-02-28 03:12:18 +0000 |
commit | b6040af4e59337c663840ed530e0af1dc608b760 (patch) | |
tree | 4b35c5e3e86f62a5ad20d38478d7ac8f23e8634c /libs | |
parent | cc26306fba7381bee3503e634953edbbfec1c2e6 (diff) | |
parent | d9b3ea613a021c7b393db967298fc8fa2fef7300 (diff) | |
download | android_frameworks_native-b6040af4e59337c663840ed530e0af1dc608b760.tar.gz android_frameworks_native-b6040af4e59337c663840ed530e0af1dc608b760.tar.bz2 android_frameworks_native-b6040af4e59337c663840ed530e0af1dc608b760.zip |
Merge "SurfaceFlinger: add getAllowedDisplayConfigs"
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gui/ISurfaceComposer.cpp | 36 | ||||
-rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 6 | ||||
-rw-r--r-- | libs/gui/include/gui/ISurfaceComposer.h | 9 | ||||
-rw-r--r-- | libs/gui/include/gui/SurfaceComposerClient.h | 6 | ||||
-rw-r--r-- | libs/gui/tests/Surface_test.cpp | 4 |
5 files changed, 61 insertions, 0 deletions
diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index d2f2539e8..b9c601edd 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -833,6 +833,33 @@ public: } return reply.readInt32(); } + + virtual status_t getAllowedDisplayConfigs(const sp<IBinder>& displayToken, + std::vector<int32_t>* outAllowedConfigs) { + if (!outAllowedConfigs) return BAD_VALUE; + Parcel data, reply; + status_t result = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); + if (result != NO_ERROR) { + ALOGE("getAllowedDisplayConfigs failed to writeInterfaceToken: %d", result); + return result; + } + result = data.writeStrongBinder(displayToken); + if (result != NO_ERROR) { + ALOGE("getAllowedDisplayConfigs failed to writeStrongBinder: %d", result); + return result; + } + result = remote()->transact(BnSurfaceComposer::GET_ALLOWED_DISPLAY_CONFIGS, data, &reply); + if (result != NO_ERROR) { + ALOGE("getAllowedDisplayConfigs failed to transact: %d", result); + return result; + } + result = reply.readInt32Vector(outAllowedConfigs); + if (result != NO_ERROR) { + ALOGE("getAllowedDisplayConfigs failed to readInt32Vector: %d", result); + return result; + } + return reply.readInt32(); + } }; // Out-of-line virtual method definition to trigger vtable emission in this @@ -1354,6 +1381,15 @@ status_t BnSurfaceComposer::onTransact( reply->writeInt32(result); return result; } + case GET_ALLOWED_DISPLAY_CONFIGS: { + CHECK_INTERFACE(ISurfaceComposer, data, reply); + sp<IBinder> displayToken = data.readStrongBinder(); + std::vector<int32_t> allowedConfigs; + status_t result = getAllowedDisplayConfigs(displayToken, &allowedConfigs); + reply->writeInt32Vector(allowedConfigs); + reply->writeInt32(result); + return result; + } default: { return BBinder::onTransact(code, data, reply, flags); } diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index d583e6db9..7a39222f9 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -1388,6 +1388,12 @@ status_t SurfaceComposerClient::setAllowedDisplayConfigs( allowedConfigs); } +status_t SurfaceComposerClient::getAllowedDisplayConfigs(const sp<IBinder>& displayToken, + std::vector<int32_t>* outAllowedConfigs) { + return ComposerService::getComposerService()->getAllowedDisplayConfigs(displayToken, + outAllowedConfigs); +} + status_t SurfaceComposerClient::getDisplayColorModes(const sp<IBinder>& display, Vector<ColorMode>* outColorModes) { return ComposerService::getComposerService()->getDisplayColorModes(display, outColorModes); diff --git a/libs/gui/include/gui/ISurfaceComposer.h b/libs/gui/include/gui/ISurfaceComposer.h index eedd5f583..0e576ca95 100644 --- a/libs/gui/include/gui/ISurfaceComposer.h +++ b/libs/gui/include/gui/ISurfaceComposer.h @@ -368,6 +368,14 @@ public: */ virtual status_t setAllowedDisplayConfigs(const sp<IBinder>& displayToken, const std::vector<int32_t>& allowedConfigs) = 0; + + /* + * Returns the allowed display configurations currently set. + * The allowedConfigs in a vector of indexes corresponding to the configurations + * returned from getDisplayConfigs(). + */ + virtual status_t getAllowedDisplayConfigs(const sp<IBinder>& displayToken, + std::vector<int32_t>* outAllowedConfigs) = 0; }; // ---------------------------------------------------------------------------- @@ -416,6 +424,7 @@ public: ADD_REGION_SAMPLING_LISTENER, REMOVE_REGION_SAMPLING_LISTENER, SET_ALLOWED_DISPLAY_CONFIGS, + GET_ALLOWED_DISPLAY_CONFIGS, // Always append new enum to the end. }; diff --git a/libs/gui/include/gui/SurfaceComposerClient.h b/libs/gui/include/gui/SurfaceComposerClient.h index 4621a3478..e0623399b 100644 --- a/libs/gui/include/gui/SurfaceComposerClient.h +++ b/libs/gui/include/gui/SurfaceComposerClient.h @@ -117,6 +117,12 @@ public: static status_t setAllowedDisplayConfigs(const sp<IBinder>& displayToken, const std::vector<int32_t>& allowedConfigs); + // Returns the allowed display configurations currently set. + // The allowedConfigs in a vector of indexes corresponding to the configurations + // returned from getDisplayConfigs(). + static status_t getAllowedDisplayConfigs(const sp<IBinder>& displayToken, + std::vector<int32_t>* outAllowedConfigs); + // Gets the list of supported color modes for the given display static status_t getDisplayColorModes(const sp<IBinder>& display, Vector<ui::ColorMode>* outColorModes); diff --git a/libs/gui/tests/Surface_test.cpp b/libs/gui/tests/Surface_test.cpp index 7f1dc84b1..a7599e078 100644 --- a/libs/gui/tests/Surface_test.cpp +++ b/libs/gui/tests/Surface_test.cpp @@ -683,6 +683,10 @@ public: const std::vector<int32_t>& /*allowedConfigs*/) override { return NO_ERROR; } + status_t getAllowedDisplayConfigs(const sp<IBinder>& /*displayToken*/, + std::vector<int32_t>* /*outAllowedConfigs*/) override { + return NO_ERROR; + } protected: IBinder* onAsBinder() override { return nullptr; } |