summaryrefslogtreecommitdiff
path: root/native/android/surface_control.cpp
diff options
context:
space:
mode:
authorScott Lobdell <slobdell@google.com>2019-02-19 10:33:50 -0800
committerScott Lobdell <slobdell@google.com>2019-02-19 11:36:09 -0800
commit81b587a542e8381268a9ba8e7461712ef23cd11f (patch)
treebace051dc4f3efad7dcd091ea0481167815bfaa7 /native/android/surface_control.cpp
parentbf4a1865530dd9a1e4b203d4e9d67fce0958c3fa (diff)
parent13327cc461d8f54550866bc404a99205f95ab92f (diff)
Merge QP1A.190212.003
Conflicts: core/java/android/view/SurfaceControl.java media/java/android/media/MediaCodecInfo.java packages/SettingsLib/res/values/strings.xml services/core/java/com/android/server/am/ActiveServices.java services/core/java/com/android/server/am/OomAdjuster.java services/core/java/com/android/server/audio/AudioDeviceInventory.java services/core/java/com/android/server/display/LocalDisplayAdapter.java services/core/java/com/android/server/wm/ActivityDisplay.java services/core/java/com/android/server/wm/DisplayPolicy.java Change-Id: Idc7582978996d2f7c44f599f221e8d7cc9eedf43
Diffstat (limited to 'native/android/surface_control.cpp')
-rw-r--r--native/android/surface_control.cpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp
index 416ef42d21a7..d07052bb3b3f 100644
--- a/native/android/surface_control.cpp
+++ b/native/android/surface_control.cpp
@@ -46,7 +46,13 @@ using Transaction = SurfaceComposerClient::Transaction;
static bool getWideColorSupport(const sp<SurfaceControl>& surfaceControl) {
sp<SurfaceComposerClient> client = surfaceControl->getClient();
- sp<IBinder> display(client->getBuiltInDisplay(ISurfaceComposer::eDisplayIdMain));
+
+ const sp<IBinder> display = client->getInternalDisplayToken();
+ if (display == nullptr) {
+ ALOGE("unable to get wide color support for disconnected internal display");
+ return false;
+ }
+
bool isWideColorDisplay = false;
status_t err = client->isWideColorDisplay(display, &isWideColorDisplay);
if (err) {
@@ -58,7 +64,12 @@ static bool getWideColorSupport(const sp<SurfaceControl>& surfaceControl) {
static bool getHdrSupport(const sp<SurfaceControl>& surfaceControl) {
sp<SurfaceComposerClient> client = surfaceControl->getClient();
- sp<IBinder> display(client->getBuiltInDisplay(ISurfaceComposer::eDisplayIdMain));
+
+ const sp<IBinder> display = client->getInternalDisplayToken();
+ if (display == nullptr) {
+ ALOGE("unable to get hdr capabilities for disconnected internal display");
+ return false;
+ }
HdrCapabilities hdrCapabilities;
status_t err = client->getHdrCapabilities(display, &hdrCapabilities);
@@ -429,6 +440,20 @@ void ASurfaceTransaction_setBufferAlpha(ASurfaceTransaction* aSurfaceTransaction
transaction->setAlpha(surfaceControl, alpha);
}
+void ASurfaceTransaction_setBufferDataSpace(ASurfaceTransaction* aSurfaceTransaction,
+ ASurfaceControl* aSurfaceControl,
+ ADataSpace aDataSpace) {
+ CHECK_NOT_NULL(aSurfaceTransaction);
+ CHECK_NOT_NULL(aSurfaceControl);
+
+ sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
+ LOG_ALWAYS_FATAL_IF(!isDataSpaceValid(surfaceControl, aDataSpace), "invalid dataspace");
+
+ Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
+
+ transaction->setDataspace(surfaceControl, static_cast<ui::Dataspace>(aDataSpace));
+}
+
void ASurfaceTransaction_setHdrMetadata_smpte2086(ASurfaceTransaction* aSurfaceTransaction,
ASurfaceControl* aSurfaceControl,
struct AHdrMetadata_smpte2086* metadata) {