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

Commit d4797c2f authored by Dan Stoza's avatar Dan Stoza Committed by Android (Google) Code Review
Browse files

Merge "HWC2: Check SidebandStream capability on load" into nyc-dev

parents 0659765e 09e7a27f
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@

#include <android/configuration.h>

#include <algorithm>
#include <inttypes.h>

extern "C" {
@@ -303,6 +304,12 @@ void Device::loadCapabilities()
    mHwcDevice->getCapabilities(mHwcDevice, &numCapabilities, asInt);
}

bool Device::hasCapability(HWC2::Capability capability) const
{
    return std::find(mCapabilities.cbegin(), mCapabilities.cend(),
            capability) != mCapabilities.cend();
}

void Device::loadFunctionPointers()
{
    // For all of these early returns, we log an error message inside
@@ -378,8 +385,10 @@ void Device::loadFunctionPointers()
            mSetLayerDisplayFrame)) return;
    if (!loadFunctionPointer(FunctionDescriptor::SetLayerPlaneAlpha,
            mSetLayerPlaneAlpha)) return;
    if (hasCapability(Capability::SidebandStream)) {
        if (!loadFunctionPointer(FunctionDescriptor::SetLayerSidebandStream,
                mSetLayerSidebandStream)) return;
    }
    if (!loadFunctionPointer(FunctionDescriptor::SetLayerSourceCrop,
            mSetLayerSourceCrop)) return;
    if (!loadFunctionPointer(FunctionDescriptor::SetLayerTransform,
@@ -973,6 +982,11 @@ Error Layer::setPlaneAlpha(float alpha)

Error Layer::setSidebandStream(const native_handle_t* stream)
{
    if (!mDevice.hasCapability(Capability::SidebandStream)) {
        ALOGE("Attempted to call setSidebandStream without checking that the "
                "device supports sideband streams");
        return Error::Unsupported;
    }
    int32_t intError = mDevice.mSetLayerSidebandStream(mDevice.mHwcDevice,
            mDisplayId, mId, stream);
    return static_cast<Error>(intError);
+2 −0
Original line number Diff line number Diff line
@@ -89,6 +89,8 @@ public:
    // as connected
    std::shared_ptr<Display> getDisplayById(hwc2_display_t id);

    bool hasCapability(HWC2::Capability capability) const;

private:
    // Initialization methods