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

Commit ce9a8d82 authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Android (Google) Code Review
Browse files

Merge "Added check for forceClientComposition for every layer."

parents 36a20360 c9232edd
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -613,14 +613,6 @@ void BufferLayer::setPerFrameData(const sp<const DisplayDevice>& displayDevice)
        return;
    }

    // Client layers
    if (hwcInfo.forceClientComposition ||
        (mActiveBuffer != nullptr && mActiveBuffer->handle == nullptr)) {
        ALOGV("[%s] Requesting Client composition", mName.string());
        setCompositionType(hwcId, HWC2::Composition::Client);
        return;
    }

    // Device or Cursor layers
    if (mPotentialCursor) {
        ALOGV("[%s] Requesting Cursor composition", mName.string());
+9 −0
Original line number Diff line number Diff line
@@ -621,6 +621,15 @@ void Layer::forceClientComposition(int32_t hwcId) {
    mHwcLayers[hwcId].forceClientComposition = true;
}

bool Layer::getForceClientComposition(int32_t hwcId) {
    if (mHwcLayers.count(hwcId) == 0) {
        ALOGE("getForceClientComposition: no HWC layer found (%d)", hwcId);
        return false;
    }

    return mHwcLayers[hwcId].forceClientComposition;
}

void Layer::updateCursorPosition(const sp<const DisplayDevice>& displayDevice) {
    auto hwcId = displayDevice->getHwcDisplayId();
    if (mHwcLayers.count(hwcId) == 0 || getCompositionType(hwcId) != HWC2::Composition::Cursor) {
+1 −0
Original line number Diff line number Diff line
@@ -299,6 +299,7 @@ public:

    void setGeometry(const sp<const DisplayDevice>& displayDevice, uint32_t z);
    void forceClientComposition(int32_t hwcId);
    bool getForceClientComposition(int32_t hwcId);
    virtual void setPerFrameData(const sp<const DisplayDevice>& displayDevice) = 0;

    // callIntoHwc exists so we can update our local state and call
+6 −0
Original line number Diff line number Diff line
@@ -1956,6 +1956,12 @@ void SurfaceFlinger::setUpHWComposer() {
                    "display %zd: %d", displayId, result);
        }
        for (auto& layer : displayDevice->getVisibleLayersSortedByZ()) {
            if (layer->getForceClientComposition(hwcId)) {
                ALOGV("[%s] Requesting Client composition", layer->getName().string());
                layer->setCompositionType(hwcId, HWC2::Composition::Client);
                continue;
            }

            layer->setPerFrameData(displayDevice);
        }