libui: update for IAllocator changes
Create an IAllocatorClient to allocate/free graphics buffers.
Test: builds and boots
Change-Id: I9978b61ee2cb6302cce34ed6d740a5616fb7e8f1
diff --git a/libs/ui/GrallocAllocator.cpp b/libs/ui/GrallocAllocator.cpp
index 2eb1988..021122a 100644
--- a/libs/ui/GrallocAllocator.cpp
+++ b/libs/ui/GrallocAllocator.cpp
@@ -28,14 +28,25 @@
Allocator::Allocator()
{
- mService = IAllocator::getService("gralloc");
+ mAllocator = IAllocator::getService("gralloc");
+ if (mAllocator != nullptr) {
+ mAllocator->createClient(
+ [&](const auto& tmpError, const auto& tmpClient) {
+ if (tmpError == Error::NONE) {
+ mClient = tmpClient;
+ }
+ });
+ if (mClient == nullptr) {
+ mAllocator.clear();
+ }
+ }
}
std::string Allocator::dumpDebugInfo() const
{
std::string info;
- mService->dumpDebugInfo([&](const auto& tmpInfo) {
+ mAllocator->dumpDebugInfo([&](const auto& tmpInfo) {
info = tmpInfo.c_str();
});
@@ -43,11 +54,11 @@
}
Error Allocator::createBufferDescriptor(
- const IAllocator::BufferDescriptorInfo& descriptorInfo,
+ const IAllocatorClient::BufferDescriptorInfo& descriptorInfo,
BufferDescriptor& descriptor) const
{
Error error = kDefaultError;
- mService->createDescriptor(descriptorInfo,
+ mClient->createDescriptor(descriptorInfo,
[&](const auto& tmpError, const auto& tmpDescriptor) {
error = tmpError;
if (error != Error::NONE) {
@@ -62,7 +73,7 @@
void Allocator::destroyBufferDescriptor(BufferDescriptor descriptor) const
{
- mService->destroyDescriptor(descriptor);
+ mClient->destroyDescriptor(descriptor);
}
Error Allocator::allocate(BufferDescriptor descriptor, Buffer& buffer) const
@@ -71,7 +82,7 @@
descriptors.setToExternal(&descriptor, 1);
Error error = kDefaultError;
- auto status = mService->allocate(descriptors,
+ auto status = mClient->allocate(descriptors,
[&](const auto& tmpError, const auto& tmpBuffers) {
error = tmpError;
if (tmpError != Error::NONE) {
@@ -86,14 +97,14 @@
void Allocator::free(Buffer buffer) const
{
- mService->free(buffer);
+ mClient->free(buffer);
}
Error Allocator::exportHandle(BufferDescriptor descriptor, Buffer buffer,
native_handle_t*& bufferHandle) const
{
Error error = kDefaultError;
- auto status = mService->exportHandle(descriptor, buffer,
+ auto status = mClient->exportHandle(descriptor, buffer,
[&](const auto& tmpError, const auto& tmpBufferHandle) {
error = tmpError;
if (tmpError != Error::NONE) {
diff --git a/libs/ui/GraphicBufferAllocator.cpp b/libs/ui/GraphicBufferAllocator.cpp
index e333bc1..d258586 100644
--- a/libs/ui/GraphicBufferAllocator.cpp
+++ b/libs/ui/GraphicBufferAllocator.cpp
@@ -106,7 +106,7 @@
PixelFormat format, uint32_t layerCount, uint32_t usage)
: mAllocator(allocator), mBufferValid(false)
{
- Gralloc2::IAllocator::BufferDescriptorInfo info = {};
+ Gralloc2::IAllocatorClient::BufferDescriptorInfo info = {};
info.width = width;
info.height = height;
info.format = static_cast<Gralloc2::PixelFormat>(format);