SurfaceFlinger: fix color transfer test
Add support for color management in
LayerTransactionTest.SetColorTransformBasic.
If color management is enabled, some considerations are needed
for the expected color output.
Test: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test
Change-Id: I7be7d561e7683fd57db0519932c4c308a6350c0d
diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp
index cf9d4c5..cc0a307 100644
--- a/libs/gui/ISurfaceComposer.cpp
+++ b/libs/gui/ISurfaceComposer.cpp
@@ -583,6 +583,21 @@
}
return error;
}
+
+ virtual bool isColorManagementUsed() const {
+ Parcel data, reply;
+ data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
+ remote()->transact(BnSurfaceComposer::IS_COLOR_MANAGEMET_USED, data, &reply);
+ int32_t result = 0;
+ status_t err = reply.readInt32(&result);
+ if (err != NO_ERROR) {
+ ALOGE("ISurfaceComposer::isColorManagementUsed: error "
+ "retrieving result: %s (%d)",
+ strerror(-err), -err);
+ return false;
+ }
+ return result != 0;
+ }
};
// Out-of-line virtual method definition to trigger vtable emission in this
@@ -920,6 +935,12 @@
}
return NO_ERROR;
}
+ case IS_COLOR_MANAGEMET_USED: {
+ CHECK_INTERFACE(ISurfaceComposer, data, reply);
+ int32_t result = isColorManagementUsed() ? 1 : 0;
+ reply->writeInt32(result);
+ return NO_ERROR;
+ }
default: {
return BBinder::onTransact(code, data, reply, flags);
}