Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6d6448f authored by Chia-I Wu's avatar Chia-I Wu Committed by Android (Google) Code Review
Browse files

Merge "libui: update for IAllocator changes"

parents d0246c80 b018bf0e
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ using hardware::graphics::allocator::V2_0::ConsumerUsage;
using hardware::graphics::allocator::V2_0::BufferDescriptor;
using hardware::graphics::allocator::V2_0::Buffer;
using hardware::graphics::allocator::V2_0::IAllocator;
using hardware::graphics::allocator::V2_0::IAllocatorClient;
using hardware::graphics::common::V1_0::PixelFormat;

// Allocator is a wrapper to IAllocator, a proxy to server-side allocator.
@@ -40,12 +41,12 @@ public:
    Allocator();

    // this will be removed and Allocator will be always valid
    bool valid() const { return (mService != nullptr); }
    bool valid() const { return (mAllocator != nullptr); }

    std::string dumpDebugInfo() const;

    Error createBufferDescriptor(
            const IAllocator::BufferDescriptorInfo& descriptorInfo,
            const IAllocatorClient::BufferDescriptorInfo& descriptorInfo,
            BufferDescriptor& descriptor) const;
    void destroyBufferDescriptor(BufferDescriptor descriptor) const;

@@ -56,7 +57,8 @@ public:
            native_handle_t*& bufferHandle) const;

private:
    sp<IAllocator> mService;
    sp<IAllocator> mAllocator;
    sp<IAllocatorClient> mClient;
};

} // namespace Gralloc2
+19 −8
Original line number Diff line number Diff line
@@ -28,14 +28,25 @@ constexpr Error kDefaultError = Error::NO_RESOURCES;

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 @@ std::string Allocator::dumpDebugInfo() const
}

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 @@ Error Allocator::createBufferDescriptor(

void Allocator::destroyBufferDescriptor(BufferDescriptor descriptor) const
{
    mService->destroyDescriptor(descriptor);
    mClient->destroyDescriptor(descriptor);
}

Error Allocator::allocate(BufferDescriptor descriptor, Buffer& buffer) const
@@ -71,7 +82,7 @@ Error Allocator::allocate(BufferDescriptor descriptor, Buffer& buffer) const
    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 @@ Error Allocator::allocate(BufferDescriptor descriptor, Buffer& buffer) const

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) {
+1 −1
Original line number Diff line number Diff line
@@ -106,7 +106,7 @@ public:
            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);