SF: use aidl Capability
Bug: 198190384
Test: SF unit tests
Change-Id: I73fe0cc15dabdd4703de068a9cebd878d76e39d7
diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
index 746ac64..25f03be 100644
--- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
@@ -36,6 +36,7 @@
#include <algorithm>
#include <cinttypes>
+using aidl::android::hardware::graphics::composer3::Capability;
using aidl::android::hardware::graphics::composer3::DisplayCapability;
namespace android {
@@ -168,6 +169,20 @@
return unwrapRet(ret, kDefaultError);
}
+template <typename To, typename From>
+To translate(From x) {
+ return static_cast<To>(x);
+}
+
+template <typename To, typename From>
+std::vector<To> translate(const hidl_vec<From>& in) {
+ std::vector<To> out;
+ out.reserve(in.size());
+ std::transform(in.begin(), in.end(), std::back_inserter(out),
+ [](From x) { return translate<To>(x); });
+ return out;
+}
+
} // anonymous namespace
HidlComposer::HidlComposer(const std::string& serviceName) : mWriter(kWriterInitialSize) {
@@ -225,10 +240,11 @@
}
}
-std::vector<IComposer::Capability> HidlComposer::getCapabilities() {
- std::vector<IComposer::Capability> capabilities;
- mComposer->getCapabilities(
- [&](const auto& tmpCapabilities) { capabilities = tmpCapabilities; });
+std::vector<Capability> HidlComposer::getCapabilities() {
+ std::vector<Capability> capabilities;
+ mComposer->getCapabilities([&](const auto& tmpCapabilities) {
+ capabilities = translate<Capability>(tmpCapabilities);
+ });
return capabilities;
}
@@ -1101,15 +1117,6 @@
// Composer HAL 2.4
-namespace {
-template <typename T>
-void copyCapabilities(const T& tmpCaps, std::vector<DisplayCapability>* outCapabilities) {
- outCapabilities->resize(tmpCaps.size());
- std::transform(tmpCaps.begin(), tmpCaps.end(), outCapabilities->begin(),
- [](auto cap) { return static_cast<DisplayCapability>(cap); });
-}
-} // anonymous namespace
-
Error HidlComposer::getDisplayCapabilities(Display display,
std::vector<DisplayCapability>* outCapabilities) {
if (!mClient_2_3) {
@@ -1124,7 +1131,8 @@
if (error != V2_4::Error::NONE) {
return;
}
- copyCapabilities(tmpCaps, outCapabilities);
+ *outCapabilities =
+ translate<DisplayCapability>(tmpCaps);
});
} else {
mClient_2_3
@@ -1134,7 +1142,7 @@
return;
}
- copyCapabilities(tmpCaps, outCapabilities);
+ *outCapabilities = translate<DisplayCapability>(tmpCaps);
});
}