summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Valerie Hau <vhau@google.com> 2019-08-27 15:32:01 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-08-27 15:32:01 +0000
commit79a1f8e7028c94b16d9de07b7898d933da4a156c (patch)
treed6f8b43207f77300e30da970e069ccfbfc44a2ab
parent09e517c5617182d6940be486d29510df9bfa26e9 (diff)
parent5e18c43fa7cd0084202a6f092f8a30e826ad9ae1 (diff)
Merge "Do not crash on invalid dataspace"
-rw-r--r--native/android/surface_control.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp
index 8fe4fecceeb5..53c01226ca1a 100644
--- a/native/android/surface_control.cpp
+++ b/native/android/surface_control.cpp
@@ -100,7 +100,11 @@ static bool isDataSpaceValid(const sp<SurfaceControl>& surfaceControl, ADataSpac
return getWideColorSupport(surfaceControl);
// These data space need HDR support.
case HAL_DATASPACE_BT2020_PQ:
- return getHdrSupport(surfaceControl);
+ if (!getHdrSupport(surfaceControl)) {
+ ALOGE("Invalid dataspace - device does not support hdr");
+ return false;
+ }
+ return true;
default:
return false;
}
@@ -458,10 +462,11 @@ void ASurfaceTransaction_setBufferDataSpace(ASurfaceTransaction* aSurfaceTransac
CHECK_NOT_NULL(aSurfaceControl);
sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
- LOG_ALWAYS_FATAL_IF(!isDataSpaceValid(surfaceControl, aDataSpace), "invalid dataspace");
-
+ if (!isDataSpaceValid(surfaceControl, aDataSpace)) {
+ ALOGE("Failed to set buffer dataspace - invalid dataspace");
+ return;
+ }
Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
-
transaction->setDataspace(surfaceControl, static_cast<ui::Dataspace>(aDataSpace));
}
@@ -527,7 +532,10 @@ void ASurfaceTransaction_setColor(ASurfaceTransaction* aSurfaceTransaction,
CHECK_NOT_NULL(aSurfaceControl);
sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl);
- LOG_ALWAYS_FATAL_IF(!isDataSpaceValid(surfaceControl, dataspace), "invalid dataspace");
+ if (!isDataSpaceValid(surfaceControl, dataspace)) {
+ ALOGE("Failed to set buffer dataspace - invalid dataspace");
+ return;
+ }
Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction);
half3 color;